ruby-iup 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/examples/ctrl/degrade.rb +5 -2
- data/examples/ctrl/iupgauge.rb +5 -5
- data/examples/ctrl/iupplot2.rb +2 -5
- data/examples/dlg/iupalarm.rb +3 -1
- data/examples/elem/iupbutton.rb +42 -59
- data/examples/elem/iupcanvas.rb +4 -2
- data/examples/elem/iupcanvas2.rb +9 -8
- data/examples/elem/iupcanvas3.rb +19 -29
- data/examples/elem/iupdialog.rb +3 -7
- data/examples/elem/progressbar.rb +104 -118
- data/ext/iup-linux/include/cd.h +494 -494
- data/ext/iup-linux/include/cd_canvas.hpp +358 -358
- data/ext/iup-linux/include/cd_old.h +158 -158
- data/ext/iup-linux/include/cd_private.h +362 -362
- data/ext/iup-linux/include/cdcgm.h +34 -34
- data/ext/iup-linux/include/cdclipbd.h +22 -22
- data/ext/iup-linux/include/cddbuf.h +23 -23
- data/ext/iup-linux/include/cddebug.h +24 -24
- data/ext/iup-linux/include/cddgn.h +23 -23
- data/ext/iup-linux/include/cddxf.h +22 -22
- data/ext/iup-linux/include/cdemf.h +22 -22
- data/ext/iup-linux/include/cdgdiplus.h +29 -29
- data/ext/iup-linux/include/cdimage.h +23 -23
- data/ext/iup-linux/include/cdirgb.h +30 -30
- data/ext/iup-linux/include/cdiup.h +22 -22
- data/ext/iup-linux/include/cdlua.h +39 -39
- data/ext/iup-linux/include/cdlua3_private.h +120 -120
- data/ext/iup-linux/include/cdlua5_private.h +141 -141
- data/ext/iup-linux/include/cdluaim.h +24 -24
- data/ext/iup-linux/include/cdluaiup.h +27 -27
- data/ext/iup-linux/include/cdluapdf.h +27 -27
- data/ext/iup-linux/include/cdmf.h +24 -24
- data/ext/iup-linux/include/cdmf_private.h +32 -32
- data/ext/iup-linux/include/cdnative.h +26 -26
- data/ext/iup-linux/include/cdpdf.h +38 -38
- data/ext/iup-linux/include/cdpicture.h +22 -22
- data/ext/iup-linux/include/cdprint.h +23 -23
- data/ext/iup-linux/include/cdps.h +37 -37
- data/ext/iup-linux/include/cdwmf.h +22 -22
- data/ext/iup-linux/include/iup.h +318 -255
- data/ext/iup-linux/include/iup_pplot.h +40 -40
- data/ext/iup-linux/include/iupcb.h +25 -25
- data/ext/iup-linux/include/iupcbs.h +43 -42
- data/ext/iup-linux/include/iupcells.h +130 -130
- data/ext/iup-linux/include/iupcolorbar.h +126 -126
- data/ext/iup-linux/include/iupcontrols.h +36 -40
- data/ext/iup-linux/include/iupdef.h +520 -520
- data/ext/iup-linux/include/iupdial.h +63 -64
- data/ext/iup-linux/include/iupgauge.h +57 -57
- data/ext/iup-linux/include/iupgetparam.h +1 -1
- data/ext/iup-linux/include/iupgl.h +101 -101
- data/ext/iup-linux/include/iupim.h +21 -21
- data/ext/iup-linux/include/iupkey.h +457 -290
- data/ext/iup-linux/include/iuplua.h +41 -41
- data/ext/iup-linux/include/iuplua_pplot.h +26 -26
- data/ext/iup-linux/include/iupluacontrols.h +27 -27
- data/ext/iup-linux/include/iupluagl.h +26 -26
- data/ext/iup-linux/include/iupluaim.h +26 -26
- data/ext/iup-linux/include/iupluaole.h +26 -26
- data/ext/iup-linux/include/iupmask.h +40 -52
- data/ext/iup-linux/include/iupmatrix.h +63 -69
- data/ext/iup-linux/include/iupole.h +24 -24
- data/ext/iup-linux/include/iupspin.h +21 -21
- data/ext/iup-linux/include/iuptabs.h +75 -79
- data/ext/iup-linux/include/iuptree.h +93 -93
- data/ext/iup-linux/include/iupval.h +46 -46
- data/ext/iup-linux/include/wd.h +78 -78
- data/ext/iup-linux/include/wd_old.h +85 -85
- data/ext/iup-linux/libcd.so +0 -0
- data/ext/iup-linux/libcdcontextplus.so +0 -0
- data/ext/iup-linux/libcdpdf.so +0 -0
- data/ext/iup-linux/libim.so +0 -0
- data/ext/iup-linux/libim_fftw.so +0 -0
- data/ext/iup-linux/libim_jp2.so +0 -0
- data/ext/iup-linux/libim_process.so +0 -0
- data/ext/iup-linux/libiup.so +0 -0
- data/ext/iup-linux/libiup_pplot.so +0 -0
- data/ext/iup-linux/libiupcontrols.so +0 -0
- data/ext/iup-linux/libiupgl.so +0 -0
- data/ext/iup-linux/libiupim.so +0 -0
- data/ext/iup-linux/libiupimglib.so +0 -0
- data/ext/iup-linux/libiupmot.so +0 -0
- data/ext/iup-win32/cd.dll +0 -0
- data/ext/iup-win32/cd.lib +0 -0
- data/ext/iup-win32/cdcontextplus.dll +0 -0
- data/ext/iup-win32/cdcontextplus.lib +0 -0
- data/ext/iup-win32/cdpdf.dll +0 -0
- data/ext/iup-win32/cdpdf.lib +0 -0
- data/ext/iup-win32/freetype6.dll +0 -0
- data/ext/iup-win32/freetype6.lib +0 -0
- data/ext/iup-win32/im.dll +0 -0
- data/ext/iup-win32/im.lib +0 -0
- data/ext/iup-win32/im_avi.dll +0 -0
- data/ext/iup-win32/im_avi.lib +0 -0
- data/ext/iup-win32/im_capture.dll +0 -0
- data/ext/iup-win32/im_capture.lib +0 -0
- data/ext/iup-win32/im_fftw.dll +0 -0
- data/ext/iup-win32/im_fftw.lib +0 -0
- data/ext/iup-win32/im_jp2.dll +0 -0
- data/ext/iup-win32/im_jp2.lib +0 -0
- data/ext/iup-win32/im_process.dll +0 -0
- data/ext/iup-win32/im_process.lib +0 -0
- data/ext/iup-win32/im_wmv.dll +0 -0
- data/ext/iup-win32/im_wmv.lib +0 -0
- data/ext/iup-win32/imlua_capture51.dll +0 -0
- data/ext/iup-win32/imlua_capture51.lib +0 -0
- data/ext/iup-win32/imlua_wmv51.dll +0 -0
- data/ext/iup-win32/imlua_wmv51.lib +0 -0
- data/ext/iup-win32/include/cd.h +494 -494
- data/ext/iup-win32/include/cd_canvas.hpp +358 -358
- data/ext/iup-win32/include/cd_old.h +158 -158
- data/ext/iup-win32/include/cd_private.h +362 -362
- data/ext/iup-win32/include/cdcgm.h +34 -34
- data/ext/iup-win32/include/cdclipbd.h +22 -22
- data/ext/iup-win32/include/cddbuf.h +23 -23
- data/ext/iup-win32/include/cddebug.h +24 -24
- data/ext/iup-win32/include/cddgn.h +23 -23
- data/ext/iup-win32/include/cddxf.h +22 -22
- data/ext/iup-win32/include/cdemf.h +22 -22
- data/ext/iup-win32/include/cdgdiplus.h +29 -29
- data/ext/iup-win32/include/cdimage.h +23 -23
- data/ext/iup-win32/include/cdirgb.h +30 -30
- data/ext/iup-win32/include/cdiup.h +22 -22
- data/ext/iup-win32/include/cdlua.h +39 -39
- data/ext/iup-win32/include/cdlua3_private.h +120 -120
- data/ext/iup-win32/include/cdlua5_private.h +141 -141
- data/ext/iup-win32/include/cdluaim.h +24 -24
- data/ext/iup-win32/include/cdluaiup.h +27 -27
- data/ext/iup-win32/include/cdluapdf.h +27 -27
- data/ext/iup-win32/include/cdmf.h +24 -24
- data/ext/iup-win32/include/cdmf_private.h +32 -32
- data/ext/iup-win32/include/cdnative.h +26 -26
- data/ext/iup-win32/include/cdpdf.h +38 -38
- data/ext/iup-win32/include/cdpicture.h +22 -22
- data/ext/iup-win32/include/cdprint.h +23 -23
- data/ext/iup-win32/include/cdps.h +37 -37
- data/ext/iup-win32/include/cdwmf.h +22 -22
- data/ext/iup-win32/include/iup.h +318 -255
- data/ext/iup-win32/include/iup_pplot.h +40 -40
- data/ext/iup-win32/include/iupcb.h +25 -25
- data/ext/iup-win32/include/iupcbs.h +43 -42
- data/ext/iup-win32/include/iupcells.h +130 -130
- data/ext/iup-win32/include/iupcolorbar.h +126 -126
- data/ext/iup-win32/include/iupcontrols.h +36 -40
- data/ext/iup-win32/include/iupdef.h +520 -520
- data/ext/iup-win32/include/iupdial.h +63 -64
- data/ext/iup-win32/include/iupgauge.h +57 -57
- data/ext/iup-win32/include/iupgetparam.h +1 -1
- data/ext/iup-win32/include/iupgl.h +101 -101
- data/ext/iup-win32/include/iupim.h +21 -21
- data/ext/iup-win32/include/iupkey.h +457 -290
- data/ext/iup-win32/include/iuplua.h +41 -41
- data/ext/iup-win32/include/iuplua_pplot.h +26 -26
- data/ext/iup-win32/include/iupluacontrols.h +27 -27
- data/ext/iup-win32/include/iupluagl.h +26 -26
- data/ext/iup-win32/include/iupluaim.h +26 -26
- data/ext/iup-win32/include/iupluaole.h +26 -26
- data/ext/iup-win32/include/iupmask.h +40 -52
- data/ext/iup-win32/include/iupmatrix.h +63 -69
- data/ext/iup-win32/include/iupole.h +24 -24
- data/ext/iup-win32/include/iupspin.h +21 -21
- data/ext/iup-win32/include/iuptabs.h +75 -79
- data/ext/iup-win32/include/iuptree.h +93 -93
- data/ext/iup-win32/include/iupval.h +46 -46
- data/ext/iup-win32/include/wd.h +78 -78
- data/ext/iup-win32/include/wd_old.h +85 -85
- data/ext/iup-win32/iup.dll +0 -0
- data/ext/iup-win32/iup.lib +0 -0
- data/ext/iup-win32/iup_pplot.dll +0 -0
- data/ext/iup-win32/iup_pplot.lib +0 -0
- data/ext/iup-win32/iupcd.dll +0 -0
- data/ext/iup-win32/iupcd.lib +0 -0
- data/ext/iup-win32/iupcontrols.dll +0 -0
- data/ext/iup-win32/iupcontrols.lib +0 -0
- data/ext/iup-win32/iupgl.dll +0 -0
- data/ext/iup-win32/iupgl.lib +0 -0
- data/ext/iup-win32/iupgtk.dll +0 -0
- data/ext/iup-win32/iupgtk.lib +0 -0
- data/ext/iup-win32/iupim.dll +0 -0
- data/ext/iup-win32/iupim.lib +0 -0
- data/ext/iup-win32/iupimglib.dll +0 -0
- data/ext/iup-win32/iupimglib.lib +0 -0
- data/ext/iup-win32/iupole.dll +0 -0
- data/ext/iup-win32/iupole.lib +0 -0
- data/ext/iup-win32/iupstub.lib +0 -0
- data/ext/iup-win32/pdflib.dll +0 -0
- data/ext/iup-win32/pdflib.lib +0 -0
- data/ext/iup.c +3 -351
- data/ext/rb_iup.h +48 -15
- data/ext/rb_iupcb.h +1 -0
- data/ext/rb_iupcells.h +1 -0
- data/ext/rb_iupcolorbar.h +1 -4
- data/ext/rb_iupcontrols.h +0 -5
- data/ext/rb_iupdial.h +1 -0
- data/ext/rb_iupgauge.h +1 -0
- data/ext/rb_iupgc.h +0 -1
- data/ext/rb_iupmatrix.h +1 -0
- data/ext/rb_iupsbox.h +0 -1
- data/ext/rb_iuptabs.h +1 -0
- data/ext/rb_iuptree.h +1 -0
- data/ext/rb_iupval.h +1 -0
- metadata +16 -29
- data/ext/iup-linux/include/iupcbox.h +0 -23
- data/ext/iup-linux/include/iupcompat.h +0 -62
- data/ext/iup-linux/include/iupcpi.h +0 -76
- data/ext/iup-linux/include/iupgc.h +0 -20
- data/ext/iup-linux/include/iupsbox.h +0 -20
- data/ext/iup-linux/include/iupspeech.h +0 -23
- data/ext/iup-linux/libcdluacontextplus51.so +0 -0
- data/ext/iup-win32/cdlua51.lib +0 -0
- data/ext/iup-win32/cdluacontextplus51.lib +0 -0
- data/ext/iup-win32/cdluaim51.lib +0 -0
- data/ext/iup-win32/cdluapdf51.lib +0 -0
- data/ext/iup-win32/include/iupcbox.h +0 -23
- data/ext/iup-win32/include/iupcompat.h +0 -62
- data/ext/iup-win32/include/iupcpi.h +0 -76
- data/ext/iup-win32/include/iupgc.h +0 -20
- data/ext/iup-win32/include/iupsbox.h +0 -20
- data/ext/iup-win32/include/iupspeech.h +0 -23
- data/ext/iup-win32/iuplua51.lib +0 -0
- data/ext/iup-win32/iuplua_pplot51.lib +0 -0
- data/ext/iup-win32/iupluacd51.lib +0 -0
- data/ext/iup-win32/iupluacontrols51.lib +0 -0
- data/ext/iup-win32/iupluagl51.lib +0 -0
- data/ext/iup-win32/iupluaim51.lib +0 -0
- data/ext/iup-win32/iupluaimglib51.lib +0 -0
- data/ext/iup-win32/iupluaole51.lib +0 -0
- data/ext/rb_iupcbox.h +0 -40
- data/ext/rb_iupspeech.h +0 -25
@@ -1,158 +1,158 @@
|
|
1
|
-
/** \file
|
2
|
-
* \brief Old User API
|
3
|
-
*
|
4
|
-
* See Copyright Notice in cd.h
|
5
|
-
*/
|
6
|
-
|
7
|
-
#ifndef __CD_OLD_H
|
8
|
-
#define __CD_OLD_H
|
9
|
-
|
10
|
-
#ifdef __cplusplus
|
11
|
-
extern "C" {
|
12
|
-
#endif
|
13
|
-
|
14
|
-
|
15
|
-
/* canvas control */
|
16
|
-
int cdActivate(cdCanvas* canvas);
|
17
|
-
cdCanvas* cdActiveCanvas(void);
|
18
|
-
int cdSimulate(int mode);
|
19
|
-
void cdFlush(void);
|
20
|
-
void cdClear(void);
|
21
|
-
cdState* cdSaveState(void);
|
22
|
-
void cdRestoreState(cdState* state);
|
23
|
-
void cdSetAttribute(const char* name, char* data);
|
24
|
-
void cdSetfAttribute(const char* name, const char* format, ...);
|
25
|
-
char* cdGetAttribute(const char* name);
|
26
|
-
cdContext* cdGetContext(cdCanvas* canvas);
|
27
|
-
|
28
|
-
/* interpretation */
|
29
|
-
int cdRegisterCallback(cdContext *context, int cb, cdCallback func);
|
30
|
-
int cdPlay(cdContext *context, int xmin, int xmax, int ymin, int ymax, void *data);
|
31
|
-
|
32
|
-
/* coordinate transformation */
|
33
|
-
void cdGetCanvasSize(int *width, int *height, double *width_mm, double *height_mm);
|
34
|
-
int cdUpdateYAxis(int *y);
|
35
|
-
void cdMM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy);
|
36
|
-
void cdPixel2MM(int dx, int dy, double *mm_dx, double *mm_dy);
|
37
|
-
void cdOrigin(int x, int y);
|
38
|
-
|
39
|
-
/* clipping */
|
40
|
-
int cdClip(int mode);
|
41
|
-
int * cdGetClipPoly(int *n);
|
42
|
-
void cdClipArea(int xmin, int xmax, int ymin, int ymax);
|
43
|
-
int cdGetClipArea(int *xmin, int *xmax, int *ymin, int *ymax);
|
44
|
-
|
45
|
-
/* clipping region */
|
46
|
-
int cdPointInRegion(int x, int y);
|
47
|
-
void cdOffsetRegion(int x, int y);
|
48
|
-
void cdRegionBox(int *xmin, int *xmax, int *ymin, int *ymax);
|
49
|
-
int cdRegionCombineMode(int mode);
|
50
|
-
|
51
|
-
/* primitives */
|
52
|
-
void cdPixel(int x, int y, long color);
|
53
|
-
void cdMark(int x, int y);
|
54
|
-
void cdLine(int x1, int y1, int x2, int y2);
|
55
|
-
void cdBegin(int mode);
|
56
|
-
void cdVertex(int x, int y);
|
57
|
-
void cdEnd(void);
|
58
|
-
void cdRect(int xmin, int xmax, int ymin, int ymax);
|
59
|
-
void cdBox(int xmin, int xmax, int ymin, int ymax);
|
60
|
-
void cdArc(int xc, int yc, int w, int h, double angle1, double angle2);
|
61
|
-
void cdSector(int xc, int yc, int w, int h, double angle1, double angle2);
|
62
|
-
void cdChord(int xc, int yc, int w, int h, double angle1, double angle2);
|
63
|
-
void cdText(int x, int y, const char* s);
|
64
|
-
|
65
|
-
/* attributes */
|
66
|
-
long cdBackground(long color);
|
67
|
-
long cdForeground(long color);
|
68
|
-
int cdBackOpacity(int opacity);
|
69
|
-
int cdWriteMode(int mode);
|
70
|
-
int cdLineStyle(int style);
|
71
|
-
void cdLineStyleDashes(const int* dashes, int count);
|
72
|
-
int cdLineWidth(int width);
|
73
|
-
int cdLineJoin(int join);
|
74
|
-
int cdLineCap(int cap);
|
75
|
-
int cdInteriorStyle(int style);
|
76
|
-
int cdHatch(int style);
|
77
|
-
void cdStipple(int w, int h, const unsigned char* stipple);
|
78
|
-
unsigned char* cdGetStipple(int *n, int *m);
|
79
|
-
void cdPattern(int w, int h, const long *pattern);
|
80
|
-
long* cdGetPattern(int* n, int* m);
|
81
|
-
int cdFillMode(int mode);
|
82
|
-
void cdFont(int type_face, int style, int size);
|
83
|
-
void cdGetFont(int *type_face, int *style, int *size);
|
84
|
-
char* cdNativeFont(const char* font);
|
85
|
-
int cdTextAlignment(int alignment);
|
86
|
-
double cdTextOrientation(double angle);
|
87
|
-
int cdMarkType(int type);
|
88
|
-
int cdMarkSize(int size);
|
89
|
-
|
90
|
-
/* vector text */
|
91
|
-
void cdVectorText(int x, int y, const char* s);
|
92
|
-
void cdMultiLineVectorText(int x, int y, const char* s);
|
93
|
-
|
94
|
-
/* vector text attributes */
|
95
|
-
char *cdVectorFont(const char *filename);
|
96
|
-
void cdVectorTextDirection(int x1, int y1, int x2, int y2);
|
97
|
-
double* cdVectorTextTransform(const double* matrix);
|
98
|
-
void cdVectorTextSize(int size_x, int size_y, const char* s);
|
99
|
-
int cdVectorCharSize(int size);
|
100
|
-
|
101
|
-
/* vector text properties */
|
102
|
-
void cdGetVectorTextSize(const char* s, int *x, int *y);
|
103
|
-
void cdGetVectorTextBounds(const char* s, int x, int y, int *rect);
|
104
|
-
|
105
|
-
/* properties */
|
106
|
-
void cdFontDim(int *max_width, int *height, int *ascent, int *descent);
|
107
|
-
void cdTextSize(const char* s, int *width, int *height);
|
108
|
-
void cdTextBox(int x, int y, const char* s, int *xmin, int *xmax, int *ymin, int *ymax);
|
109
|
-
void cdTextBounds(int x, int y, const char* s, int *rect);
|
110
|
-
int cdGetColorPlanes(void);
|
111
|
-
|
112
|
-
/* color */
|
113
|
-
void cdPalette(int n, const long* palette, int mode);
|
114
|
-
|
115
|
-
/* client images */
|
116
|
-
void cdGetImageRGB(unsigned char* r, unsigned char* g, unsigned char* b, int x, int y, int w, int h);
|
117
|
-
void cdPutImageRectRGB(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);
|
118
|
-
void cdPutImageRectRGBA(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);
|
119
|
-
void cdPutImageRectMap(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);
|
120
|
-
|
121
|
-
/* defined for backward compatibility */
|
122
|
-
#define cdPutImageRGB(iw, ih, r, g, b, x, y, w, h) cdPutImageRectRGB((iw), (ih), (r), (g), (b), (x), (y), (w), (h), 0, 0, 0, 0)
|
123
|
-
#define cdPutImageRGBA(iw, ih, r, g, b, a, x, y, w, h) cdPutImageRectRGBA((iw), (ih), (r), (g), (b), (a), (x), (y), (w), (h), 0, 0, 0, 0)
|
124
|
-
#define cdPutImageMap(iw, ih, index, colors, x, y, w, h) cdPutImageRectMap((iw), (ih), (index), (colors), (x), (y), (w), (h), 0, 0, 0, 0)
|
125
|
-
#define cdPutImage(image, x, y) cdPutImageRect((image), (x), (y), 0, 0, 0, 0)
|
126
|
-
|
127
|
-
/* server images */
|
128
|
-
cdImage* cdCreateImage(int w, int h);
|
129
|
-
void cdGetImage(cdImage* image, int x, int y);
|
130
|
-
void cdPutImageRect(cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
131
|
-
void cdScrollArea(int xmin, int xmax, int ymin, int ymax, int dx, int dy);
|
132
|
-
|
133
|
-
/* bitmap */
|
134
|
-
void cdPutBitmap(cdBitmap* bitmap, int x, int y, int w, int h);
|
135
|
-
void cdGetBitmap(cdBitmap* bitmap, int x, int y);
|
136
|
-
|
137
|
-
enum { /* OLD type face -> new names */
|
138
|
-
CD_SYSTEM, /* "System" */
|
139
|
-
CD_COURIER, /* "Courier" */
|
140
|
-
CD_TIMES_ROMAN, /* "Times" */
|
141
|
-
CD_HELVETICA, /* "Helvetica" */
|
142
|
-
CD_NATIVE
|
143
|
-
};
|
144
|
-
|
145
|
-
/* OLD definitions, defined for backward compatibility */
|
146
|
-
#define CD_CLIPON CD_CLIPAREA
|
147
|
-
#define CD_CENTER_BASE CD_BASE_CENTER
|
148
|
-
#define CD_LEFT_BASE CD_BASE_LEFT
|
149
|
-
#define CD_RIGHT_BASE CD_BASE_RIGHT
|
150
|
-
#define CD_ITALIC_BOLD CD_BOLD_ITALIC
|
151
|
-
#define cdScrollImage cdScrollArea
|
152
|
-
#define cdCanvas2Raster(x, y) {(void)x; cdUpdateYAxis(y);}
|
153
|
-
|
154
|
-
#ifdef __cplusplus
|
155
|
-
}
|
156
|
-
#endif
|
157
|
-
|
158
|
-
#endif
|
1
|
+
/** \file
|
2
|
+
* \brief Old User API
|
3
|
+
*
|
4
|
+
* See Copyright Notice in cd.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef __CD_OLD_H
|
8
|
+
#define __CD_OLD_H
|
9
|
+
|
10
|
+
#ifdef __cplusplus
|
11
|
+
extern "C" {
|
12
|
+
#endif
|
13
|
+
|
14
|
+
|
15
|
+
/* canvas control */
|
16
|
+
int cdActivate(cdCanvas* canvas);
|
17
|
+
cdCanvas* cdActiveCanvas(void);
|
18
|
+
int cdSimulate(int mode);
|
19
|
+
void cdFlush(void);
|
20
|
+
void cdClear(void);
|
21
|
+
cdState* cdSaveState(void);
|
22
|
+
void cdRestoreState(cdState* state);
|
23
|
+
void cdSetAttribute(const char* name, char* data);
|
24
|
+
void cdSetfAttribute(const char* name, const char* format, ...);
|
25
|
+
char* cdGetAttribute(const char* name);
|
26
|
+
cdContext* cdGetContext(cdCanvas* canvas);
|
27
|
+
|
28
|
+
/* interpretation */
|
29
|
+
int cdRegisterCallback(cdContext *context, int cb, cdCallback func);
|
30
|
+
int cdPlay(cdContext *context, int xmin, int xmax, int ymin, int ymax, void *data);
|
31
|
+
|
32
|
+
/* coordinate transformation */
|
33
|
+
void cdGetCanvasSize(int *width, int *height, double *width_mm, double *height_mm);
|
34
|
+
int cdUpdateYAxis(int *y);
|
35
|
+
void cdMM2Pixel(double mm_dx, double mm_dy, int *dx, int *dy);
|
36
|
+
void cdPixel2MM(int dx, int dy, double *mm_dx, double *mm_dy);
|
37
|
+
void cdOrigin(int x, int y);
|
38
|
+
|
39
|
+
/* clipping */
|
40
|
+
int cdClip(int mode);
|
41
|
+
int * cdGetClipPoly(int *n);
|
42
|
+
void cdClipArea(int xmin, int xmax, int ymin, int ymax);
|
43
|
+
int cdGetClipArea(int *xmin, int *xmax, int *ymin, int *ymax);
|
44
|
+
|
45
|
+
/* clipping region */
|
46
|
+
int cdPointInRegion(int x, int y);
|
47
|
+
void cdOffsetRegion(int x, int y);
|
48
|
+
void cdRegionBox(int *xmin, int *xmax, int *ymin, int *ymax);
|
49
|
+
int cdRegionCombineMode(int mode);
|
50
|
+
|
51
|
+
/* primitives */
|
52
|
+
void cdPixel(int x, int y, long color);
|
53
|
+
void cdMark(int x, int y);
|
54
|
+
void cdLine(int x1, int y1, int x2, int y2);
|
55
|
+
void cdBegin(int mode);
|
56
|
+
void cdVertex(int x, int y);
|
57
|
+
void cdEnd(void);
|
58
|
+
void cdRect(int xmin, int xmax, int ymin, int ymax);
|
59
|
+
void cdBox(int xmin, int xmax, int ymin, int ymax);
|
60
|
+
void cdArc(int xc, int yc, int w, int h, double angle1, double angle2);
|
61
|
+
void cdSector(int xc, int yc, int w, int h, double angle1, double angle2);
|
62
|
+
void cdChord(int xc, int yc, int w, int h, double angle1, double angle2);
|
63
|
+
void cdText(int x, int y, const char* s);
|
64
|
+
|
65
|
+
/* attributes */
|
66
|
+
long cdBackground(long color);
|
67
|
+
long cdForeground(long color);
|
68
|
+
int cdBackOpacity(int opacity);
|
69
|
+
int cdWriteMode(int mode);
|
70
|
+
int cdLineStyle(int style);
|
71
|
+
void cdLineStyleDashes(const int* dashes, int count);
|
72
|
+
int cdLineWidth(int width);
|
73
|
+
int cdLineJoin(int join);
|
74
|
+
int cdLineCap(int cap);
|
75
|
+
int cdInteriorStyle(int style);
|
76
|
+
int cdHatch(int style);
|
77
|
+
void cdStipple(int w, int h, const unsigned char* stipple);
|
78
|
+
unsigned char* cdGetStipple(int *n, int *m);
|
79
|
+
void cdPattern(int w, int h, const long *pattern);
|
80
|
+
long* cdGetPattern(int* n, int* m);
|
81
|
+
int cdFillMode(int mode);
|
82
|
+
void cdFont(int type_face, int style, int size);
|
83
|
+
void cdGetFont(int *type_face, int *style, int *size);
|
84
|
+
char* cdNativeFont(const char* font);
|
85
|
+
int cdTextAlignment(int alignment);
|
86
|
+
double cdTextOrientation(double angle);
|
87
|
+
int cdMarkType(int type);
|
88
|
+
int cdMarkSize(int size);
|
89
|
+
|
90
|
+
/* vector text */
|
91
|
+
void cdVectorText(int x, int y, const char* s);
|
92
|
+
void cdMultiLineVectorText(int x, int y, const char* s);
|
93
|
+
|
94
|
+
/* vector text attributes */
|
95
|
+
char *cdVectorFont(const char *filename);
|
96
|
+
void cdVectorTextDirection(int x1, int y1, int x2, int y2);
|
97
|
+
double* cdVectorTextTransform(const double* matrix);
|
98
|
+
void cdVectorTextSize(int size_x, int size_y, const char* s);
|
99
|
+
int cdVectorCharSize(int size);
|
100
|
+
|
101
|
+
/* vector text properties */
|
102
|
+
void cdGetVectorTextSize(const char* s, int *x, int *y);
|
103
|
+
void cdGetVectorTextBounds(const char* s, int x, int y, int *rect);
|
104
|
+
|
105
|
+
/* properties */
|
106
|
+
void cdFontDim(int *max_width, int *height, int *ascent, int *descent);
|
107
|
+
void cdTextSize(const char* s, int *width, int *height);
|
108
|
+
void cdTextBox(int x, int y, const char* s, int *xmin, int *xmax, int *ymin, int *ymax);
|
109
|
+
void cdTextBounds(int x, int y, const char* s, int *rect);
|
110
|
+
int cdGetColorPlanes(void);
|
111
|
+
|
112
|
+
/* color */
|
113
|
+
void cdPalette(int n, const long* palette, int mode);
|
114
|
+
|
115
|
+
/* client images */
|
116
|
+
void cdGetImageRGB(unsigned char* r, unsigned char* g, unsigned char* b, int x, int y, int w, int h);
|
117
|
+
void cdPutImageRectRGB(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);
|
118
|
+
void cdPutImageRectRGBA(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);
|
119
|
+
void cdPutImageRectMap(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);
|
120
|
+
|
121
|
+
/* defined for backward compatibility */
|
122
|
+
#define cdPutImageRGB(iw, ih, r, g, b, x, y, w, h) cdPutImageRectRGB((iw), (ih), (r), (g), (b), (x), (y), (w), (h), 0, 0, 0, 0)
|
123
|
+
#define cdPutImageRGBA(iw, ih, r, g, b, a, x, y, w, h) cdPutImageRectRGBA((iw), (ih), (r), (g), (b), (a), (x), (y), (w), (h), 0, 0, 0, 0)
|
124
|
+
#define cdPutImageMap(iw, ih, index, colors, x, y, w, h) cdPutImageRectMap((iw), (ih), (index), (colors), (x), (y), (w), (h), 0, 0, 0, 0)
|
125
|
+
#define cdPutImage(image, x, y) cdPutImageRect((image), (x), (y), 0, 0, 0, 0)
|
126
|
+
|
127
|
+
/* server images */
|
128
|
+
cdImage* cdCreateImage(int w, int h);
|
129
|
+
void cdGetImage(cdImage* image, int x, int y);
|
130
|
+
void cdPutImageRect(cdImage* image, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
131
|
+
void cdScrollArea(int xmin, int xmax, int ymin, int ymax, int dx, int dy);
|
132
|
+
|
133
|
+
/* bitmap */
|
134
|
+
void cdPutBitmap(cdBitmap* bitmap, int x, int y, int w, int h);
|
135
|
+
void cdGetBitmap(cdBitmap* bitmap, int x, int y);
|
136
|
+
|
137
|
+
enum { /* OLD type face -> new names */
|
138
|
+
CD_SYSTEM, /* "System" */
|
139
|
+
CD_COURIER, /* "Courier" */
|
140
|
+
CD_TIMES_ROMAN, /* "Times" */
|
141
|
+
CD_HELVETICA, /* "Helvetica" */
|
142
|
+
CD_NATIVE
|
143
|
+
};
|
144
|
+
|
145
|
+
/* OLD definitions, defined for backward compatibility */
|
146
|
+
#define CD_CLIPON CD_CLIPAREA
|
147
|
+
#define CD_CENTER_BASE CD_BASE_CENTER
|
148
|
+
#define CD_LEFT_BASE CD_BASE_LEFT
|
149
|
+
#define CD_RIGHT_BASE CD_BASE_RIGHT
|
150
|
+
#define CD_ITALIC_BOLD CD_BOLD_ITALIC
|
151
|
+
#define cdScrollImage cdScrollArea
|
152
|
+
#define cdCanvas2Raster(x, y) {(void)x; cdUpdateYAxis(y);}
|
153
|
+
|
154
|
+
#ifdef __cplusplus
|
155
|
+
}
|
156
|
+
#endif
|
157
|
+
|
158
|
+
#endif
|
@@ -1,362 +1,362 @@
|
|
1
|
-
/** \file
|
2
|
-
* \brief Private CD declarations
|
3
|
-
*
|
4
|
-
* See Copyright Notice in cd.h
|
5
|
-
*/
|
6
|
-
|
7
|
-
#ifndef __CD_PRIVATE_H
|
8
|
-
#define __CD_PRIVATE_H
|
9
|
-
|
10
|
-
#include <stdarg.h>
|
11
|
-
|
12
|
-
#ifdef __cplusplus
|
13
|
-
extern "C" {
|
14
|
-
#endif
|
15
|
-
|
16
|
-
/* All context canvas must have at least the base canvas pointer. */
|
17
|
-
typedef struct _cdCtxCanvasBase
|
18
|
-
{
|
19
|
-
cdCanvas* canvas;
|
20
|
-
} cdCtxCanvasBase;
|
21
|
-
|
22
|
-
typedef struct _cdCtxCanvas cdCtxCanvas;
|
23
|
-
typedef struct _cdCtxImage cdCtxImage;
|
24
|
-
|
25
|
-
typedef struct _cdVectorFont cdVectorFont;
|
26
|
-
typedef struct _cdSimulation cdSimulation;
|
27
|
-
|
28
|
-
typedef struct _cdPoint
|
29
|
-
{
|
30
|
-
int x, y;
|
31
|
-
} cdPoint;
|
32
|
-
|
33
|
-
typedef struct _cdfPoint
|
34
|
-
{
|
35
|
-
double x, y;
|
36
|
-
} cdfPoint;
|
37
|
-
|
38
|
-
typedef struct _cdRect
|
39
|
-
{
|
40
|
-
int xmin, xmax, ymin, ymax;
|
41
|
-
} cdRect;
|
42
|
-
|
43
|
-
typedef struct _cdfRect
|
44
|
-
{
|
45
|
-
double xmin, xmax, ymin, ymax;
|
46
|
-
} cdfRect;
|
47
|
-
|
48
|
-
typedef struct _cdAttribute
|
49
|
-
{
|
50
|
-
const char *name;
|
51
|
-
|
52
|
-
/* can be NULL one of them */
|
53
|
-
void (*set)(cdCtxCanvas* ctxcanvas, char* data);
|
54
|
-
char* (*get)(cdCtxCanvas* ctxcanvas);
|
55
|
-
} cdAttribute;
|
56
|
-
|
57
|
-
struct _cdImage
|
58
|
-
{
|
59
|
-
int w, h;
|
60
|
-
cdCtxImage* ctximage;
|
61
|
-
|
62
|
-
/* can NOT be NULL */
|
63
|
-
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
64
|
-
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
65
|
-
void (*cxKillImage)(cdCtxImage* ctximage);
|
66
|
-
};
|
67
|
-
|
68
|
-
struct _cdContext
|
69
|
-
{
|
70
|
-
unsigned long caps; /* canvas capabilities, combination of CD_CAP_* */
|
71
|
-
int plus; /* indicates if the canvas is context plus */
|
72
|
-
|
73
|
-
/* can NOT be NULL */
|
74
|
-
void (*cxCreateCanvas)(cdCanvas* canvas, void *data);
|
75
|
-
void (*cxInitTable)(cdCanvas* canvas);
|
76
|
-
|
77
|
-
/* can be NULL */
|
78
|
-
int (*cxPlay)(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, void *data);
|
79
|
-
int (*cxRegisterCallback)(int cb, cdCallback func);
|
80
|
-
};
|
81
|
-
|
82
|
-
struct _cdCanvas
|
83
|
-
{
|
84
|
-
char signature[2]; /* must be "CD" */
|
85
|
-
|
86
|
-
/* can NOT be NULL */
|
87
|
-
void (*cxPixel)(cdCtxCanvas* ctxcanvas, int x, int y, long color);
|
88
|
-
void (*cxLine)(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
89
|
-
void (*cxPoly)(cdCtxCanvas* ctxcanvas, int mode, cdPoint* points, int n);
|
90
|
-
void (*cxRect)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
91
|
-
void (*cxBox)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
92
|
-
void (*cxArc)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
93
|
-
void (*cxSector)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
94
|
-
void (*cxChord)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
95
|
-
void (*cxText)(cdCtxCanvas* ctxcanvas, int x, int y, const char *s);
|
96
|
-
void (*cxKillCanvas)(cdCtxCanvas* ctxcanvas);
|
97
|
-
int (*cxFont)(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
98
|
-
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);
|
99
|
-
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);
|
100
|
-
|
101
|
-
/* default implementation uses the simulation driver */
|
102
|
-
void (*cxGetFontDim)(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
103
|
-
void (*cxGetTextSize)(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
104
|
-
|
105
|
-
/* all the following function pointers can be NULL */
|
106
|
-
|
107
|
-
void (*cxFlush)(cdCtxCanvas* ctxcanvas);
|
108
|
-
void (*cxClear)(cdCtxCanvas* ctxcanvas);
|
109
|
-
|
110
|
-
void (*cxFLine)(cdCtxCanvas* ctxcanvas, double x1, double y1, double x2, double y2);
|
111
|
-
void (*cxFPoly)(cdCtxCanvas* ctxcanvas, int mode, cdfPoint* points, int n);
|
112
|
-
void (*cxFRect)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
113
|
-
void (*cxFBox)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
114
|
-
void (*cxFArc)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
115
|
-
void (*cxFSector)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
116
|
-
void (*cxFChord)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
117
|
-
void (*cxFText)(cdCtxCanvas* ctxcanvas, double x, double y, const char *s);
|
118
|
-
|
119
|
-
int (*cxClip)(cdCtxCanvas* ctxcanvas, int mode);
|
120
|
-
void (*cxClipArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
121
|
-
void (*cxFClipArea)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
122
|
-
int (*cxBackOpacity)(cdCtxCanvas* ctxcanvas, int opacity);
|
123
|
-
int (*cxWriteMode)(cdCtxCanvas* ctxcanvas, int mode);
|
124
|
-
int (*cxLineStyle)(cdCtxCanvas* ctxcanvas, int style);
|
125
|
-
int (*cxLineWidth)(cdCtxCanvas* ctxcanvas, int width);
|
126
|
-
int (*cxLineJoin)(cdCtxCanvas* ctxcanvas, int join);
|
127
|
-
int (*cxLineCap)(cdCtxCanvas* ctxcanvas, int cap);
|
128
|
-
int (*cxInteriorStyle)(cdCtxCanvas* ctxcanvas, int style);
|
129
|
-
int (*cxHatch)(cdCtxCanvas* ctxcanvas, int style);
|
130
|
-
void (*cxStipple)(cdCtxCanvas* ctxcanvas, int w, int h, const unsigned char *stipple);
|
131
|
-
void (*cxPattern)(cdCtxCanvas* ctxcanvas, int w, int h, const long *pattern);
|
132
|
-
int (*cxNativeFont)(cdCtxCanvas* ctxcanvas, const char* font);
|
133
|
-
int (*cxTextAlignment)(cdCtxCanvas* ctxcanvas, int alignment);
|
134
|
-
double (*cxTextOrientation)(cdCtxCanvas* ctxcanvas, double angle);
|
135
|
-
void (*cxPalette)(cdCtxCanvas* ctxcanvas, int n, const long *palette, int mode);
|
136
|
-
long (*cxBackground)(cdCtxCanvas* ctxcanvas, long color);
|
137
|
-
long (*cxForeground)(cdCtxCanvas* ctxcanvas, long color);
|
138
|
-
void (*cxTransform)(cdCtxCanvas* ctxcanvas, const double* matrix);
|
139
|
-
|
140
|
-
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);
|
141
|
-
void (*cxGetImageRGB)(cdCtxCanvas* ctxcanvas, unsigned char *r, unsigned char *g, unsigned char *b, int x, int y, int w, int h);
|
142
|
-
void (*cxScrollArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax, int dx, int dy);
|
143
|
-
|
144
|
-
cdCtxImage* (*cxCreateImage)(cdCtxCanvas* ctxcanvas, int w, int h);
|
145
|
-
void (*cxKillImage)(cdCtxImage* ctximage);
|
146
|
-
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
147
|
-
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
148
|
-
|
149
|
-
void (*cxNewRegion)(cdCtxCanvas* ctxcanvas);
|
150
|
-
int (*cxIsPointInRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
151
|
-
void (*cxOffsetRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
152
|
-
void (*cxGetRegionBox)(cdCtxCanvas* ctxcanvas, int *xmin, int *xmax, int *ymin, int *ymax);
|
153
|
-
|
154
|
-
int (*cxActivate)(cdCtxCanvas* ctxcanvas);
|
155
|
-
void (*cxDeactivate)(cdCtxCanvas* ctxcanvas);
|
156
|
-
|
157
|
-
/* the driver must update these, when the canvas is created and
|
158
|
-
whenever the canvas change its size or bpp. */
|
159
|
-
int w,h; /* size in pixels */ /**** pixel = mm * res ****/
|
160
|
-
double w_mm, h_mm; /* size in mm */ /**** mm = pixel / res ****/
|
161
|
-
double xres, yres; /* resolution in pixels/mm */ /**** res = pixel / mm ****/
|
162
|
-
int bpp; /* number of bits per pixel */
|
163
|
-
int invert_yaxis; /* the driver has the y axis from top to bottom */
|
164
|
-
double matrix[6];
|
165
|
-
int use_matrix;
|
166
|
-
|
167
|
-
/* clipping attributes */
|
168
|
-
int clip_mode;
|
169
|
-
cdRect clip_rect;
|
170
|
-
cdfRect clip_frect;
|
171
|
-
int clip_poly_n;
|
172
|
-
cdPoint* clip_poly; /* only defined if integer poligon created, if exist clip_fpoly is NULL, and ->Poly exists */
|
173
|
-
cdfPoint* clip_fpoly; /* only defined if real poligon created, if exist clip_poly is NULL, and ->fPoly exists */
|
174
|
-
|
175
|
-
/* clipping region attributes */
|
176
|
-
int new_region;
|
177
|
-
int combine_mode;
|
178
|
-
|
179
|
-
/* color attributes */
|
180
|
-
long foreground, background;
|
181
|
-
int back_opacity, write_mode;
|
182
|
-
|
183
|
-
/* primitive attributes */
|
184
|
-
int mark_type, mark_size;
|
185
|
-
|
186
|
-
int line_style, line_width;
|
187
|
-
int line_cap, line_join;
|
188
|
-
int* line_dashes;
|
189
|
-
int line_dashes_count;
|
190
|
-
|
191
|
-
int interior_style, hatch_style;
|
192
|
-
int fill_mode;
|
193
|
-
|
194
|
-
char font_type_face[1024];
|
195
|
-
int font_style, font_size;
|
196
|
-
int text_alignment;
|
197
|
-
double text_orientation;
|
198
|
-
char native_font[1024];
|
199
|
-
|
200
|
-
int pattern_w, pattern_h, pattern_size;
|
201
|
-
long* pattern;
|
202
|
-
int stipple_w, stipple_h, stipple_size;
|
203
|
-
unsigned char* stipple;
|
204
|
-
|
205
|
-
/* origin */
|
206
|
-
int use_origin;
|
207
|
-
cdPoint origin; /* both points contains the same coordinate always */
|
208
|
-
cdfPoint forigin;
|
209
|
-
|
210
|
-
/* last polygon */
|
211
|
-
int poly_mode,
|
212
|
-
poly_n, /* current number of vertices */
|
213
|
-
poly_size, fpoly_size; /* allocated number of vertices, only increases */
|
214
|
-
cdPoint* poly; /* used during an integer poligon creation, only if ->Poly exists */
|
215
|
-
cdfPoint* fpoly; /* used during an real poligon creation, only if ->fPoly exists */
|
216
|
-
int use_fpoly;
|
217
|
-
|
218
|
-
/* simulation flags */
|
219
|
-
int sim_mode;
|
220
|
-
int sim_poly;
|
221
|
-
|
222
|
-
/* WC */
|
223
|
-
double s, sx, tx, sy, ty; /* Transformacao Window -> Viewport (scale+translation)*/
|
224
|
-
cdfRect window; /* Window in WC */
|
225
|
-
cdRect viewport; /* Viewport in pixels */
|
226
|
-
|
227
|
-
cdAttribute* attrib_list[50];
|
228
|
-
int attrib_n;
|
229
|
-
|
230
|
-
cdVectorFont* vector_font;
|
231
|
-
cdSimulation* simulation;
|
232
|
-
cdCtxCanvas* ctxcanvas;
|
233
|
-
cdContext* context;
|
234
|
-
};
|
235
|
-
|
236
|
-
|
237
|
-
/***************/
|
238
|
-
/* attributes */
|
239
|
-
/***************/
|
240
|
-
void cdRegisterAttribute(cdCanvas* canvas, cdAttribute* attrib);
|
241
|
-
|
242
|
-
/***************/
|
243
|
-
/* vector font */
|
244
|
-
/***************/
|
245
|
-
cdVectorFont* cdCreateVectorFont(cdCanvas* canvas);
|
246
|
-
void cdKillVectorFont(cdVectorFont* vector_font_data);
|
247
|
-
|
248
|
-
/**********/
|
249
|
-
/* WC */
|
250
|
-
/**********/
|
251
|
-
void wdSetDefaults(cdCanvas* canvas);
|
252
|
-
|
253
|
-
/********************/
|
254
|
-
/* Context Plus */
|
255
|
-
/********************/
|
256
|
-
void cdInitContextPlusList(cdContext* ctx_list[]);
|
257
|
-
cdContext* cdGetContextPlus(int ctx);
|
258
|
-
enum{CD_CTX_NATIVEWINDOW, CD_CTX_IMAGE, CD_CTX_DBUFFER, CD_CTX_PRINTER, CD_CTX_EMF, CD_CTX_CLIPBOARD};
|
259
|
-
#define NUM_CONTEXTPLUS 6
|
260
|
-
|
261
|
-
/*************/
|
262
|
-
/* utilities */
|
263
|
-
/*************/
|
264
|
-
int cdRound(double x);
|
265
|
-
void cdCanvasGetEllipseBox(int xc, int yc, int w, int h, double a1, double a2, int *xmin, int *xmax, int *ymin, int *ymax);
|
266
|
-
int cdCheckBoxSize(int *xmin, int *xmax, int *ymin, int *ymax);
|
267
|
-
int cdfCheckBoxSize(double *xmin, double *xmax, double *ymin, double *ymax);
|
268
|
-
void cdNormalizeLimits(int w, int h, int *xmin, int *xmax, int *ymin, int *ymax);
|
269
|
-
int cdGetFileName(const char* strdata, char* filename);
|
270
|
-
int cdStrEqualNoCase(const char* str1, const char* str2);
|
271
|
-
|
272
|
-
#define _cdCheckCanvas(_canvas) (_canvas!=NULL && ((unsigned char*)_canvas)[0] == 'C' && ((unsigned char*)_canvas)[1] == 'D')
|
273
|
-
#define _cdInvertYAxis(_canvas, _y) (_canvas->h - (_y) - 1)
|
274
|
-
#define _cdSwapInt(_a,_b) {int _c=_a;_a=_b;_b=_c;}
|
275
|
-
#define _cdSwapDouble(_a,_b) {double _c=_a;_a=_b;_b=_c;}
|
276
|
-
#define _cdRound(_x) ((int)(_x < 0? (_x-0.5): (_x+0.5)))
|
277
|
-
#define _cdRotateHatch(_x) ((_x) = ((_x)<< 1) | ((_x)>>7))
|
278
|
-
|
279
|
-
/******************/
|
280
|
-
/* Transformation */
|
281
|
-
/******************/
|
282
|
-
void cdMatrixTransformPoint(double* matrix, int x, int y, int *rx, int *ry);
|
283
|
-
void cdfMatrixTransformPoint(double* matrix, double x, double y, double *rx, double *ry);
|
284
|
-
void cdMatrixMultiply(const double* matrix, double* mul_matrix);
|
285
|
-
void cdMatrixInverse(const double* matrix, double* inv_matrix);
|
286
|
-
void cdRotatePoint(cdCanvas* canvas, int x, int y, int cx, int cy, int *rx, int *ry, double sin_teta, double cos_teta);
|
287
|
-
void cdRotatePointY(cdCanvas* canvas, int x, int y, int cx, int cy, int *ry, double sin_theta, double cos_theta);
|
288
|
-
void cdTextTranslatePoint(cdCanvas* canvas, int x, int y, int w, int h, int baseline, int *rx, int *ry);
|
289
|
-
|
290
|
-
/*************/
|
291
|
-
/* Fonts */
|
292
|
-
/*************/
|
293
|
-
int cdParsePangoFont(const char *nativefont, char *type_face, int *style, int *size);
|
294
|
-
int cdParseIupWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
295
|
-
int cdParseXWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
296
|
-
int cdGetFontSizePixels(cdCanvas* canvas, int size);
|
297
|
-
int cdGetFontSizePoints(cdCanvas* canvas, int size);
|
298
|
-
|
299
|
-
/****************/
|
300
|
-
/* For Images */
|
301
|
-
/****************/
|
302
|
-
unsigned char cdZeroOrderInterpolation(int width, int height, const unsigned char *map, float xl, float yl);
|
303
|
-
unsigned char cdBilinearInterpolation(int width, int height, const unsigned char *map, float xl, float yl);
|
304
|
-
void cdImageRGBInitInverseTransform(int w, int h, int xmin, int xmax, int ymin, int ymax, float *xfactor, float *yfactor, const double* matrix, double* inv_matrix);
|
305
|
-
void cdImageRGBInverseTransform(int t_x, int t_y, float *i_x, float *i_y, float xfactor, float yfactor, int xmin, int ymin, int x, int y, double *inv_matrix);
|
306
|
-
void cdImageRGBCalcDstLimits(cdCanvas* canvas, int x, int y, int w, int h, int *xmin, int *xmax, int *ymin, int *ymax, int* rect);
|
307
|
-
void cdRGB2Gray(int width, int height, const unsigned char* red, const unsigned char* green, const unsigned char* blue, unsigned char* index, long *color);
|
308
|
-
|
309
|
-
#define CD_ALPHA_BLEND(_src,_dst,_alpha) (unsigned char)(((_src) * (_alpha) + (_dst) * (255 - (_alpha))) / 255)
|
310
|
-
|
311
|
-
int* cdGetZoomTable(int w, int rw, int xmin);
|
312
|
-
int cdCalcZoom(int canvas_size, int cnv_rect_pos, int cnv_rect_size,
|
313
|
-
int *new_cnv_rect_pos, int *new_cnv_rect_size,
|
314
|
-
int img_rect_pos, int img_rect_size,
|
315
|
-
int *new_img_rect_pos, int *new_img_rect_size, int is_horizontal);
|
316
|
-
|
317
|
-
/**************/
|
318
|
-
/* simulation */
|
319
|
-
/**************/
|
320
|
-
cdSimulation* cdCreateSimulation(cdCanvas* canvas);
|
321
|
-
void cdKillSimulation(cdSimulation* simulation);
|
322
|
-
void cdSimInitText(cdSimulation* simulation);
|
323
|
-
|
324
|
-
/* Replacements for cdCanvas function pointers */
|
325
|
-
void cdrectSIM(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
326
|
-
void cdboxSIM(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
327
|
-
void cdlineSIM(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
328
|
-
void cdarcSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
329
|
-
void cdsectorSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
330
|
-
void cdchordSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
331
|
-
void cdpolySIM(cdCtxCanvas* ctxcanvas, int mode, cdPoint* points, int n);
|
332
|
-
|
333
|
-
/* Replacements for Text and Font using FreeType library */
|
334
|
-
void cdtextSIM(cdCtxCanvas* ctxcanvas, int x, int y, const char *s);
|
335
|
-
int cdfontSIM(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
336
|
-
void cdgetfontdimSIM(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
337
|
-
void cdgettextsizeSIM(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
338
|
-
|
339
|
-
/* Simulation functions that are independent of the simulation base driver */
|
340
|
-
void cdSimMark(cdCanvas* canvas, int x, int y);
|
341
|
-
void cdSimPolyBezier(cdCanvas* canvas, const cdPoint* points, int n);
|
342
|
-
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);
|
343
|
-
|
344
|
-
/* Simulation functions that are independent of the simulation base driver,
|
345
|
-
and does not checks for axis and matrix.
|
346
|
-
All use the polygon method ->cxFPoly only. */
|
347
|
-
void cdfSimPolyBezier(cdCanvas* canvas, const cdfPoint* points, int n);
|
348
|
-
void cdfSimRect(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
349
|
-
void cdfSimBox(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
350
|
-
void cdfSimElipse(cdCtxCanvas* ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2, int sector);
|
351
|
-
void cdfSimArc(cdCtxCanvas *ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2);
|
352
|
-
|
353
|
-
/* Replacements for Font using estimation */
|
354
|
-
void cdgetfontdimEX(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
355
|
-
void cdgettextsizeEX(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
356
|
-
|
357
|
-
|
358
|
-
#ifdef __cplusplus
|
359
|
-
}
|
360
|
-
#endif
|
361
|
-
|
362
|
-
#endif
|
1
|
+
/** \file
|
2
|
+
* \brief Private CD declarations
|
3
|
+
*
|
4
|
+
* See Copyright Notice in cd.h
|
5
|
+
*/
|
6
|
+
|
7
|
+
#ifndef __CD_PRIVATE_H
|
8
|
+
#define __CD_PRIVATE_H
|
9
|
+
|
10
|
+
#include <stdarg.h>
|
11
|
+
|
12
|
+
#ifdef __cplusplus
|
13
|
+
extern "C" {
|
14
|
+
#endif
|
15
|
+
|
16
|
+
/* All context canvas must have at least the base canvas pointer. */
|
17
|
+
typedef struct _cdCtxCanvasBase
|
18
|
+
{
|
19
|
+
cdCanvas* canvas;
|
20
|
+
} cdCtxCanvasBase;
|
21
|
+
|
22
|
+
typedef struct _cdCtxCanvas cdCtxCanvas;
|
23
|
+
typedef struct _cdCtxImage cdCtxImage;
|
24
|
+
|
25
|
+
typedef struct _cdVectorFont cdVectorFont;
|
26
|
+
typedef struct _cdSimulation cdSimulation;
|
27
|
+
|
28
|
+
typedef struct _cdPoint
|
29
|
+
{
|
30
|
+
int x, y;
|
31
|
+
} cdPoint;
|
32
|
+
|
33
|
+
typedef struct _cdfPoint
|
34
|
+
{
|
35
|
+
double x, y;
|
36
|
+
} cdfPoint;
|
37
|
+
|
38
|
+
typedef struct _cdRect
|
39
|
+
{
|
40
|
+
int xmin, xmax, ymin, ymax;
|
41
|
+
} cdRect;
|
42
|
+
|
43
|
+
typedef struct _cdfRect
|
44
|
+
{
|
45
|
+
double xmin, xmax, ymin, ymax;
|
46
|
+
} cdfRect;
|
47
|
+
|
48
|
+
typedef struct _cdAttribute
|
49
|
+
{
|
50
|
+
const char *name;
|
51
|
+
|
52
|
+
/* can be NULL one of them */
|
53
|
+
void (*set)(cdCtxCanvas* ctxcanvas, char* data);
|
54
|
+
char* (*get)(cdCtxCanvas* ctxcanvas);
|
55
|
+
} cdAttribute;
|
56
|
+
|
57
|
+
struct _cdImage
|
58
|
+
{
|
59
|
+
int w, h;
|
60
|
+
cdCtxImage* ctximage;
|
61
|
+
|
62
|
+
/* can NOT be NULL */
|
63
|
+
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
64
|
+
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
65
|
+
void (*cxKillImage)(cdCtxImage* ctximage);
|
66
|
+
};
|
67
|
+
|
68
|
+
struct _cdContext
|
69
|
+
{
|
70
|
+
unsigned long caps; /* canvas capabilities, combination of CD_CAP_* */
|
71
|
+
int plus; /* indicates if the canvas is context plus */
|
72
|
+
|
73
|
+
/* can NOT be NULL */
|
74
|
+
void (*cxCreateCanvas)(cdCanvas* canvas, void *data);
|
75
|
+
void (*cxInitTable)(cdCanvas* canvas);
|
76
|
+
|
77
|
+
/* can be NULL */
|
78
|
+
int (*cxPlay)(cdCanvas* canvas, int xmin, int xmax, int ymin, int ymax, void *data);
|
79
|
+
int (*cxRegisterCallback)(int cb, cdCallback func);
|
80
|
+
};
|
81
|
+
|
82
|
+
struct _cdCanvas
|
83
|
+
{
|
84
|
+
char signature[2]; /* must be "CD" */
|
85
|
+
|
86
|
+
/* can NOT be NULL */
|
87
|
+
void (*cxPixel)(cdCtxCanvas* ctxcanvas, int x, int y, long color);
|
88
|
+
void (*cxLine)(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
89
|
+
void (*cxPoly)(cdCtxCanvas* ctxcanvas, int mode, cdPoint* points, int n);
|
90
|
+
void (*cxRect)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
91
|
+
void (*cxBox)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
92
|
+
void (*cxArc)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
93
|
+
void (*cxSector)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
94
|
+
void (*cxChord)(cdCtxCanvas* ctxcanvas, int xc, int yc, int w, int h, double angle1, double angle2);
|
95
|
+
void (*cxText)(cdCtxCanvas* ctxcanvas, int x, int y, const char *s);
|
96
|
+
void (*cxKillCanvas)(cdCtxCanvas* ctxcanvas);
|
97
|
+
int (*cxFont)(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
98
|
+
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);
|
99
|
+
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);
|
100
|
+
|
101
|
+
/* default implementation uses the simulation driver */
|
102
|
+
void (*cxGetFontDim)(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
103
|
+
void (*cxGetTextSize)(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
104
|
+
|
105
|
+
/* all the following function pointers can be NULL */
|
106
|
+
|
107
|
+
void (*cxFlush)(cdCtxCanvas* ctxcanvas);
|
108
|
+
void (*cxClear)(cdCtxCanvas* ctxcanvas);
|
109
|
+
|
110
|
+
void (*cxFLine)(cdCtxCanvas* ctxcanvas, double x1, double y1, double x2, double y2);
|
111
|
+
void (*cxFPoly)(cdCtxCanvas* ctxcanvas, int mode, cdfPoint* points, int n);
|
112
|
+
void (*cxFRect)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
113
|
+
void (*cxFBox)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
114
|
+
void (*cxFArc)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
115
|
+
void (*cxFSector)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
116
|
+
void (*cxFChord)(cdCtxCanvas* ctxcanvas, double xc, double yc, double w, double h, double angle1, double angle2);
|
117
|
+
void (*cxFText)(cdCtxCanvas* ctxcanvas, double x, double y, const char *s);
|
118
|
+
|
119
|
+
int (*cxClip)(cdCtxCanvas* ctxcanvas, int mode);
|
120
|
+
void (*cxClipArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
121
|
+
void (*cxFClipArea)(cdCtxCanvas* ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
122
|
+
int (*cxBackOpacity)(cdCtxCanvas* ctxcanvas, int opacity);
|
123
|
+
int (*cxWriteMode)(cdCtxCanvas* ctxcanvas, int mode);
|
124
|
+
int (*cxLineStyle)(cdCtxCanvas* ctxcanvas, int style);
|
125
|
+
int (*cxLineWidth)(cdCtxCanvas* ctxcanvas, int width);
|
126
|
+
int (*cxLineJoin)(cdCtxCanvas* ctxcanvas, int join);
|
127
|
+
int (*cxLineCap)(cdCtxCanvas* ctxcanvas, int cap);
|
128
|
+
int (*cxInteriorStyle)(cdCtxCanvas* ctxcanvas, int style);
|
129
|
+
int (*cxHatch)(cdCtxCanvas* ctxcanvas, int style);
|
130
|
+
void (*cxStipple)(cdCtxCanvas* ctxcanvas, int w, int h, const unsigned char *stipple);
|
131
|
+
void (*cxPattern)(cdCtxCanvas* ctxcanvas, int w, int h, const long *pattern);
|
132
|
+
int (*cxNativeFont)(cdCtxCanvas* ctxcanvas, const char* font);
|
133
|
+
int (*cxTextAlignment)(cdCtxCanvas* ctxcanvas, int alignment);
|
134
|
+
double (*cxTextOrientation)(cdCtxCanvas* ctxcanvas, double angle);
|
135
|
+
void (*cxPalette)(cdCtxCanvas* ctxcanvas, int n, const long *palette, int mode);
|
136
|
+
long (*cxBackground)(cdCtxCanvas* ctxcanvas, long color);
|
137
|
+
long (*cxForeground)(cdCtxCanvas* ctxcanvas, long color);
|
138
|
+
void (*cxTransform)(cdCtxCanvas* ctxcanvas, const double* matrix);
|
139
|
+
|
140
|
+
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);
|
141
|
+
void (*cxGetImageRGB)(cdCtxCanvas* ctxcanvas, unsigned char *r, unsigned char *g, unsigned char *b, int x, int y, int w, int h);
|
142
|
+
void (*cxScrollArea)(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax, int dx, int dy);
|
143
|
+
|
144
|
+
cdCtxImage* (*cxCreateImage)(cdCtxCanvas* ctxcanvas, int w, int h);
|
145
|
+
void (*cxKillImage)(cdCtxImage* ctximage);
|
146
|
+
void (*cxGetImage)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y);
|
147
|
+
void (*cxPutImageRect)(cdCtxCanvas* ctxcanvas, cdCtxImage* ctximage, int x, int y, int xmin, int xmax, int ymin, int ymax);
|
148
|
+
|
149
|
+
void (*cxNewRegion)(cdCtxCanvas* ctxcanvas);
|
150
|
+
int (*cxIsPointInRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
151
|
+
void (*cxOffsetRegion)(cdCtxCanvas* ctxcanvas, int x, int y);
|
152
|
+
void (*cxGetRegionBox)(cdCtxCanvas* ctxcanvas, int *xmin, int *xmax, int *ymin, int *ymax);
|
153
|
+
|
154
|
+
int (*cxActivate)(cdCtxCanvas* ctxcanvas);
|
155
|
+
void (*cxDeactivate)(cdCtxCanvas* ctxcanvas);
|
156
|
+
|
157
|
+
/* the driver must update these, when the canvas is created and
|
158
|
+
whenever the canvas change its size or bpp. */
|
159
|
+
int w,h; /* size in pixels */ /**** pixel = mm * res ****/
|
160
|
+
double w_mm, h_mm; /* size in mm */ /**** mm = pixel / res ****/
|
161
|
+
double xres, yres; /* resolution in pixels/mm */ /**** res = pixel / mm ****/
|
162
|
+
int bpp; /* number of bits per pixel */
|
163
|
+
int invert_yaxis; /* the driver has the y axis from top to bottom */
|
164
|
+
double matrix[6];
|
165
|
+
int use_matrix;
|
166
|
+
|
167
|
+
/* clipping attributes */
|
168
|
+
int clip_mode;
|
169
|
+
cdRect clip_rect;
|
170
|
+
cdfRect clip_frect;
|
171
|
+
int clip_poly_n;
|
172
|
+
cdPoint* clip_poly; /* only defined if integer poligon created, if exist clip_fpoly is NULL, and ->Poly exists */
|
173
|
+
cdfPoint* clip_fpoly; /* only defined if real poligon created, if exist clip_poly is NULL, and ->fPoly exists */
|
174
|
+
|
175
|
+
/* clipping region attributes */
|
176
|
+
int new_region;
|
177
|
+
int combine_mode;
|
178
|
+
|
179
|
+
/* color attributes */
|
180
|
+
long foreground, background;
|
181
|
+
int back_opacity, write_mode;
|
182
|
+
|
183
|
+
/* primitive attributes */
|
184
|
+
int mark_type, mark_size;
|
185
|
+
|
186
|
+
int line_style, line_width;
|
187
|
+
int line_cap, line_join;
|
188
|
+
int* line_dashes;
|
189
|
+
int line_dashes_count;
|
190
|
+
|
191
|
+
int interior_style, hatch_style;
|
192
|
+
int fill_mode;
|
193
|
+
|
194
|
+
char font_type_face[1024];
|
195
|
+
int font_style, font_size;
|
196
|
+
int text_alignment;
|
197
|
+
double text_orientation;
|
198
|
+
char native_font[1024];
|
199
|
+
|
200
|
+
int pattern_w, pattern_h, pattern_size;
|
201
|
+
long* pattern;
|
202
|
+
int stipple_w, stipple_h, stipple_size;
|
203
|
+
unsigned char* stipple;
|
204
|
+
|
205
|
+
/* origin */
|
206
|
+
int use_origin;
|
207
|
+
cdPoint origin; /* both points contains the same coordinate always */
|
208
|
+
cdfPoint forigin;
|
209
|
+
|
210
|
+
/* last polygon */
|
211
|
+
int poly_mode,
|
212
|
+
poly_n, /* current number of vertices */
|
213
|
+
poly_size, fpoly_size; /* allocated number of vertices, only increases */
|
214
|
+
cdPoint* poly; /* used during an integer poligon creation, only if ->Poly exists */
|
215
|
+
cdfPoint* fpoly; /* used during an real poligon creation, only if ->fPoly exists */
|
216
|
+
int use_fpoly;
|
217
|
+
|
218
|
+
/* simulation flags */
|
219
|
+
int sim_mode;
|
220
|
+
int sim_poly;
|
221
|
+
|
222
|
+
/* WC */
|
223
|
+
double s, sx, tx, sy, ty; /* Transformacao Window -> Viewport (scale+translation)*/
|
224
|
+
cdfRect window; /* Window in WC */
|
225
|
+
cdRect viewport; /* Viewport in pixels */
|
226
|
+
|
227
|
+
cdAttribute* attrib_list[50];
|
228
|
+
int attrib_n;
|
229
|
+
|
230
|
+
cdVectorFont* vector_font;
|
231
|
+
cdSimulation* simulation;
|
232
|
+
cdCtxCanvas* ctxcanvas;
|
233
|
+
cdContext* context;
|
234
|
+
};
|
235
|
+
|
236
|
+
|
237
|
+
/***************/
|
238
|
+
/* attributes */
|
239
|
+
/***************/
|
240
|
+
void cdRegisterAttribute(cdCanvas* canvas, cdAttribute* attrib);
|
241
|
+
|
242
|
+
/***************/
|
243
|
+
/* vector font */
|
244
|
+
/***************/
|
245
|
+
cdVectorFont* cdCreateVectorFont(cdCanvas* canvas);
|
246
|
+
void cdKillVectorFont(cdVectorFont* vector_font_data);
|
247
|
+
|
248
|
+
/**********/
|
249
|
+
/* WC */
|
250
|
+
/**********/
|
251
|
+
void wdSetDefaults(cdCanvas* canvas);
|
252
|
+
|
253
|
+
/********************/
|
254
|
+
/* Context Plus */
|
255
|
+
/********************/
|
256
|
+
void cdInitContextPlusList(cdContext* ctx_list[]);
|
257
|
+
cdContext* cdGetContextPlus(int ctx);
|
258
|
+
enum{CD_CTX_NATIVEWINDOW, CD_CTX_IMAGE, CD_CTX_DBUFFER, CD_CTX_PRINTER, CD_CTX_EMF, CD_CTX_CLIPBOARD};
|
259
|
+
#define NUM_CONTEXTPLUS 6
|
260
|
+
|
261
|
+
/*************/
|
262
|
+
/* utilities */
|
263
|
+
/*************/
|
264
|
+
int cdRound(double x);
|
265
|
+
void cdCanvasGetEllipseBox(int xc, int yc, int w, int h, double a1, double a2, int *xmin, int *xmax, int *ymin, int *ymax);
|
266
|
+
int cdCheckBoxSize(int *xmin, int *xmax, int *ymin, int *ymax);
|
267
|
+
int cdfCheckBoxSize(double *xmin, double *xmax, double *ymin, double *ymax);
|
268
|
+
void cdNormalizeLimits(int w, int h, int *xmin, int *xmax, int *ymin, int *ymax);
|
269
|
+
int cdGetFileName(const char* strdata, char* filename);
|
270
|
+
int cdStrEqualNoCase(const char* str1, const char* str2);
|
271
|
+
|
272
|
+
#define _cdCheckCanvas(_canvas) (_canvas!=NULL && ((unsigned char*)_canvas)[0] == 'C' && ((unsigned char*)_canvas)[1] == 'D')
|
273
|
+
#define _cdInvertYAxis(_canvas, _y) (_canvas->h - (_y) - 1)
|
274
|
+
#define _cdSwapInt(_a,_b) {int _c=_a;_a=_b;_b=_c;}
|
275
|
+
#define _cdSwapDouble(_a,_b) {double _c=_a;_a=_b;_b=_c;}
|
276
|
+
#define _cdRound(_x) ((int)(_x < 0? (_x-0.5): (_x+0.5)))
|
277
|
+
#define _cdRotateHatch(_x) ((_x) = ((_x)<< 1) | ((_x)>>7))
|
278
|
+
|
279
|
+
/******************/
|
280
|
+
/* Transformation */
|
281
|
+
/******************/
|
282
|
+
void cdMatrixTransformPoint(double* matrix, int x, int y, int *rx, int *ry);
|
283
|
+
void cdfMatrixTransformPoint(double* matrix, double x, double y, double *rx, double *ry);
|
284
|
+
void cdMatrixMultiply(const double* matrix, double* mul_matrix);
|
285
|
+
void cdMatrixInverse(const double* matrix, double* inv_matrix);
|
286
|
+
void cdRotatePoint(cdCanvas* canvas, int x, int y, int cx, int cy, int *rx, int *ry, double sin_teta, double cos_teta);
|
287
|
+
void cdRotatePointY(cdCanvas* canvas, int x, int y, int cx, int cy, int *ry, double sin_theta, double cos_theta);
|
288
|
+
void cdTextTranslatePoint(cdCanvas* canvas, int x, int y, int w, int h, int baseline, int *rx, int *ry);
|
289
|
+
|
290
|
+
/*************/
|
291
|
+
/* Fonts */
|
292
|
+
/*************/
|
293
|
+
int cdParsePangoFont(const char *nativefont, char *type_face, int *style, int *size);
|
294
|
+
int cdParseIupWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
295
|
+
int cdParseXWinFont(const char *nativefont, char *type_face, int *style, int *size);
|
296
|
+
int cdGetFontSizePixels(cdCanvas* canvas, int size);
|
297
|
+
int cdGetFontSizePoints(cdCanvas* canvas, int size);
|
298
|
+
|
299
|
+
/****************/
|
300
|
+
/* For Images */
|
301
|
+
/****************/
|
302
|
+
unsigned char cdZeroOrderInterpolation(int width, int height, const unsigned char *map, float xl, float yl);
|
303
|
+
unsigned char cdBilinearInterpolation(int width, int height, const unsigned char *map, float xl, float yl);
|
304
|
+
void cdImageRGBInitInverseTransform(int w, int h, int xmin, int xmax, int ymin, int ymax, float *xfactor, float *yfactor, const double* matrix, double* inv_matrix);
|
305
|
+
void cdImageRGBInverseTransform(int t_x, int t_y, float *i_x, float *i_y, float xfactor, float yfactor, int xmin, int ymin, int x, int y, double *inv_matrix);
|
306
|
+
void cdImageRGBCalcDstLimits(cdCanvas* canvas, int x, int y, int w, int h, int *xmin, int *xmax, int *ymin, int *ymax, int* rect);
|
307
|
+
void cdRGB2Gray(int width, int height, const unsigned char* red, const unsigned char* green, const unsigned char* blue, unsigned char* index, long *color);
|
308
|
+
|
309
|
+
#define CD_ALPHA_BLEND(_src,_dst,_alpha) (unsigned char)(((_src) * (_alpha) + (_dst) * (255 - (_alpha))) / 255)
|
310
|
+
|
311
|
+
int* cdGetZoomTable(int w, int rw, int xmin);
|
312
|
+
int cdCalcZoom(int canvas_size, int cnv_rect_pos, int cnv_rect_size,
|
313
|
+
int *new_cnv_rect_pos, int *new_cnv_rect_size,
|
314
|
+
int img_rect_pos, int img_rect_size,
|
315
|
+
int *new_img_rect_pos, int *new_img_rect_size, int is_horizontal);
|
316
|
+
|
317
|
+
/**************/
|
318
|
+
/* simulation */
|
319
|
+
/**************/
|
320
|
+
cdSimulation* cdCreateSimulation(cdCanvas* canvas);
|
321
|
+
void cdKillSimulation(cdSimulation* simulation);
|
322
|
+
void cdSimInitText(cdSimulation* simulation);
|
323
|
+
|
324
|
+
/* Replacements for cdCanvas function pointers */
|
325
|
+
void cdrectSIM(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
326
|
+
void cdboxSIM(cdCtxCanvas* ctxcanvas, int xmin, int xmax, int ymin, int ymax);
|
327
|
+
void cdlineSIM(cdCtxCanvas* ctxcanvas, int x1, int y1, int x2, int y2);
|
328
|
+
void cdarcSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
329
|
+
void cdsectorSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
330
|
+
void cdchordSIM(cdCtxCanvas* ctxcanvas, int xc, int yc, int width, int height, double angle1, double angle2);
|
331
|
+
void cdpolySIM(cdCtxCanvas* ctxcanvas, int mode, cdPoint* points, int n);
|
332
|
+
|
333
|
+
/* Replacements for Text and Font using FreeType library */
|
334
|
+
void cdtextSIM(cdCtxCanvas* ctxcanvas, int x, int y, const char *s);
|
335
|
+
int cdfontSIM(cdCtxCanvas* ctxcanvas, const char *type_face, int style, int size);
|
336
|
+
void cdgetfontdimSIM(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
337
|
+
void cdgettextsizeSIM(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
338
|
+
|
339
|
+
/* Simulation functions that are independent of the simulation base driver */
|
340
|
+
void cdSimMark(cdCanvas* canvas, int x, int y);
|
341
|
+
void cdSimPolyBezier(cdCanvas* canvas, const cdPoint* points, int n);
|
342
|
+
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);
|
343
|
+
|
344
|
+
/* Simulation functions that are independent of the simulation base driver,
|
345
|
+
and does not checks for axis and matrix.
|
346
|
+
All use the polygon method ->cxFPoly only. */
|
347
|
+
void cdfSimPolyBezier(cdCanvas* canvas, const cdfPoint* points, int n);
|
348
|
+
void cdfSimRect(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
349
|
+
void cdfSimBox(cdCtxCanvas *ctxcanvas, double xmin, double xmax, double ymin, double ymax);
|
350
|
+
void cdfSimElipse(cdCtxCanvas* ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2, int sector);
|
351
|
+
void cdfSimArc(cdCtxCanvas *ctxcanvas, double xc, double yc, double width, double height, double angle1, double angle2);
|
352
|
+
|
353
|
+
/* Replacements for Font using estimation */
|
354
|
+
void cdgetfontdimEX(cdCtxCanvas* ctxcanvas, int *max_width, int *height, int *ascent, int *descent);
|
355
|
+
void cdgettextsizeEX(cdCtxCanvas* ctxcanvas, const char *s, int *width, int *height);
|
356
|
+
|
357
|
+
|
358
|
+
#ifdef __cplusplus
|
359
|
+
}
|
360
|
+
#endif
|
361
|
+
|
362
|
+
#endif
|