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