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