1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * (c) 1995-98 Artsoft Entertainment *
8 * phone: ++49 +521 290471 *
9 * email: aeglos@valinor.owl.de *
10 *----------------------------------------------------------*
12 ***********************************************************/
14 #ifndef XPM_INCLUDE_FILE
15 #define XPM_INCLUDE_FILE
27 // Allegro keyboard mapping
29 #define OSD_KEY_ESC 1 /* keyboard scan codes */
30 #define OSD_KEY_1 2 /* (courtesy of allegro.h) */
40 #define OSD_KEY_MINUS 12
41 #define OSD_KEY_EQUALS 13
42 #define OSD_KEY_BACKSPACE 14
43 #define OSD_KEY_TAB 15
54 #define OSD_KEY_OPENBRACE 26
55 #define OSD_KEY_CLOSEBRACE 27
56 #define OSD_KEY_ENTER 28
57 #define OSD_KEY_LCONTROL 29
67 #define OSD_KEY_COLON 39
68 #define OSD_KEY_QUOTE 40
69 #define OSD_KEY_TILDE 41
70 #define OSD_KEY_LSHIFT 42
79 #define OSD_KEY_COMMA 51
80 #define OSD_KEY_STOP 52
81 #define OSD_KEY_SLASH 53
82 #define OSD_KEY_RSHIFT 54
83 #define OSD_KEY_ASTERISK 55
84 #define OSD_KEY_ALT 56
85 #define OSD_KEY_SPACE 57
86 #define OSD_KEY_CAPSLOCK 58
96 #define OSD_KEY_F10 68
97 #define OSD_KEY_NUMLOCK 69
98 #define OSD_KEY_SCRLOCK 70
99 #define OSD_KEY_HOME 71
100 #define OSD_KEY_UP 72
101 #define OSD_KEY_PGUP 73
102 #define OSD_KEY_MINUS_PAD 74
103 #define OSD_KEY_LEFT 75
104 #define OSD_KEY_5_PAD 76
105 #define OSD_KEY_RIGHT 77
106 #define OSD_KEY_PLUS_PAD 78
107 #define OSD_KEY_END 79
108 #define OSD_KEY_DOWN 80
109 #define OSD_KEY_PGDN 81
110 #define OSD_KEY_INSERT 82
111 #define OSD_KEY_DEL 83
112 #define OSD_KEY_RCONTROL 84 /* different from Allegro */
113 #define OSD_KEY_ALTGR 85 /* different from Allegro */
115 #define OSD_KEY_F11 87
116 #define OSD_KEY_F12 88
117 #define OSD_KEY_COMMAND 89
118 #define OSD_KEY_OPTION 90
120 /* The following are all undefined in Allegro */
121 #define OSD_KEY_1_PAD 101
122 #define OSD_KEY_2_PAD 102
123 #define OSD_KEY_3_PAD 103
124 #define OSD_KEY_4_PAD 104
126 #define OSD_KEY_6_PAD 106
127 #define OSD_KEY_7_PAD 107
128 #define OSD_KEY_8_PAD 108
129 #define OSD_KEY_9_PAD 109
130 #define OSD_KEY_0_PAD 110
131 #define OSD_KEY_STOP_PAD 111
132 #define OSD_KEY_EQUALS_PAD 112
133 #define OSD_KEY_SLASH_PAD 113
134 #define OSD_KEY_ASTER_PAD 114
135 #define OSD_KEY_ENTER_PAD 115
137 #define OSD_MAX_KEY 115
139 // X11 keyboard mapping
141 #define XK_KP_Enter OSD_KEY_ENTER_PAD
142 #define XK_KP_0 OSD_KEY_0_PAD
143 #define XK_KP_1 OSD_KEY_1_PAD
144 #define XK_KP_2 OSD_KEY_2_PAD
145 #define XK_KP_3 OSD_KEY_3_PAD
146 #define XK_KP_4 OSD_KEY_4_PAD
147 #define XK_KP_6 OSD_KEY_6_PAD
148 #define XK_KP_7 OSD_KEY_7_PAD
149 #define XK_KP_8 OSD_KEY_8_PAD
150 #define XK_KP_9 OSD_KEY_9_PAD
152 #define XK_KP_Home OSD_KEY_7_PAD
153 #define XK_KP_Page_Up OSD_KEY_9_PAD
154 #define XK_KP_Page_Down OSD_KEY_3_PAD
155 #define XK_KP_End OSD_KEY_1_PAD
156 #define XK_KP_Left OSD_KEY_4_PAD
157 #define XK_KP_Up OSD_KEY_8_PAD
158 #define XK_KP_Right OSD_KEY_6_PAD
159 #define XK_KP_Down OSD_KEY_2_PAD
161 #define XK_0 OSD_KEY_1
162 #define XK_1 OSD_KEY_2
163 #define XK_2 OSD_KEY_3
164 #define XK_3 OSD_KEY_4
165 #define XK_4 OSD_KEY_5
166 #define XK_5 OSD_KEY_6
167 #define XK_6 OSD_KEY_7
168 #define XK_7 OSD_KEY_8
169 #define XK_8 OSD_KEY_9
170 #define XK_9 OSD_KEY_0
171 #define XK_A OSD_KEY_A
172 #define XK_B OSD_KEY_B
173 #define XK_C OSD_KEY_C
174 #define XK_D OSD_KEY_D
175 #define XK_E OSD_KEY_E
176 #define XK_F OSD_KEY_F
177 #define XK_G OSD_KEY_G
178 #define XK_H OSD_KEY_H
179 #define XK_I OSD_KEY_I
180 #define XK_J OSD_KEY_J
181 #define XK_K OSD_KEY_K
182 #define XK_L OSD_KEY_L
183 #define XK_M OSD_KEY_M
184 #define XK_N OSD_KEY_N
185 #define XK_O OSD_KEY_O
186 #define XK_P OSD_KEY_P
187 #define XK_Q OSD_KEY_Q
188 #define XK_R OSD_KEY_R
189 #define XK_S OSD_KEY_S
190 #define XK_T OSD_KEY_T
191 #define XK_U OSD_KEY_U
192 #define XK_V OSD_KEY_V
193 #define XK_W OSD_KEY_W
194 #define XK_X OSD_KEY_X
195 #define XK_Y OSD_KEY_Y
196 #define XK_Z OSD_KEY_Z
197 #define XK_a OSD_KEY_A
198 #define XK_b OSD_KEY_B
199 #define XK_c OSD_KEY_C
200 #define XK_d OSD_KEY_D
201 #define XK_e OSD_KEY_E
202 #define XK_f OSD_KEY_F
203 #define XK_g OSD_KEY_G
204 #define XK_h OSD_KEY_H
205 #define XK_i OSD_KEY_I
206 #define XK_j OSD_KEY_J
207 #define XK_k OSD_KEY_K
208 #define XK_l OSD_KEY_L
209 #define XK_m OSD_KEY_M
210 #define XK_n OSD_KEY_N
211 #define XK_o OSD_KEY_O
212 #define XK_p OSD_KEY_P
213 #define XK_q OSD_KEY_Q
214 #define XK_r OSD_KEY_R
215 #define XK_s OSD_KEY_S
216 #define XK_t OSD_KEY_T
217 #define XK_u OSD_KEY_U
218 #define XK_v OSD_KEY_V
219 #define XK_w OSD_KEY_W
220 #define XK_x OSD_KEY_X
221 #define XK_y OSD_KEY_Y
222 #define XK_z OSD_KEY_Z
223 #define XK_Return OSD_KEY_ENTER
224 #define XK_Escape OSD_KEY_ESC
225 #define XK_Shift_L OSD_KEY_LSHIFT
226 #define XK_Shift_R OSD_KEY_RSHIFT
227 #define XK_Left OSD_KEY_LEFT
228 #define XK_Up OSD_KEY_UP
229 #define XK_Right OSD_KEY_RIGHT
230 #define XK_Down OSD_KEY_DOWN
231 #define XK_BackSpace OSD_KEY_BACKSPACE
232 #define XK_Delete OSD_KEY_DEL
233 #define XK_Space OSD_KEY_SPACE
234 #define XK_F12 OSD_KEY_F12
235 #define XK_F11 OSD_KEY_F11
236 #define XK_F10 OSD_KEY_F10
238 #define MOUSE_FILENAME "graphics\\mouse.gif"
239 #define screen myscreen
243 #define XSetClipOrigin(a,b,c,d)
244 #define XGetImage(a,b,c,d,e,f,g,h) ((XImage *) NULL)
245 #define XAutoRepeatOn(a)
246 #define XAutoRepeatOff(a)
247 #define XDisplayName(a) ((char *) NULL)
248 #define XFreeColors(a,b,c,d,e)
249 #define XpmFreeAttributes(a)
250 #define XSelectInput(a,b,c)
251 #define XDefaultDepth(a,b) (8)
252 #define XSetWMProperties(a,b,c,d,e,f,g,h,i)
254 #define MAX_EVENT_BUFFER 256
261 #define DUMMY_FILE (void*) -1
262 #define DUMMY_MASK -1
264 #define KeyPressMask (1L<<0)
265 #define KeyReleaseMask (1L<<1)
266 #define ButtonPressMask (1L<<2)
267 #define ButtonReleaseMask (1L<<3)
268 #define ButtonMotionMask (1L<<13)
269 #define ExposureMask (1L<<15)
270 #define StructureNotifyMask (1L<<17)
271 #define FocusChangeMask (1L<<21)
275 #define ButtonPress 4
276 #define ButtonRelease 5
277 #define MotionNotify 6
281 #define UnmapNotify 18
284 #define GCForeground (1L<<2)
285 #define GCBackground (1L<<3)
286 #define GCGraphicsExposures (1L<<16)
287 #define GCClipMask (1L<<19)
289 #define NormalState 1 /* most applications want to start this way */
290 #define InputHint (1L << 0)
291 #define StateHint (1L << 1)
292 #define IconPixmapHint (1L << 2)
293 #define IconMaskHint (1L << 5)
294 #define PSize (1L << 3) /* program specified size */
295 #define PMinSize (1L << 4) /* program specified minimum size */
296 #define PMaxSize (1L << 5) /* program specified maximum size */
299 #define XpmOpenFailed -1
300 #define XpmFileInvalid -2
301 #define XpmNoMemory -3
302 #define XpmColorFailed -4
303 #define XpmCloseness (1L<<12)
305 #define BitmapSuccess 0
306 #define BitmapOpenFailed 1
307 #define BitmapFileInvalid 2
308 #define BitmapNoMemory 3
310 #define ZPixmap 2 /* depth == drawable depth */
312 #define DefaultScreen(dpy) (((_XPrivDisplay)dpy)->default_screen)
313 #define DefaultColormap(dpy, scr)(ScreenOfDisplay(dpy,scr)->cmap)
314 #define ScreenOfDisplay(dpy, scr)(&((_XPrivDisplay)dpy)->screens[scr])
315 #define BlackPixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->black_pixel)
316 #define WhitePixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->white_pixel)
317 #define RootWindow(dpy, scr) (ScreenOfDisplay(dpy,scr)->root)
318 #define AllPlanes ((unsigned long)~0L)
320 #define XGetPixel(ximage, x, y) \
321 ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
323 typedef unsigned long Pixel; /* Index into colormap */
324 typedef unsigned long XID;
326 typedef XID Drawable;
328 typedef XID Colormap;
330 typedef XID GContext;
331 typedef struct _XDisplay Display;
335 GContext gid; /* protocol ID for graphics context */
339 Colormap cmap; /* default color map */
340 Window root; /* Root window id. */
341 unsigned long white_pixel;
342 unsigned long black_pixel; /* White and Black pixel values */
347 BITMAP *video_bitmap;
350 typedef struct _XDisplay
352 int default_screen; /* default screen for operations */
353 Screen *screens; /* pointer to list of screens */
357 typedef struct _XImage {
359 unsigned long (*get_pixel) (struct _XImage *, int, int);
364 long flags; /* marks which fields in this structure are defined */
365 int width, height; /* should set so old wm's don't mess up */
366 int min_width, min_height;
367 int max_width, max_height;
371 long flags; /* marks which fields in this structure are defined */
372 Bool input; /* does this application rely on the window manager to
373 get keyboard input? */
374 int initial_state; /* see below */
375 Pixmap icon_pixmap; /* pixmap to be used as icon */
376 Pixmap icon_mask; /* icon mask bitmap */
385 unsigned char *value; /* same as Property routines */
389 unsigned long foreground;/* foreground pixel */
390 unsigned long background;/* background pixel */
391 Bool graphics_exposures;/* boolean, should exposures be generated */
392 Pixmap clip_mask; /* bitmap clipping; other calls for rects */
393 int clip_x_origin; /* origin for clipping */
395 unsigned long value_mask;
399 unsigned long valuemask; /* Specifies which attributes are */
400 unsigned int closeness; /* Allowable RGB deviation */
401 Pixel *pixels; /* List of used color pixels */
402 unsigned int npixels; /* Number of used pixels */
412 int type; /* of event */
413 int x, y; /* pointer x, y coordinates in event window */
414 unsigned int button; /* detail */
419 int x, y; /* pointer x, y coordinates in event window */
423 int type; /* of event */
424 unsigned int state; /* key or button mask */
428 int type; /* FocusIn or FocusOut */
432 typedef union _XEvent {
433 int type; /* must not be changed; first element */
434 XExposeEvent xexpose;
435 XButtonEvent xbutton;
436 XMotionEvent xmotion;
441 extern void XMapWindow(Display*, Window);
442 //extern void XFlush(Display*);
443 extern Display *XOpenDisplay(char*);
444 //extern char *XDisplayName(char*);
445 extern Window XCreateSimpleWindow(Display*, Window, int, int, unsigned int, unsigned int, unsigned int, unsigned long, unsigned long);
446 extern int XReadBitmapFile(Display*, Drawable, char*, unsigned int*, unsigned int*, Pixmap*, int*, int*);
447 extern Status XStringListToTextProperty(char**, int, XTextProperty*);
448 //extern void XSetWMProperties(Display*, Window, XTextProperty*, XTextProperty*, char**, int, XSizeHints*, XWMHints*, XClassHint*);
449 extern void XFree(void*);
450 //extern void XSelectInput(Display*, Window, long);
451 extern GC XCreateGC(Display*, Drawable, unsigned long, XGCValues*);
452 extern void XFillRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int);
453 extern Pixmap XCreatePixmap(Display*, Drawable, unsigned int, unsigned int, unsigned int);
454 //extern int XDefaultDepth(Display*, int);
455 extern inline void XCopyArea(Display*, Drawable, Drawable, GC, int, int, unsigned int, unsigned int, int, int);
456 extern int XpmReadFileToPixmap(Display*, Drawable, char*, Pixmap*, Pixmap*, XpmAttributes*);
457 //extern void XFreeColors(Display*, Colormap, unsigned long*, int, unsigned long);
458 //extern void XpmFreeAttributes(XpmAttributes*);
459 extern void XFreePixmap(Display*, Pixmap);
460 extern void XFreeGC(Display*, GC);
461 extern void XCloseDisplay(Display*);
462 extern int XPending(Display*);
463 extern void XNextEvent(Display*, XEvent*);
464 //extern void XSync(Display*, Bool);
465 //extern void XAutoRepeatOn(Display*);
466 //extern void XAutoRepeatOff(Display*);
467 extern KeySym XLookupKeysym(XKeyEvent*, int);
468 //extern void XSetClipOrigin(Display*, GC, int, int);
469 //extern XImage *XGetImage(Display*, Drawable, int, int, unsigned int, unsigned int, unsigned long, int);
471 BITMAP *load_gif(char *filename, RGB *pal);