1 #ifndef __win32_x11_h__
2 #define __win32_x11_h__
3 
4 /* Copyright (c) Nate Robins, 1997. */
5 
6 /* This program is freely distributable without licensing fees
7    and is provided without guarantee or warrantee expressed or
8    implied. This program is -not- in the public domain. */
9 
10 
11 #include <windows.h>
12 
13 
14 /* Type definitions (conversions) */
15 typedef int Visual;			/* Win32 equivalent of X11 type */
16 typedef HWND Window;
17 typedef HPALETTE Colormap;
18 typedef PIXELFORMATDESCRIPTOR XVisualInfo;
19 typedef BOOL Bool;
20 typedef MSG XEvent;
21 typedef HDC Display;
22 typedef HCURSOR Cursor;
23 
24 typedef int Atom;			/* dummies */
25 typedef int XDevice;
26 typedef int Status;
27 
28 #define True  TRUE			/* Win32 equivalents of X11 booleans */
29 #define False FALSE
30 
31 
32 #define None                 0L	/* universal null resource or null atom */
33 
34 /* Input Event Masks. Used as event-mask window attribute and as arguments
35    to Grab requests.  Not to be confused with event names.  */
36 
37 #define NoEventMask			0L
38 #define KeyPressMask			(1L<<0)
39 #define KeyReleaseMask			(1L<<1)
40 #define ButtonPressMask			(1L<<2)
41 #define ButtonReleaseMask		(1L<<3)
42 #define EnterWindowMask			(1L<<4)
43 #define LeaveWindowMask			(1L<<5)
44 #define PointerMotionMask		(1L<<6)
45 #define PointerMotionHintMask		(1L<<7)
46 #define Button1MotionMask		(1L<<8)
47 #define Button2MotionMask		(1L<<9)
48 #define Button3MotionMask		(1L<<10)
49 #define Button4MotionMask		(1L<<11)
50 #define Button5MotionMask		(1L<<12)
51 #define ButtonMotionMask		(1L<<13)
52 #define KeymapStateMask			(1L<<14)
53 #define ExposureMask			(1L<<15)
54 #define VisibilityChangeMask		(1L<<16)
55 #define StructureNotifyMask		(1L<<17)
56 #define ResizeRedirectMask		(1L<<18)
57 #define SubstructureNotifyMask		(1L<<19)
58 #define SubstructureRedirectMask	(1L<<20)
59 #define FocusChangeMask			(1L<<21)
60 #define PropertyChangeMask		(1L<<22)
61 #define ColormapChangeMask		(1L<<23)
62 #define OwnerGrabButtonMask		(1L<<24)
63 
64 /* Key masks. Used as modifiers to GrabButton and GrabKey, results of
65    QueryPointer, state in various key-, mouse-, and button-related
66    events. */
67 
68 #define ShiftMask		(1<<0)
69 #define LockMask		(1<<1)
70 #define ControlMask		(1<<2)
71 #define Mod1Mask		(1<<3)
72 #define Mod2Mask		(1<<4)
73 #define Mod3Mask		(1<<5)
74 #define Mod4Mask		(1<<6)
75 #define Mod5Mask		(1<<7)
76 
77 /* Window classes used by CreateWindow */
78 /* Note that CopyFromParent is already defined as 0 above */
79 
80 #define InputOutput		1
81 #define InputOnly		2
82 
83 /* Window attributes for CreateWindow and ChangeWindowAttributes */
84 
85 #define CWBackPixmap		(1L<<0)
86 #define CWBackPixel		(1L<<1)
87 #define CWBorderPixmap		(1L<<2)
88 #define CWBorderPixel           (1L<<3)
89 #define CWBitGravity		(1L<<4)
90 #define CWWinGravity		(1L<<5)
91 #define CWBackingStore          (1L<<6)
92 #define CWBackingPlanes	        (1L<<7)
93 #define CWBackingPixel	        (1L<<8)
94 #define CWOverrideRedirect	(1L<<9)
95 #define CWSaveUnder		(1L<<10)
96 #define CWEventMask		(1L<<11)
97 #define CWDontPropagate	        (1L<<12)
98 #define CWColormap		(1L<<13)
99 #define CWCursor	        (1L<<14)
100 
101 /* ConfigureWindow structure */
102 
103 #define CWX			(1<<0)
104 #define CWY			(1<<1)
105 #define CWWidth			(1<<2)
106 #define CWHeight		(1<<3)
107 #define CWBorderWidth		(1<<4)
108 #define CWSibling		(1<<5)
109 #define CWStackMode		(1<<6)
110 
111 
112 /* Used in GetWindowAttributes reply */
113 
114 #define IsUnmapped		0
115 #define IsUnviewable		1
116 #define IsViewable		2
117 
118 /* Window stacking method (in configureWindow) */
119 
120 #define Above                   0
121 #define Below                   1
122 #define TopIf                   2
123 #define BottomIf                3
124 #define Opposite                4
125 
126 /* For CreateColormap */
127 
128 #define AllocNone		0	/* create map with no entries */
129 #define AllocAll		1	/* allocate entire map writeable */
130 
131 
132 /* Flags used in StoreNamedColor, StoreColors */
133 
134 #define DoRed			(1<<0)
135 #define DoGreen			(1<<1)
136 #define DoBlue			(1<<2)
137 
138 /*
139  * Bitmask returned by XParseGeometry().  Each bit tells if the corresponding
140  * value (x, y, width, height) was found in the parsed string.
141  */
142 #define NoValue		0x0000
143 #define XValue  	0x0001
144 #define YValue		0x0002
145 #define WidthValue  	0x0004
146 #define HeightValue  	0x0008
147 #define AllValues 	0x000F
148 #define XNegative 	0x0010
149 #define YNegative 	0x0020
150 
151 /* flags argument in size hints */
152 #define USPosition	(1L << 0) /* user specified x, y */
153 #define USSize		(1L << 1) /* user specified width, height */
154 
155 /* definitions for initial window state */
156 #define WithdrawnState 0	/* for windows that are not mapped */
157 #define NormalState 1	/* most applications want to start this way */
158 #define IconicState 3	/* application wants to start as an icon */
159 
160 
161 /* Type definitions */
162 
163 typedef struct {
164     unsigned int background_pixmap;	/* background pixmap */
165     unsigned long background_pixel;	/* background pixel */
166     unsigned long border_pixel;	/* border pixel value */
167     long event_mask;		/* set of events that should be saved */
168     long do_not_propagate_mask;	/* set of events that should not propagate */
169     Bool override_redirect;	   /* boolean value for override-redirect */
170     Colormap colormap;		   /* color map to be associated with window */
171 } XSetWindowAttributes;
172 
173 typedef struct {
174   unsigned long pixel;
175   unsigned short red, green, blue;
176   char flags;  /* do_red, do_green, do_blue */
177 } XColor;
178 
179 typedef struct {
180   unsigned char *value;	   /* same as Property routines */
181   Atom encoding;	   /* prop type */
182   int format;		   /* prop data format: 8, 16, or 32 */
183   unsigned long nitems;	   /* number of data items in value */
184 } XTextProperty;
185 
186 typedef struct {
187   long flags;	        /* marks which fields in this structure are defined */
188   int x, y;		/* obsolete for new window mgrs, but clients */
189   int width, height;	/* should set so old wm's don't mess up */
190 } XSizeHints;
191 
192 
193 /* Function prototypes */
194 
195 Window
196 XCreateWindow(Display* display, Window parent, int x, int y,
197 	      unsigned int width, unsigned int height, unsigned int border,
198 	      int depth, unsigned int class, Visual* visual,
199 	      unsigned long valuemask, XSetWindowAttributes* attributes);
200 
201 XVisualInfo*
202 XGetVisualInfo(Display* display, long mask, XVisualInfo* template, int*nitems);
203 
204 Colormap
205 XCreateColormap(Display* display, Window root, Visual* visual, int alloc);
206 
207 void
208 XAllocColorCells(Display* display, Colormap colormap, Bool contig,
209 		 unsigned long plane_masks_return[], unsigned int nplanes,
210 		 unsigned long pixels_return[], unsigned int npixels);
211 
212 void
213 XStoreColor(Display* display, Colormap colormap, XColor* color);
214 
215 void
216 XSetWindowColormap(Display* display, Window window, Colormap colormap);
217 
218 void
219 XFreeColormap(Display* display, Colormap colormap);
220 
221 Cursor
222 XCreateFontCursor(Display* display, char* shape);
223 
224 void
225 XDefineCursor(Display* display, Window window, Cursor cursor);
226 
227 void
228 XFlush(Display* display);
229 
230 Bool
231 XTranslateCoordinates(Display *display, Window src, Window dst,
232 		      int src_x, int src_y,
233 		      int* dest_x_return, int* dest_y_return,
234 		      Window* child_return);
235 
236 Status
237 XGetGeometry(Display* display, Window window, Window* root_return,
238 	     int* x_return, int* y_return,
239 	     unsigned int* width_return, unsigned int* height_return,
240 	     unsigned int *border_width_return, unsigned int* depth_return);
241 
242 int
243 DisplayWidth(Display* display, int screen);
244 
245 int
246 DisplayHeight(Display* display, int screen);
247 
248 int
249 DisplayWidthMM(Display* display, int screen);
250 
251 int
252 DisplayHeightMM(Display* display, int screen);
253 
254 void
255 XMapWindow(Display* display, Window window);
256 
257 void
258 XUnmapWindow(Display* display, Window window);
259 
260 void
261 XIconifyWindow(Display* display, Window window, int screen);
262 
263 void
264 XWithdrawWindow(Display* display, Window window, int screen);
265 
266 void
267 XLowerWindow(Display* display, Window window);
268 
269 void
270 XWarpPointer(Display* display, Window src, Window dst,
271 	     int src_x, int src_y, int src_width, int src_height,
272 	     int dst_x, int dst_y);
273 
274 void
275 XSetWMName(Display* display, Window window, XTextProperty *tp);
276 
277 void
278 XSetWMIconName(Display* display, Window window, XTextProperty *tp);
279 
280 int
281 XPending(Display* display);
282 
283 void
284 XDestroyWindow(Display* display, Window window);
285 
286 void
287 XFree(void* data);
288 
289 void
290 XUngrabPointer(Display* display, int time);
291 
292 int
293 XParseGeometry(char* string, int* x, int* y,
294 	       unsigned int* width, unsigned int* height);
295 
296 #endif /* __win32_x11_h__ */
297