1 #ifndef XWRAP_H_HEADER_INCLUDED
2 #define XWRAP_H_HEADER_INCLUDED
3 
4 #if !defined(X_DISPLAY_MISSING)
5 # include <X11/Xlib.h>
6 # include <X11/Xutil.h>
7 # include <X11/Xmd.h>
8 # include <X11/Xatom.h>
9 # include <X11/Xproto.h>
10 # include <X11/Xresource.h>
11 
12 #else
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 # define Display  void
19 # ifndef Bool
20 #  define Bool int
21 # endif
22 # ifndef True
23 #  define True 1
24 # endif
25 # ifndef False
26 #  define False 0
27 # endif
28 
29 #ifdef HAVE_STDINT_H
30 # include <stdint.h>
31 # ifndef CARD32
32 #  define CARD32 uint32_t
33 # endif
34 # ifndef CARD16
35 #  define CARD16 uint16_t
36 # endif
37 # ifndef CARD8
38 #  define CARD8  uint8_t
39 # endif
40 #endif
41 
42 # ifndef CARD32
43 #  define CARD32 unsigned int
44 # endif
45 # ifndef CARD16
46 #  define CARD16 unsigned short
47 # endif
48 # ifndef CARD8
49 #  define CARD8 unsigned char
50 # endif
51 
52 # ifndef XID
53 #  define XID XID
54    typedef CARD32 XID;
55 # endif
56 
57 # ifndef Drawable
58 #  define Drawable   Drawable
59    typedef XID Drawable;
60 # endif
61 # ifndef Atom
62 #  define Atom       Atom
63    typedef XID Atom;
64 # endif
65 # ifndef Window
66 #  define Window     Window
67    typedef XID Window;
68 # endif
69 # ifndef Pixmap
70 #  define Pixmap     Pixmap
71    typedef XID Pixmap;
72 # endif
73 # ifndef Font
74 #  define Font       Font
75    typedef XID Font;
76 # endif
77 # ifndef Colormap
78 #  define Colormap   Colormap
79    typedef XID Colormap;
80 # endif
81 # ifndef Cursor
82 #  define Cursor     Cursor
83    typedef XID Cursor;
84 # endif
85 # ifndef VisualID
86 #  define VisualID   VisualID
87    typedef XID VisualID;
88 # endif
89 
90 # ifndef GC
91 #  define GC GC
92    typedef void* GC;
93 # endif
94 
95 # ifndef None
96 #  define None 0
97 # endif
98 
99 typedef struct {
100 	int function;		/* logical operation */
101 	unsigned long plane_mask;/* plane mask */
102 	unsigned long foreground;/* foreground pixel */
103 	unsigned long background;/* background pixel */
104 	int line_width;		/* line width */
105 	int line_style;	 	/* LineSolid, LineOnOffDash, LineDoubleDash */
106 	int cap_style;	  	/* CapNotLast, CapButt,
107 				   CapRound, CapProjecting */
108 	int join_style;	 	/* JoinMiter, JoinRound, JoinBevel */
109 	int fill_style;	 	/* FillSolid, FillTiled,
110 				   FillStippled, FillOpaeueStippled */
111 	int fill_rule;	  	/* EvenOddRule, WindingRule */
112 	int arc_mode;		/* ArcChord, ArcPieSlice */
113 	Pixmap tile;		/* tile pixmap for tiling operations */
114 	Pixmap stipple;		/* stipple 1 plane pixmap for stipping */
115 	int ts_x_origin;	/* offset for tile or stipple operations */
116 	int ts_y_origin;
117         Font font;	        /* default text font for text operations */
118 	int subwindow_mode;     /* ClipByChildren, IncludeInferiors */
119 	Bool graphics_exposures;/* boolean, should exposures be generated */
120 	int clip_x_origin;	/* origin for clipping */
121 	int clip_y_origin;
122 	Pixmap clip_mask;	/* bitmap clipping; other calls for rects */
123 	int dash_offset;	/* patterned/dashed line information */
124 	char dashes;
125 } XGCValues;
126 
127 typedef struct {
128     unsigned char *value;		/* same as Property routines */
129     Atom encoding;			/* prop type */
130     int format;				/* prop data format: 8, 16, or 32 */
131     unsigned long nitems;		/* number of data items in value */
132 } XTextProperty;
133 
134 typedef struct {
135 	void *ext_data;	/* hook for extension to hang data */
136 	XID visualid;	/* visual id of this visual */
137 # if defined(__cplusplus) || defined(c_plusplus)
138 	int c_class;		/* C++ class of screen (monochrome, etc.) */
139 # else
140 	int class;		/* class of screen (monochrome, etc.) */
141 # endif
142 	unsigned long red_mask, green_mask, blue_mask;	/* mask values */
143 	int bits_per_rgb;	/* log base 2 of distinct color values */
144 	int map_entries;	/* color map entries */
145 } Visual;
146 
147 typedef struct {
148   Visual *visual;
149   VisualID visualid;
150   int screen;
151   int depth;
152 # if defined(__cplusplus) || defined(c_plusplus)
153   int c_class;					/* C++ */
154 # else
155   int class;
156 # endif
157   unsigned long red_mask;
158   unsigned long green_mask;
159   unsigned long blue_mask;
160   int colormap_size;
161   int bits_per_rgb;
162 } XVisualInfo;
163 
164 typedef struct _XImage {
165     int width, height;		/* size of image */
166     int xoffset;		/* number of pixels offset in X direction */
167     int format;			/* XYBitmap, XYPixmap, ZPixmap */
168     char *data;			/* pointer to image data */
169     int byte_order;		/* data byte order, LSBFirst, MSBFirst */
170     int bitmap_unit;		/* quant. of scanline 8, 16, 32 */
171     int bitmap_bit_order;	/* LSBFirst, MSBFirst */
172     int bitmap_pad;		/* 8, 16, 32 either XY or ZPixmap */
173     int depth;			/* depth of image */
174     int bytes_per_line;		/* accelarator to next line */
175     int bits_per_pixel;		/* bits per pixel (ZPixmap) */
176     unsigned long red_mask;	/* bits in z arrangment */
177     unsigned long green_mask;
178     unsigned long blue_mask;
179     void *obdata;		/* hook for the object routines to hang on */
180     struct funcs {		/* image manipulation routines */
181 # if NeedFunctionPrototypes
182 	struct _XImage *(*create_image)(
183 		void* /* display */,
184 		void*		/* visual */,
185 		unsigned int	/* depth */,
186 		int		/* format */,
187 		int		/* offset */,
188 		char*		/* data */,
189 		unsigned int	/* width */,
190 		unsigned int	/* height */,
191 		int		/* bitmap_pad */,
192 		int		/* bytes_per_line */);
193 	int (*destroy_image)        (struct _XImage *);
194 	unsigned long (*get_pixel)  (struct _XImage *, int, int);
195 	int (*put_pixel)            (struct _XImage *, int, int, unsigned long);
196 	struct _XImage *(*sub_image)(struct _XImage *, int, int, unsigned int, unsigned int);
197 	int (*add_pixel)            (struct _XImage *, long);
198 # else
199 	struct _XImage *(*create_image)();
200 	int (*destroy_image)();
201 	unsigned long (*get_pixel)();
202 	int (*put_pixel)();
203 	struct _XImage *(*sub_image)();
204 	int (*add_pixel)();
205 # endif
206 	} f;
207 } XImage;
208 
209 typedef struct {
210     Pixmap background_pixmap;	/* background or None or ParentRelative */
211     unsigned long background_pixel;	/* background pixel */
212     Pixmap border_pixmap;	/* border of the window */
213     unsigned long border_pixel;	/* border pixel value */
214     int bit_gravity;		/* one of bit gravity values */
215     int win_gravity;		/* one of the window gravity values */
216     int backing_store;		/* NotUseful, WhenMapped, Always */
217     unsigned long backing_planes;/* planes to be preseved if possible */
218     unsigned long backing_pixel;/* value to use in restoring planes */
219     Bool save_under;		/* should bits under be saved? (popups) */
220     long event_mask;		/* set of events that should be saved */
221     long do_not_propagate_mask;	/* set of events that should not propagate */
222     Bool override_redirect;	/* boolean value for override-redirect */
223     Colormap colormap;		/* color map to be associated with window */
224     Cursor cursor;		/* cursor to be displayed (or None) */
225 } XSetWindowAttributes;
226 
227 typedef struct {
228 	unsigned long pixel;
229 	unsigned short red, green, blue;
230 	char flags;  /* do_red, do_green, do_blue */
231 	char pad;
232 } XColor;
233 
234 int XParseGeometry (  char *string,int *x,int *y,
235                       unsigned int *width,    /* RETURN */
236 					  unsigned int *height);    /* RETURN */
237 
238 /* needed by above function : */
239 # define NoValue		0x0000
240 # define XValue  	0x0001
241 # define YValue		0x0002
242 # define WidthValue  	0x0004
243 # define HeightValue  	0x0008
244 # define AllValues 	0x000F
245 # define XNegative 	0x0010
246 # define YNegative 	0x0020
247 
248 # ifdef __cplusplus
249 }
250 # endif
251 
252 #endif                         /* X_DISPLAY_MISSING */
253 
254 # ifdef __cplusplus
255 extern "C" {
256 # endif
257 
258 # if defined(ASIM_AFTERBASE_H_HEADER_INCLUDED)
259 
260 int asim_get_drawable_size (Drawable d, unsigned int *ret_w, unsigned int *ret_h);
261 #   define get_drawable_size(d,w,h) asim_get_drawable_size((d),(w),(h))
262 
263 # else
264 
265 int grab_server();
266 int ungrab_server();
267 Bool is_server_grabbed();
268 
269 
270 Bool     get_drawable_size (Drawable d, unsigned int *ret_w, unsigned int *ret_h);
271 Drawable validate_drawable (Drawable d, unsigned int *pwidth, unsigned int *pheight);
272 void 	 backtrace_window ( const char *file, int line, Window w );
273 
274 Window get_parent_window( Window w );
275 Window get_topmost_parent( Window w, Window *desktop_w );
276 
277 # endif
278 
279 # ifdef __cplusplus
280 }
281 # endif
282 
283 #endif
284