mirror of
https://github.com/LHY0125/PathEditor.git
synced 2026-05-10 02:09:46 +08:00
build: 重构IUP库依赖和项目结构
- 删除旧版iup-3.31_Win64_dllw6_lib目录及其所有二进制文件 - 将IUP和CD库重新组织为独立目录结构,包含头文件和静态库 - 更新CMakeLists.txt以链接新的静态库(iupcontrols、iupimglib、cd等) - 修改main.c以显式初始化IupControls和IupImageLib扩展库 - 更新回调函数签名以匹配IUP Matrix控件的实际参数 - 调整UI工具函数以使用Matrix控件的属性(MARKED、NUMLIN等) - 更新安装脚本仅复制实际依赖的DLL文件 - 添加所有缺失的IUP和CD头文件以支持完整功能
This commit is contained in:
@@ -0,0 +1,440 @@
|
||||
/** \file
|
||||
* \brief Private CD declarations
|
||||
*
|
||||
* See Copyright Notice in cd.h
|
||||
*/
|
||||
|
||||
#ifndef __CD_PRIVATE_H
|
||||
#define __CD_PRIVATE_H
|
||||
|
||||
#include <stdarg.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* All context canvas must have at least the base canvas pointer. */
|
||||
typedef struct _cdCtxCanvasBase
|
||||
{
|
||||
cdCanvas* canvas;
|
||||
} cdCtxCanvasBase;
|
||||
|
||||
typedef struct _cdCtxCanvas cdCtxCanvas;
|
||||
typedef struct _cdCtxImage cdCtxImage;
|
||||
|
||||
typedef struct _cdVectorFont cdVectorFont;
|
||||
typedef struct _cdSimulation cdSimulation;
|
||||
|
||||
typedef struct _cdPoint
|
||||
{
|
||||
int x, y;
|
||||
} cdPoint;
|
||||
|
||||
typedef struct _cdfPoint
|
||||
{
|
||||
double x, y;
|
||||
} cdfPoint;
|
||||
|
||||
typedef struct _cdRect
|
||||
{
|
||||
int xmin, xmax, ymin, ymax;
|
||||
} cdRect;
|
||||
|
||||
typedef struct _cdfRect
|
||||
{
|
||||
double xmin, xmax, ymin, ymax;
|
||||
} cdfRect;
|
||||
|
||||
typedef struct _cdAttribute
|
||||
{
|
||||
const char *name;
|
||||
|
||||
/* can be NULL one of them */
|
||||
void (*set)(cdCtxCanvas* ctxcanvas, char* data);
|
||||
char* (*get)(cdCtxCanvas* ctxcanvas);
|
||||
} cdAttribute;
|
||||
|
||||
struct _cdImage
|
||||
{
|
||||
int w, h;
|
||||
cdCtxImage* ctximage;
|
||||
|
||||
/* can NOT be NULL */
|
||||
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
||||
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxKillImage)(cdCtxImage* ctximage);
|
||||
};
|
||||
|
||||
struct _cdContext
|
||||
{
|
||||
unsigned long caps; /* canvas capabilities, combination of CD_CAP_* */
|
||||
int type; /* context type WINDOW, DEVICE, IMAGE or FILE, combined with PLUS */
|
||||
|
||||
/* can NOT be NULL */
|
||||
void (*cxCreateCanvas)(cdCanvas* canvas, void *data);
|
||||
void (*cxInitTable)(cdCanvas* canvas);
|
||||
|
||||
/* can be NULL */
|
||||
int (*cxPlay)(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, void *data);
|
||||
int (*cxRegisterCallback)(int cb, cdCallback func);
|
||||
};
|
||||
|
||||
struct _cdCanvas
|
||||
{
|
||||
char signature[2]; /* must be "CD" */
|
||||
|
||||
/* can NOT be NULL */
|
||||
void (*cxPixel)(cdCtxCanvas* ctxcanvas, int x, int y, long color);
|
||||
void (*cxLine)(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
||||
void (*cxPoly)(cdCtxCanvas* ctxcanvas, int mode, cdPoint* points, int n);
|
||||
void (*cxRect)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxBox)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxArc)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
||||
void (*cxSector)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
||||
void (*cxChord)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
||||
void (*cxText)(cdCtxCanvas* ctxcanvas, int x, int y, const char *s, int len);
|
||||
void (*cxKillCanvas)(cdCtxCanvas* ctxcanvas);
|
||||
int (*cxFont)(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
||||
void (*cxPutImageRectMap)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char *index, const long *colors, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
|
||||
|
||||
/* default implementation uses the simulation driver */
|
||||
void (*cxGetFontDim)(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
||||
void (*cxGetTextSize)(cdCtxCanvas* ctxcanvas, const char *s, int len, int *width, int *height);
|
||||
|
||||
/* all the following function pointers can be NULL */
|
||||
|
||||
void (*cxFlush)(cdCtxCanvas* ctxcanvas);
|
||||
void (*cxClear)(cdCtxCanvas* ctxcanvas);
|
||||
|
||||
void (*cxFPixel)(cdCtxCanvas* ctxcanvas, double x, double y, long color);
|
||||
void (*cxFLine)(cdCtxCanvas* ctxcanvas, double x1, double y1, double x2, double y2);
|
||||
void (*cxFPoly)(cdCtxCanvas* ctxcanvas, int mode, cdfPoint* points, int n);
|
||||
void (*cxFRect)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
||||
void (*cxFBox)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
||||
void (*cxFArc)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
||||
void (*cxFSector)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
||||
void (*cxFChord)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
||||
void (*cxFText)(cdCtxCanvas* ctxcanvas, double x, double y, const char *s, int len);
|
||||
|
||||
int (*cxClip)(cdCtxCanvas* ctxcanvas, int mode);
|
||||
void (*cxClipArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxFClipArea)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
||||
int (*cxBackOpacity)(cdCtxCanvas* ctxcanvas, int opacity);
|
||||
int (*cxWriteMode)(cdCtxCanvas* ctxcanvas, int mode);
|
||||
int (*cxLineStyle)(cdCtxCanvas* ctxcanvas, int style);
|
||||
int (*cxLineWidth)(cdCtxCanvas* ctxcanvas, int width);
|
||||
int (*cxLineJoin)(cdCtxCanvas* ctxcanvas, int join);
|
||||
int (*cxLineCap)(cdCtxCanvas* ctxcanvas, int cap);
|
||||
int (*cxInteriorStyle)(cdCtxCanvas* ctxcanvas, int style);
|
||||
int (*cxHatch)(cdCtxCanvas* ctxcanvas, int style);
|
||||
void (*cxStipple)(cdCtxCanvas* ctxcanvas, int w, int h, const unsigned char *stipple);
|
||||
void (*cxPattern)(cdCtxCanvas* ctxcanvas, int w, int h, const long *pattern);
|
||||
int (*cxNativeFont)(cdCtxCanvas* ctxcanvas, const char* font);
|
||||
int (*cxTextAlignment)(cdCtxCanvas* ctxcanvas, int alignment);
|
||||
double (*cxTextOrientation)(cdCtxCanvas* ctxcanvas, double angle);
|
||||
void (*cxPalette)(cdCtxCanvas* ctxcanvas, int n, const long *palette, int mode);
|
||||
long (*cxBackground)(cdCtxCanvas* ctxcanvas, long color);
|
||||
long (*cxForeground)(cdCtxCanvas* ctxcanvas, long color);
|
||||
void (*cxTransform)(cdCtxCanvas* ctxcanvas, const double* matrix);
|
||||
|
||||
void (*cxGetImageRGB)(cdCtxCanvas* ctxcanvas, unsigned char *r, unsigned char *g, unsigned char *b, int x, int y, int w, int h);
|
||||
void (*cxPutImageRectRGB)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxPutImageRectRGBA)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, const unsigned char *a, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
|
||||
|
||||
void (*cxFPutImageRectRGB)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxFPutImageRectRGBA)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char* r, const unsigned char* g, const unsigned char* b, const unsigned char* a, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
|
||||
void (*cxFPutImageRectMap)(cdCtxCanvas* ctxcanvas, int iw, int ih, const unsigned char* index, const long* colors, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
|
||||
|
||||
void (*cxScrollArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax, int dx, int dy);
|
||||
|
||||
cdCtxImage* (*cxCreateImage)(cdCtxCanvas* ctxcanvas, int w, int h);
|
||||
void (*cxKillImage)(cdCtxImage* ctximage);
|
||||
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
||||
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
||||
|
||||
void (*cxNewRegion)(cdCtxCanvas* ctxcanvas);
|
||||
int (*cxIsPointInRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
||||
void (*cxOffsetRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
||||
void (*cxGetRegionBox)(cdCtxCanvas* ctxcanvas, int *xmin, int *xmax, int *ymin, int *ymax);
|
||||
|
||||
int (*cxActivate)(cdCtxCanvas* ctxcanvas);
|
||||
void (*cxDeactivate)(cdCtxCanvas* ctxcanvas);
|
||||
|
||||
/* the driver must update these, when the canvas is created and
|
||||
whenever the canvas change its size or bpp. */
|
||||
int w,h; /* size in pixels */ /**** pixel = mm * res ****/
|
||||
double w_mm, h_mm; /* size in mm */ /**** mm = pixel / res ****/
|
||||
double xres, yres; /* resolution in pixels/mm */ /**** res = pixel / mm ****/
|
||||
int bpp; /* number of bits per pixel */
|
||||
int invert_yaxis; /* invert Y coordinates before calling the driver,
|
||||
used only when the native Y axis orientation is top-bottom "!(cap&CD_CAP_YAXIS)".
|
||||
It is turned off by the driver if native transformation matrix is used. */
|
||||
double matrix[6];
|
||||
int use_matrix;
|
||||
|
||||
/* clipping attributes */
|
||||
int clip_mode;
|
||||
cdRect clip_rect;
|
||||
cdfRect clip_frect;
|
||||
int clip_poly_n;
|
||||
cdPoint* clip_poly; /* only defined if integer polygon created, if exist clip_fpoly is NULL, and ->Poly exists */
|
||||
cdfPoint* clip_fpoly; /* only defined if real polygon created, if exist clip_poly is NULL, and ->fPoly exists */
|
||||
|
||||
/* clipping region attributes */
|
||||
int new_region;
|
||||
int combine_mode;
|
||||
|
||||
/* color attributes */
|
||||
long foreground, background;
|
||||
int back_opacity, write_mode;
|
||||
|
||||
/* primitive attributes */
|
||||
int mark_type, mark_size;
|
||||
|
||||
int line_style, line_width;
|
||||
int line_cap, line_join;
|
||||
int* line_dashes;
|
||||
int line_dashes_count;
|
||||
|
||||
int interior_style, hatch_style;
|
||||
int fill_mode;
|
||||
|
||||
char font_type_face[1024];
|
||||
int font_style, font_size;
|
||||
int text_alignment;
|
||||
double text_orientation;
|
||||
char native_font[1024];
|
||||
|
||||
int pattern_w, pattern_h, pattern_size;
|
||||
long* pattern;
|
||||
int stipple_w, stipple_h, stipple_size;
|
||||
unsigned char* stipple;
|
||||
|
||||
/* origin */
|
||||
int use_origin;
|
||||
cdPoint origin; /* both points contains the same coordinate always */
|
||||
cdfPoint forigin;
|
||||
|
||||
/* last polygon */
|
||||
int poly_mode,
|
||||
poly_n, /* current number of vertices */
|
||||
poly_size, fpoly_size; /* allocated number of vertices, only increases */
|
||||
cdPoint* poly; /* used during an integer polygon creation */
|
||||
cdfPoint* fpoly; /* used during an real polygon creation, only if ->cxFPoly 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 */
|
||||
int path_arc_index; /* used for arc */
|
||||
|
||||
/* simulation flags */
|
||||
int sim_mode;
|
||||
|
||||
/* WC */
|
||||
double s, sx, tx, sy, ty; /* Transform Window -> Viewport (scale+translation)*/
|
||||
cdfRect window; /* Window in WC */
|
||||
cdRect viewport; /* Viewport in pixels */
|
||||
|
||||
cdAttribute* attrib_list[50];
|
||||
int attrib_n;
|
||||
|
||||
cdVectorFont* vector_font;
|
||||
cdSimulation* simulation;
|
||||
cdCtxCanvas* ctxcanvas;
|
||||
cdContext* context;
|
||||
|
||||
void* userdata;
|
||||
};
|
||||
|
||||
enum{CD_BASE_WIN, CD_BASE_X, CD_BASE_GDK, CD_BASE_HAIKU};
|
||||
int cdBaseDriver(void);
|
||||
|
||||
/***************/
|
||||
/* attributes */
|
||||
/***************/
|
||||
void cdRegisterAttribute(cdCanvas* canvas, cdAttribute* attrib);
|
||||
void cdUpdateAttributes(cdCanvas* canvas);
|
||||
|
||||
/***************/
|
||||
/* vector font */
|
||||
/***************/
|
||||
cdVectorFont* cdCreateVectorFont(cdCanvas* canvas);
|
||||
void cdKillVectorFont(cdVectorFont* vector_font_data);
|
||||
|
||||
/**********/
|
||||
/* WC */
|
||||
/**********/
|
||||
void wdSetDefaults(cdCanvas* canvas);
|
||||
|
||||
/********************/
|
||||
/* Context Plus */
|
||||
/********************/
|
||||
void cdInitContextPlusList(cdContext* ctx_list[]);
|
||||
cdContext* cdGetContextPlus(int ctx);
|
||||
enum{CD_CTXPLUS_NATIVEWINDOW, CD_CTXPLUS_IMAGE, CD_CTXPLUS_DBUFFER, CD_CTXPLUS_PRINTER, CD_CTXPLUS_EMF, CD_CTXPLUS_CLIPBOARD};
|
||||
#define CD_CTXPLUS_COUNT 6
|
||||
#define CD_CTX_PLUS 0xFF00 /* to combine with context type */
|
||||
|
||||
/*************/
|
||||
/* utilities */
|
||||
/*************/
|
||||
int cdRound(double x);
|
||||
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);
|
||||
int cdStrIsAscii(const char* str);
|
||||
char* cdStrConvertToUTF8(const char* str, int len, char* utf8_buffer, int *utf8_buffer_len, int utf8mode);
|
||||
void cdSetPaperSize(int size, double *w_pt, double *h_pt);
|
||||
int cdGetFontFileName(const char* type_face, char* filename);
|
||||
int cdGetFontFileNameDefault(const char *type_face, int style, char* filename);
|
||||
int cdGetFontFileNameSystem(const char *type_face, int style, char* filename);
|
||||
int cdStrTmpFileName(char* filename);
|
||||
int cdMakeDirectory(const char *path);
|
||||
int cdIsDirectory(const char* path);
|
||||
int cdRemoveDirectory(const char *path);
|
||||
void cdCopyFile(const char* srcFile, const char* destFile);
|
||||
|
||||
typedef struct _cdDirData
|
||||
{
|
||||
const char* path;
|
||||
char filename[1024];
|
||||
int isDir;
|
||||
int closed;
|
||||
void* handle;
|
||||
} cdDirData;
|
||||
|
||||
cdDirData* cdDirIterOpen(const char *path);
|
||||
int cdDirIter(cdDirData * dirData);
|
||||
void cdDirClose(cdDirData* dirData);
|
||||
|
||||
void cdPoly(cdCanvas* canvas, int mode, cdPoint* points, int n);
|
||||
|
||||
void cdGetArcBox(int xc, int yc, int w, int h, double a1, double a2, int *xmin, int *xmax, int *ymin, int *ymax);
|
||||
int cdGetArcPathF(const cdPoint* poly, double *xc, double *yc, double *w, double *h, double *a1, double *a2);
|
||||
int cdfGetArcPath(const cdfPoint* poly, double *xc, double *yc, double *w, double *h, double *a1, double *a2);
|
||||
int cdGetArcPath(const cdPoint* poly, int *xc, int *yc, int *w, int *h, double *a1, double *a2);
|
||||
void cdGetArcStartEnd(int xc, int yc, int w, int h, double a1, double a2, int *x1, int *y1, int *x2, int *y2);
|
||||
void cdfGetArcStartEnd(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 _cdSwapInt(_a,_b) {int _c=_a;_a=_b;_b=_c;}
|
||||
#define _cdSwapDouble(_a,_b) {double _c=_a;_a=_b;_b=_c;}
|
||||
#define _cdRound(_x) ((int)(_x < 0? (_x-0.5): (_x+0.5)))
|
||||
#define _cdRotateHatch(_x) ((_x) = ((_x)<< 1) | ((_x)>>7))
|
||||
#define _cdInvertYAxis(_canvas, _y) (_canvas->h - (_y) - 1)
|
||||
|
||||
|
||||
/******************/
|
||||
/* Transformation */
|
||||
/******************/
|
||||
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 cdfRotatePointY(cdCanvas* canvas, double x, double y, double cx, double cy, double *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);
|
||||
void cdfTextTranslatePoint(cdCanvas* canvas, double x, double y, int w, int h, int baseline, double *rx, double *ry);
|
||||
void cdMovePoint(int *x, int *y, double dx, double dy, double sin_theta, double cos_theta);
|
||||
void cdfMovePoint(double *x, double *y, double dx, double dy, double sin_theta, double cos_theta);
|
||||
|
||||
/*************/
|
||||
/* Fonts */
|
||||
/*************/
|
||||
int cdParsePangoFont(const char *nativefont, char *type_face, int *style, int *size);
|
||||
int cdParseIupWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
||||
int cdParseXWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
||||
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 */
|
||||
/****************/
|
||||
unsigned char cdZeroOrderInterpolation(int width, int height, const unsigned char *map, double xl, double yl);
|
||||
unsigned char cdBilinearInterpolation(int width, int height, const unsigned char *map, double xl, double yl);
|
||||
void cdImageRGBInitInverseTransform(int w, int h, int xmin, int xmax, int ymin, int ymax, double *xfactor, double *yfactor, const double* matrix, double* inv_matrix);
|
||||
void cdImageRGBInverseTransform(int t_x, int t_y, double *i_x, double *i_y, double xfactor, double yfactor, int xmin, int ymin, int x, int y, double *inv_matrix);
|
||||
void cdImageRGBCalcDstLimits(cdCanvas* canvas, int x, int y, int w, int h, int *xmin, int *xmax, int *ymin, int *ymax, int* rect);
|
||||
void cdRGB2Gray(int width, int height, const unsigned char* red, const unsigned char* green, const unsigned char* blue, unsigned char* index, long *color);
|
||||
|
||||
#define CD_ALPHA_BLEND(_src,_dst,_alpha) (unsigned char)(((_src) * (_alpha) + (_dst) * (255 - (_alpha))) / 255)
|
||||
|
||||
int* cdGetZoomTable(int w, int rw, int xmin);
|
||||
int cdCalcZoom(int canvas_size, int cnv_rect_pos, int cnv_rect_size,
|
||||
int *new_cnv_rect_pos, int *new_cnv_rect_size,
|
||||
int img_rect_pos, int img_rect_size,
|
||||
int *new_img_rect_pos, int *new_img_rect_size, int is_horizontal);
|
||||
|
||||
/**************/
|
||||
/* simulation */
|
||||
/**************/
|
||||
|
||||
/* sim.c */
|
||||
/* simulation base driver. */
|
||||
cdSimulation* cdCreateSimulation(cdCanvas* canvas);
|
||||
void cdKillSimulation(cdSimulation* simulation);
|
||||
void cdSimulationInitText(cdSimulation* simulation);
|
||||
|
||||
/* sim_text.c */
|
||||
/* Replacements for Text and Font using FreeType library */
|
||||
void cdSimulationText(cdCtxCanvas* ctxcanvas, int x, int y, const char *s, int len);
|
||||
int cdSimulationFont(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
||||
void cdSimulationGetFontDim(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
||||
void cdSimulationGetTextSize(cdCtxCanvas* ctxcanvas, const char *s, int len, int *width, int *height);
|
||||
|
||||
/* sim_linepolyfill.c */
|
||||
void cdfSimulationPoly(cdCtxCanvas* ctxcanvas, int mode, cdfPoint* fpoly, int n);
|
||||
void cdSimulationPoly(cdCtxCanvas* ctxcanvas, int mode, cdPoint* poly, int n);
|
||||
|
||||
/* sim_primitives.c */
|
||||
/* Simulation functions that are >> independent << of the simulation base driver. */
|
||||
|
||||
void cdSimMark(cdCanvas* canvas, int x, int y);
|
||||
void cdfSimMark(cdCanvas* canvas, double x, double y);
|
||||
void cdSimPutImageRectRGBA(cdCanvas* canvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, const unsigned char *a, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
|
||||
void cdSimPutImageRectRGB(cdCanvas* canvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, int x, int y, int w, int h, int xmin, int xmax, int ymin, int ymax);
|
||||
void cdfSimPutImageRectRGB(cdCanvas* canvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
|
||||
void cdfSimPutImageRectRGBA(cdCanvas* canvas, int iw, int ih, const unsigned char *r, const unsigned char *g, const unsigned char *b, const unsigned char *a, double x, double y, double w, double h, int xmin, int xmax, int ymin, int ymax);
|
||||
|
||||
/* All these use cdPoly. */
|
||||
void cdSimLine(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
||||
void cdSimRect(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
||||
void cdSimBox(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
||||
void cdSimArc(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
||||
void cdSimSector(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
||||
void cdSimChord(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
||||
void cdSimPolyBezier(cdCanvas* canvas, const cdPoint* points, int n);
|
||||
void cdSimPolyPath(cdCanvas* canvas, const cdPoint* points, int n);
|
||||
|
||||
/* All these use the polygon method ->cxFPoly only. */
|
||||
/* can be used only by drivers that implement cxFPoly */
|
||||
void cdfSimLine(cdCtxCanvas* ctxcanvas, double x1, double y1, double x2, double y2);
|
||||
void cdfSimRect(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
||||
void cdfSimBox(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
||||
void cdfSimArc(cdCtxCanvas *ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2);
|
||||
void cdfSimSector(cdCtxCanvas *ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2);
|
||||
void cdfSimChord(cdCtxCanvas *ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2);
|
||||
void cdfSimPolyBezier(cdCanvas* canvas, const cdfPoint* points, int n);
|
||||
void cdfSimPolyPath(cdCanvas* canvas, const cdfPoint* points, int n);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user