1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/** \file
* \brief X-Windows Base Driver
*
* See Copyright Notice in cd.h
*/
#ifndef __CDX11_H
#define __CDX11_H
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include "cd.h"
#include "cd_private.h"
/* Hidden declaration for the Context Plus driver */
typedef struct _cdxContextPlus cdxContextPlus;
struct _cdCtxImage {
unsigned int w, h, depth;
Pixmap img;
Display *dpy;
int scr;
Visual *vis;
};
struct _cdCtxCanvas {
cdCanvas* canvas;
Display* dpy; /* display da aplicacao no X */
Visual* vis; /* visual usado pela aplicacao */
int scr; /* screen da aplicacao */
GC gc; /* contexto grafico */
Drawable wnd; /* drawable */
long int fg;
Pixmap last_hatch; /* ultimo hatch setado pelo usuario */
Pixmap last_stipple; /* ultimo stipple setado pelo usuario */
Pixmap last_pattern; /* ultimo pattern setado pelo usuario */
GC last_stipple_gc;
int last_stipple_w;
int last_stipple_h;
GC last_pattern_gc;
int last_pattern_w;
int last_pattern_h;
XFontStruct *font; /* fonte de caracteres no X */
unsigned int depth; /* depth do canvas */
Pixmap clip_polygon; /* poligono de clipping */
Pixmap new_region, region_aux;
GC region_aux_gc;
void *data; /* informacoes especificas do driver */
long int *xidata; /* ximage cache */
int xisize;
Colormap colormap; /* colormap para todos os canvas */
XColor color_table[256]; /* tabela de cores do colormap */
int num_colors; /* tamanho maximo da tabela de cores */
int rshift; /* constante red para calculo truecolor */
int gshift; /* constante green para calculo truecolor */
int bshift; /* constante blue para calculo truecolor */
double xmatrix[6]; /* transformation matrix that includes axis inversion */
float rotate_angle;
int rotate_center_x,
rotate_center_y;
cdImage* image_dbuffer; /* utilizado pelo driver de Double buffer */
cdCanvas* canvas_dbuffer;
cdxContextPlus* ctxplus;
};
#define cdCOLOR8TO16(_x) (_x*257) /* 65535/255 = 257 */
#define cdCOLOR16TO8(_x) ((unsigned char)(_x/257))
extern unsigned long (*cdxGetPixel)(cdCtxCanvas *ctxcanvas, unsigned long rgb);
extern void (*cdxGetRGB)(cdCtxCanvas *ctxcanvas, unsigned long pixel,
unsigned char* red,
unsigned char* green,
unsigned char* blue);
cdCtxCanvas *cdxCreateCanvas(cdCanvas* canvas, Display *dpy, int scr, Drawable wnd, Visual *vis);
void cdxInitTable(cdCanvas* canvas);
void cdxKillCanvas(cdCtxCanvas *ctxcanvas);
int cdxClip(cdCtxCanvas *ctxcanvas, int clip_mode);
void cdxPoly(cdCtxCanvas *ctxcanvas, int mode, cdPoint* poly, int n);
#endif
|