diff options
Diffstat (limited to 'cd/include')
-rwxr-xr-x | cd/include/cd.h | 56 | ||||
-rwxr-xr-x | cd/include/cd_private.h | 24 | ||||
-rw-r--r-- | cd/include/cdcairo.h | 45 | ||||
-rw-r--r-- | cd/include/cdgl.h | 23 | ||||
-rwxr-xr-x | cd/include/cdlua.h | 1 | ||||
-rwxr-xr-x | cd/include/cdlua5_private.h | 3 | ||||
-rw-r--r-- | cd/include/cdluagl.h | 27 | ||||
-rwxr-xr-x | cd/include/cdpdf.h | 15 | ||||
-rwxr-xr-x | cd/include/cdps.h | 14 |
9 files changed, 164 insertions, 44 deletions
diff --git a/cd/include/cd.h b/cd/include/cd.h index ca38983..85b02c2 100755 --- a/cd/include/cd.h +++ b/cd/include/cd.h @@ -19,9 +19,9 @@ extern "C" { #define CD_NAME "CD - Canvas Draw" #define CD_DESCRIPTION "A 2D Graphics Library" #define CD_COPYRIGHT "Copyright (C) 1994-2010 Tecgraf, PUC-Rio." -#define CD_VERSION "5.3" /* bug fixes are reported only by cdVersion functions */ -#define CD_VERSION_NUMBER 503000 -#define CD_VERSION_DATE "2010/01/26" +#define CD_VERSION "5.4" /* bug fixes are reported only by cdVersion functions */ +#define CD_VERSION_NUMBER 504000 +#define CD_VERSION_DATE "2010/06/24" /* does not include bug fix releases */ typedef struct _cdContext cdContext; typedef struct _cdCanvas cdCanvas; @@ -113,10 +113,12 @@ int cdCanvasRegionCombineMode(cdCanvas* canvas, int mode); void cdCanvasPixel(cdCanvas* canvas, int x, int y, long color); void cdCanvasMark(cdCanvas* canvas, int x, int y); -void cdCanvasLine(cdCanvas* canvas, int x1, int y1, int x2, int y2); void cdCanvasBegin(cdCanvas* canvas, int mode); -void cdCanvasVertex(cdCanvas* canvas, int x, int y); +void cdCanvasPathSet(cdCanvas* canvas, int action); void cdCanvasEnd(cdCanvas* canvas); + +void cdCanvasLine(cdCanvas* canvas, int x1, int y1, int x2, int y2); +void cdCanvasVertex(cdCanvas* canvas, int x, int y); void cdCanvasRect(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); void cdCanvasBox(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax); void cdCanvasArc(cdCanvas* canvas, int xc, int yc, int w, int h, double angle1, double angle2); @@ -152,7 +154,7 @@ unsigned char* cdCanvasGetStipple(cdCanvas* canvas, int *n, int *m); void cdCanvasPattern(cdCanvas* canvas, int w, int h, long const int *pattern); long* cdCanvasGetPattern(cdCanvas* canvas, int* n, int* m); int cdCanvasFillMode(cdCanvas* canvas, int mode); -int cdCanvasFont(cdCanvas* canvas, const char* type_face, int style, int size); +int cdCanvasFont(cdCanvas* canvas, const char* type_face, int style, int size); void cdCanvasGetFont(cdCanvas* canvas, char *type_face, int *style, int *size); char* cdCanvasNativeFont(cdCanvas* canvas, const char* font); int cdCanvasTextAlignment(cdCanvas* canvas, int alignment); @@ -165,13 +167,13 @@ void cdCanvasVectorText(cdCanvas* canvas, int x, int y, const char* s); void cdCanvasMultiLineVectorText(cdCanvas* canvas, int x, int y, const char* s); /* vector text attributes */ -char *cdCanvasVectorFont(cdCanvas* canvas, const char *filename); -void cdCanvasVectorTextDirection(cdCanvas* canvas, int x1, int y1, int x2, int y2); +char* cdCanvasVectorFont(cdCanvas* canvas, const char *filename); +void cdCanvasVectorTextDirection(cdCanvas* canvas, int x1, int y1, int x2, int y2); double* cdCanvasVectorTextTransform(cdCanvas* canvas, const double* matrix); -void cdCanvasVectorTextSize(cdCanvas* canvas, int size_x, int size_y, const char* s); -int cdCanvasVectorCharSize(cdCanvas* canvas, int size); -void cdCanvasVectorFontSize(cdCanvas* canvas, double size_x, double size_y); -void cdCanvasGetVectorFontSize(cdCanvas* canvas, double *size_x, double *size_y); +void cdCanvasVectorTextSize(cdCanvas* canvas, int size_x, int size_y, const char* s); +int cdCanvasVectorCharSize(cdCanvas* canvas, int size); +void cdCanvasVectorFontSize(cdCanvas* canvas, double size_x, double size_y); +void cdCanvasGetVectorFontSize(cdCanvas* canvas, double *size_x, double *size_y); /* vector text properties */ void cdCanvasGetVectorTextSize(cdCanvas* canvas, const char* s, int *x, int *y); @@ -271,11 +273,25 @@ enum { /* polygon mode (begin...end) */ CD_CLOSED_LINES, CD_CLIP, CD_BEZIER, - CD_REGION + CD_REGION, + CD_PATH }; #define CD_POLYCUSTOM 10 +enum { /* path actions */ + CD_PATH_NEW, + CD_PATH_MOVETO, + CD_PATH_LINETO, + CD_PATH_ARC, + CD_PATH_CURVETO, + CD_PATH_CLOSE, + CD_PATH_FILL, + CD_PATH_STROKE, + CD_PATH_FILLSTROKE, + CD_PATH_CLIP +}; + enum { /* fill mode */ CD_EVENODD, CD_WINDING @@ -410,6 +426,8 @@ enum { /* some font sizes */ #define CD_CAP_PALETTE 0x08000000 #define CD_CAP_LINECAP 0x10000000 #define CD_CAP_LINEJOIN 0x20000000 +#define CD_CAP_PATH 0x40000000 +#define CD_CAP_BEZIER 0x80000000 #define CD_CAP_ALL 0xFFFFFFFF /* cdPlay definitions */ @@ -459,6 +477,18 @@ typedef int(*cdSizeCB)(cdCanvas *canvas, int w, int h, double w_mm, double h_mm) #define CD_RAD2DEG 57.295779513 /* radians to degrees (deg = CD_RAD2DEG * rad) */ #define CD_DEG2RAD 0.01745329252 /* degrees to radians (rad = CD_DEG2RAD * deg) */ +/* paper sizes */ +enum { + CD_A0, + CD_A1, + CD_A2, + CD_A3, + CD_A4, + CD_A5, + CD_LETTER, + CD_LEGAL +}; + #ifdef __cplusplus } diff --git a/cd/include/cd_private.h b/cd/include/cd_private.h index b9a3243..6138f60 100755 --- a/cd/include/cd_private.h +++ b/cd/include/cd_private.h @@ -215,9 +215,13 @@ struct _cdCanvas cdfPoint* fpoly; /* used during an real poligon creation, only if ->fPoly exists */ int use_fpoly; + /* last path */ + int path_n, /* current number of actions */ + path_size; /* allocated number of actions, only increases */ + int* path; /* used during path creation */ + /* simulation flags */ int sim_mode; - int sim_poly; /* WC */ double s, sx, tx, sy, ty; /* Transformacao Window -> Viewport (scale+translation)*/ @@ -264,15 +268,25 @@ enum{CD_CTX_NATIVEWINDOW, CD_CTX_IMAGE, CD_CTX_DBUFFER, CD_CTX_PRINTER, CD_CTX_E /* utilities */ /*************/ int cdRound(double x); -void cdCanvasGetEllipseBox(int xc, int yc, int w, int h, double a1, double a2, int *xmin, int *xmax, int *ymin, int *ymax); int cdCheckBoxSize(int *xmin, int *xmax, int *ymin, int *ymax); int cdfCheckBoxSize(double *xmin, double *xmax, double *ymin, double *ymax); void cdNormalizeLimits(int w, int h, int *xmin, int *xmax, int *ymin, int *ymax); int cdGetFileName(const char* strdata, char* filename); int cdStrEqualNoCase(const char* str1, const char* str2); +int cdStrEqualNoCasePartial(const char* str1, const char* str2); int cdStrLineCount(const char* str); char* cdStrDup(const char* str); char* cdStrDupN(const char* str, int len); +void cdSetPaperSize(int size, double *w_pt, double *h_pt); +int cdGetFontFileName(const char* font, char* filename); + +void cdCanvasPoly(cdCanvas* canvas, int mode, cdPoint* points, int n); +void cdCanvasGetArcBox(int xc, int yc, int w, int h, double a1, double a2, int *xmin, int *xmax, int *ymin, int *ymax); +int cdCanvasGetArcPathF(cdCanvas* canvas, const cdPoint* poly, double *xc, double *yc, double *w, double *h, double *a1, double *a2); +int cdfCanvasGetArcPath(cdCanvas* canvas, const cdfPoint* poly, double *xc, double *yc, double *w, double *h, double *a1, double *a2); +int cdCanvasGetArcPath(cdCanvas* canvas, const cdPoint* poly, int *xc, int *yc, int *w, int *h, double *a1, double *a2); +void cdCanvasGetArcStartEnd(int xc, int yc, int w, int h, double a1, double a2, int *x1, int *y1, int *x2, int *y2); +void cdfCanvasGetArcStartEnd(double xc, double yc, double w, double h, double a1, double a2, double *x1, double *y1, double *x2, double *y2); #define _cdCheckCanvas(_canvas) (_canvas!=NULL && ((unsigned char*)_canvas)[0] == 'C' && ((unsigned char*)_canvas)[1] == 'D') #define _cdInvertYAxis(_canvas, _y) (_canvas->h - (_y) - 1) @@ -288,6 +302,7 @@ void cdMatrixTransformPoint(double* matrix, int x, int y, int *rx, int *ry); void cdfMatrixTransformPoint(double* matrix, double x, double y, double *rx, double *ry); void cdMatrixMultiply(const double* matrix, double* mul_matrix); void cdMatrixInverse(const double* matrix, double* inv_matrix); +void cdfRotatePoint(cdCanvas* canvas, double x, double y, double cx, double cy, double *rx, double *ry, double sin_theta, double cos_theta); void cdRotatePoint(cdCanvas* canvas, int x, int y, int cx, int cy, int *rx, int *ry, double sin_teta, double cos_teta); void cdRotatePointY(cdCanvas* canvas, int x, int y, int cx, int cy, int *ry, double sin_theta, double cos_theta); void cdTextTranslatePoint(cdCanvas* canvas, int x, int y, int w, int h, int baseline, int *rx, int *ry); @@ -303,6 +318,11 @@ int cdParseXWinFont(const char *nativefont, char *type_face, int *style, int *si int cdGetFontSizePixels(cdCanvas* canvas, int size); int cdGetFontSizePoints(cdCanvas* canvas, int size); +/* Replacements for Font using estimation */ +/* cdfontex.c */ +void cdgetfontdimEX(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent); +void cdgettextsizeEX(cdCtxCanvas* ctxcanvas, const char *s, int len, int *width, int *height); + /****************/ /* For Images */ /****************/ diff --git a/cd/include/cdcairo.h b/cd/include/cdcairo.h new file mode 100644 index 0000000..81d54dc --- /dev/null +++ b/cd/include/cdcairo.h @@ -0,0 +1,45 @@ +/** \file + * \brief Cairo extra drivers. + * Rendering PDF, PS, SVG and IMAGERGB. + * + * See Copyright Notice in cd.h + */ + +#ifndef __CD_CAIRO_H +#define __CD_CAIRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Some of these context can be used directly or by cdInitContextPlus, + as CD_NATIVEWINDOW, CD_IMAGE, CD_EMF, CD_PRINTER and CD_DBUFFER. + The others only directly. +*/ + +cdContext* cdContextCairoNativeWindow(void); +cdContext* cdContextCairoImage(void); +cdContext* cdContextCairoDBuffer(void); +cdContext* cdContextCairoPrinter(void); +cdContext* cdContextCairoPS(void); +cdContext* cdContextCairoPDF(void); +cdContext* cdContextCairoSVG(void); +cdContext* cdContextCairoImageRGB(void); +cdContext* cdContextCairoEMF(void); + +#define CD_CAIRO_NATIVEWINDOW cdContextCairoNativeWindow() +#define CD_CAIRO_IMAGE cdContextCairoImage() +#define CD_CAIRO_DBUFFER cdContextCairoDBuffer() +#define CD_CAIRO_PRINTER cdContextCairoPrinter() +#define CD_CAIRO_PS cdContextCairoPS() +#define CD_CAIRO_PDF cdContextCairoPDF() +#define CD_CAIRO_SVG cdContextCairoSVG() +#define CD_CAIRO_IMAGERGB cdContextCairoImageRGB() +#define CD_CAIRO_EMF cdContextCairoEMF() + + +#ifdef __cplusplus +} +#endif + +#endif /* ifndef __CD_CAIRO_ */ diff --git a/cd/include/cdgl.h b/cd/include/cdgl.h new file mode 100644 index 0000000..946268a --- /dev/null +++ b/cd/include/cdgl.h @@ -0,0 +1,23 @@ +/** \file +* \brief OpenGL driver +* +* See Copyright Notice in cd.h +*/ + +#ifndef __CD_GL_H +#define __CD_GL_H + +#ifdef __cplusplus +extern "C" { +#endif + +cdContext* cdContextGL(void); + +#define CD_GL cdContextGL() + +#ifdef __cplusplus +} +#endif + +#endif /* ifndef __CD_GL_ */ + diff --git a/cd/include/cdlua.h b/cd/include/cdlua.h index 30d8174..a353dd8 100755 --- a/cd/include/cdlua.h +++ b/cd/include/cdlua.h @@ -29,6 +29,7 @@ int cdlua_close(lua_State *L); cdCanvas* cdlua_getcanvas(lua_State * L); /* pos=1, deprecated use cdlua_checkcanvas */ cdCanvas* cdlua_checkcanvas(lua_State * L, int pos); void cdlua_pushcanvas(lua_State * L, cdCanvas* canvas); + #endif #ifdef __cplusplus diff --git a/cd/include/cdlua5_private.h b/cd/include/cdlua5_private.h index 974fb4e..3051fb6 100755 --- a/cd/include/cdlua5_private.h +++ b/cd/include/cdlua5_private.h @@ -133,6 +133,9 @@ void cdlua_pushbitmap(lua_State* L, cdBitmap* bitmap); void cdlua_pushimagergb_ex(lua_State* L, unsigned char* red, unsigned char* green, unsigned char* blue, int width, int height); void cdlua_pushimagergba_ex(lua_State* L, unsigned char* red, unsigned char* green, unsigned char* blue, unsigned char* alpha, int width, int height); +#if LUA_VERSION_NUM < 502 +#define luaL_typeerror luaL_typerror +#endif #ifdef __cplusplus } diff --git a/cd/include/cdluagl.h b/cd/include/cdluagl.h new file mode 100644 index 0000000..412d745 --- /dev/null +++ b/cd/include/cdluagl.h @@ -0,0 +1,27 @@ +/** \file + * \brief OpenGL Canvas Lua Binding + * + * See Copyright Notice in cd.h + */ + +#ifndef __CD_LUAGL_H +#define __CD_LUAGL_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LUA_NOOBJECT /* Lua 3 */ +void cdluagl_open(void); +#endif + +#ifdef LUA_TNONE /* Lua 5 */ +int cdluagl_open(lua_State *L); +#endif + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/cd/include/cdpdf.h b/cd/include/cdpdf.h index 70d6df5..89486fc 100755 --- a/cd/include/cdpdf.h +++ b/cd/include/cdpdf.h @@ -15,21 +15,6 @@ cdContext* cdContextPDF(void); #define CD_PDF cdContextPDF() -#ifndef CD_PAPERSIZE -#define CD_PAPERSIZE -enum { /* paper sizes */ - CD_A0, - CD_A1, - CD_A2, - CD_A3, - CD_A4, - CD_A5, - CD_LETTER, - CD_LEGAL -}; -#endif - - #ifdef __cplusplus } #endif diff --git a/cd/include/cdps.h b/cd/include/cdps.h index 180ebad..0f4bdd8 100755 --- a/cd/include/cdps.h +++ b/cd/include/cdps.h @@ -15,20 +15,6 @@ cdContext* cdContextPS(void); #define CD_PS cdContextPS() -#ifndef CD_PAPERSIZE -#define CD_PAPERSIZE -enum { /* paper sizes */ - CD_A0, - CD_A1, - CD_A2, - CD_A3, - CD_A4, - CD_A5, - CD_LETTER, - CD_LEGAL -}; -#endif - #ifdef __cplusplus } #endif |