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 ***********************************************************/
21 /* Allegro keyboard mapping */
23 #define OSD_KEY_ESC 1 /* keyboard scan codes */
24 #define OSD_KEY_1 2 /* (courtesy of allegro.h) */
34 #define OSD_KEY_MINUS 12
35 #define OSD_KEY_EQUALS 13
36 #define OSD_KEY_BACKSPACE 14
37 #define OSD_KEY_TAB 15
48 #define OSD_KEY_OPENBRACE 26
49 #define OSD_KEY_CLOSEBRACE 27
50 #define OSD_KEY_ENTER 28
51 #define OSD_KEY_LCONTROL 29
61 #define OSD_KEY_COLON 39
62 #define OSD_KEY_QUOTE 40
63 #define OSD_KEY_TILDE 41
64 #define OSD_KEY_LSHIFT 42
73 #define OSD_KEY_COMMA 51
74 #define OSD_KEY_STOP 52
75 #define OSD_KEY_SLASH 53
76 #define OSD_KEY_RSHIFT 54
77 #define OSD_KEY_ASTERISK 55
78 #define OSD_KEY_ALT 56
79 #define OSD_KEY_SPACE 57
80 #define OSD_KEY_CAPSLOCK 58
90 #define OSD_KEY_F10 68
91 #define OSD_KEY_NUMLOCK 69
92 #define OSD_KEY_SCRLOCK 70
93 #define OSD_KEY_HOME 71
95 #define OSD_KEY_PGUP 73
96 #define OSD_KEY_MINUS_PAD 74
97 #define OSD_KEY_LEFT 75
98 #define OSD_KEY_5_PAD 76
99 #define OSD_KEY_RIGHT 77
100 #define OSD_KEY_PLUS_PAD 78
101 #define OSD_KEY_END 79
102 #define OSD_KEY_DOWN 80
103 #define OSD_KEY_PGDN 81
104 #define OSD_KEY_INSERT 82
105 #define OSD_KEY_DEL 83
106 #define OSD_KEY_RCONTROL 84 /* different from Allegro */
107 #define OSD_KEY_ALTGR 85 /* different from Allegro */
109 #define OSD_KEY_F11 87
110 #define OSD_KEY_F12 88
111 #define OSD_KEY_COMMAND 89
112 #define OSD_KEY_OPTION 90
114 /* The following are all undefined in Allegro */
115 #define OSD_KEY_1_PAD 101
116 #define OSD_KEY_2_PAD 102
117 #define OSD_KEY_3_PAD 103
118 #define OSD_KEY_4_PAD 104
120 #define OSD_KEY_6_PAD 106
121 #define OSD_KEY_7_PAD 107
122 #define OSD_KEY_8_PAD 108
123 #define OSD_KEY_9_PAD 109
124 #define OSD_KEY_0_PAD 110
125 #define OSD_KEY_STOP_PAD 111
126 #define OSD_KEY_EQUALS_PAD 112
127 #define OSD_KEY_SLASH_PAD 113
128 #define OSD_KEY_ASTER_PAD 114
129 #define OSD_KEY_ENTER_PAD 115
131 #define OSD_MAX_KEY 115
133 /* X11 keyboard mapping */
135 #define XK_KP_Enter OSD_KEY_ENTER_PAD
136 #define XK_KP_0 OSD_KEY_0_PAD
137 #define XK_KP_1 OSD_KEY_1_PAD
138 #define XK_KP_2 OSD_KEY_2_PAD
139 #define XK_KP_3 OSD_KEY_3_PAD
140 #define XK_KP_4 OSD_KEY_4_PAD
141 #define XK_KP_6 OSD_KEY_6_PAD
142 #define XK_KP_7 OSD_KEY_7_PAD
143 #define XK_KP_8 OSD_KEY_8_PAD
144 #define XK_KP_9 OSD_KEY_9_PAD
146 #define XK_KP_Home OSD_KEY_7_PAD
147 #define XK_KP_Page_Up OSD_KEY_9_PAD
148 #define XK_KP_Page_Down OSD_KEY_3_PAD
149 #define XK_KP_End OSD_KEY_1_PAD
150 #define XK_KP_Left OSD_KEY_4_PAD
151 #define XK_KP_Up OSD_KEY_8_PAD
152 #define XK_KP_Right OSD_KEY_6_PAD
153 #define XK_KP_Down OSD_KEY_2_PAD
155 #define XK_0 OSD_KEY_1
156 #define XK_1 OSD_KEY_2
157 #define XK_2 OSD_KEY_3
158 #define XK_3 OSD_KEY_4
159 #define XK_4 OSD_KEY_5
160 #define XK_5 OSD_KEY_6
161 #define XK_6 OSD_KEY_7
162 #define XK_7 OSD_KEY_8
163 #define XK_8 OSD_KEY_9
164 #define XK_9 OSD_KEY_0
165 #define XK_A OSD_KEY_A
166 #define XK_B OSD_KEY_B
167 #define XK_C OSD_KEY_C
168 #define XK_D OSD_KEY_D
169 #define XK_E OSD_KEY_E
170 #define XK_F OSD_KEY_F
171 #define XK_G OSD_KEY_G
172 #define XK_H OSD_KEY_H
173 #define XK_I OSD_KEY_I
174 #define XK_J OSD_KEY_J
175 #define XK_K OSD_KEY_K
176 #define XK_L OSD_KEY_L
177 #define XK_M OSD_KEY_M
178 #define XK_N OSD_KEY_N
179 #define XK_O OSD_KEY_O
180 #define XK_P OSD_KEY_P
181 #define XK_Q OSD_KEY_Q
182 #define XK_R OSD_KEY_R
183 #define XK_S OSD_KEY_S
184 #define XK_T OSD_KEY_T
185 #define XK_U OSD_KEY_U
186 #define XK_V OSD_KEY_V
187 #define XK_W OSD_KEY_W
188 #define XK_X OSD_KEY_X
189 #define XK_Y OSD_KEY_Y
190 #define XK_Z OSD_KEY_Z
191 #define XK_a OSD_KEY_A
192 #define XK_b OSD_KEY_B
193 #define XK_c OSD_KEY_C
194 #define XK_d OSD_KEY_D
195 #define XK_e OSD_KEY_E
196 #define XK_f OSD_KEY_F
197 #define XK_g OSD_KEY_G
198 #define XK_h OSD_KEY_H
199 #define XK_i OSD_KEY_I
200 #define XK_j OSD_KEY_J
201 #define XK_k OSD_KEY_K
202 #define XK_l OSD_KEY_L
203 #define XK_m OSD_KEY_M
204 #define XK_n OSD_KEY_N
205 #define XK_o OSD_KEY_O
206 #define XK_p OSD_KEY_P
207 #define XK_q OSD_KEY_Q
208 #define XK_r OSD_KEY_R
209 #define XK_s OSD_KEY_S
210 #define XK_t OSD_KEY_T
211 #define XK_u OSD_KEY_U
212 #define XK_v OSD_KEY_V
213 #define XK_w OSD_KEY_W
214 #define XK_x OSD_KEY_X
215 #define XK_y OSD_KEY_Y
216 #define XK_z OSD_KEY_Z
217 #define XK_Return OSD_KEY_ENTER
218 #define XK_Escape OSD_KEY_ESC
219 #define XK_Shift_L OSD_KEY_LSHIFT
220 #define XK_Shift_R OSD_KEY_RSHIFT
221 #define XK_Left OSD_KEY_LEFT
222 #define XK_Up OSD_KEY_UP
223 #define XK_Right OSD_KEY_RIGHT
224 #define XK_Down OSD_KEY_DOWN
225 #define XK_BackSpace OSD_KEY_BACKSPACE
226 #define XK_Delete OSD_KEY_DEL
227 #define XK_Space OSD_KEY_SPACE
228 #define XK_F12 OSD_KEY_F12
229 #define XK_F11 OSD_KEY_F11
230 #define XK_F10 OSD_KEY_F10
234 #define XK_KP_Add OSD_KEY_PLUS_PAD
235 #define XK_KP_Subtract OSD_KEY_MINUS_PAD
236 #define XK_KP_Multiply OSD_KEY_ASTER_PAD
237 #define XK_KP_Divide OSD_KEY_SLASH_PAD
238 #define XK_KP_Separator OSD_KEY_STOP_PAD
239 #define XK_Control_L OSD_KEY_LCONTROL
240 #define XK_Control_R OSD_KEY_RCONTROL
241 #define XK_Meta_L OSD_KEY_ALT
242 #define XK_Meta_R OSD_KEY_ALTGR
243 #define XK_Alt_L OSD_KEY_ALT
244 #define XK_Alt_R OSD_KEY_ALTGR
245 #define XK_Mode_switch 0 /* unknown in allegro */
246 #define XK_Multi_key 0 /* unknown in allegro */
247 #define XK_Insert OSD_KEY_INSERT
248 #define XK_Tab OSD_KEY_TAB
249 #define XK_Home OSD_KEY_HOME
250 #define XK_End OSD_KEY_END
251 #define XK_Page_Up OSD_KEY_PGUP
252 #define XK_Page_Down OSD_KEY_PGDN
253 #define XK_space OSD_KEY_SPACE
254 #define XK_adiaeresis 0 /* unknown in allegro */
255 #define XK_odiaeresis 0 /* unknown in allegro */
256 #define XK_udiaeresis 0 /* unknown in allegro */
257 #define XK_apostrophe 0 /* unknown in allegro */
258 #define XK_plus 0 /* unknown in allegro */
259 #define XK_minus OSD_KEY_MINUS
260 #define XK_comma OSD_KEY_COMMA
261 #define XK_period OSD_KEY_STOP
262 #define XK_numbersign 0 /* unknown in allegro */
263 #define XK_less 0 /* unknown in allegro */
264 #define XK_greater 0 /* unknown in allegro */
265 #define XK_asciicircum 0 /* unknown in allegro */
266 #define XK_ssharp 0 /* unknown in allegro */
267 #define XK_F1 0 /* unknown in allegro */
268 #define XK_F24 0 /* unknown in allegro */
269 #define XK_VoidSymbol 0 /* unknown in allegro */
273 #define MOUSE_GIF_FILENAME "graphics\\mouse.gif"
274 #define MOUSE_PCX_FILENAME "graphics\\mouse.gif"
275 #define JOYSTICK_FILENAME "joystick.cnf"
276 #define screen myscreen
279 #define XGetImage(a,b,c,d,e,f,g,h) ((XImage *) NULL)
280 #define XAutoRepeatOn(a)
281 #define XAutoRepeatOff(a)
282 #define XDisplayName(a) ((char *) NULL)
283 #define XFreeColors(a,b,c,d,e)
284 #define XpmFreeAttributes(a)
285 #define XSelectInput(a,b,c)
286 #define XDefaultDepth(a,b) (8)
287 #define XSetWMProperties(a,b,c,d,e,f,g,h,i)
289 #define MAX_EVENT_BUFFER 256
295 #define DUMMY_FILE ((void *) -1)
296 #define DUMMY_MASK (-1)
298 #define KeyPressMask (1L << 0)
299 #define KeyReleaseMask (1L << 1)
300 #define ButtonPressMask (1L << 2)
301 #define ButtonReleaseMask (1L << 3)
302 #define ButtonMotionMask (1L << 13)
303 #define ExposureMask (1L << 15)
304 #define StructureNotifyMask (1L << 17)
305 #define FocusChangeMask (1L << 21)
309 #define ButtonPress 4
310 #define ButtonRelease 5
311 #define MotionNotify 6
315 #define UnmapNotify 18
317 #define ClientMessage 33
319 #define GCForeground (1L << 2)
320 #define GCBackground (1L << 3)
321 #define GCGraphicsExposures (1L << 16)
322 #define GCClipMask (1L << 19)
324 #define NormalState 1 /* most applications want to start this way */
325 #define InputHint (1L << 0)
326 #define StateHint (1L << 1)
327 #define IconPixmapHint (1L << 2)
328 #define IconMaskHint (1L << 5)
329 #define PSize (1L << 3) /* program specified size */
330 #define PMinSize (1L << 4) /* program specified minimum size */
331 #define PMaxSize (1L << 5) /* program specified maximum size */
334 #define XpmOpenFailed -1
335 #define XpmFileInvalid -2
336 #define XpmNoMemory -3
337 #define XpmColorFailed -4
339 #define XpmCloseness (1L << 12)
341 #define PCX_Success 0
342 #define PCX_OpenFailed -1
343 #define PCX_ReadFailed -2
344 #define PCX_FileInvalid -3
345 #define PCX_NoMemory -4
346 #define PCX_ColorFailed -5
348 #define BitmapSuccess 0
349 #define BitmapOpenFailed 1
350 #define BitmapFileInvalid 2
351 #define BitmapNoMemory 3
353 #define ZPixmap 2 /* depth == drawable depth */
355 #define DefaultScreen(dpy) (((_XPrivDisplay)dpy)->default_screen)
356 #define DefaultColormap(dpy, scr) (ScreenOfDisplay(dpy,scr)->cmap)
357 #define ScreenOfDisplay(dpy, scr) (&((_XPrivDisplay)dpy)->screens[scr])
358 #define BlackPixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->black_pixel)
359 #define WhitePixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->white_pixel)
360 #define RootWindow(dpy, scr) (ScreenOfDisplay(dpy,scr)->root)
361 #define AllPlanes ((unsigned long)~0L)
363 #define DefaultVisual(dpy, scr) (NULL)
364 #define DefaultDepth(dpy, scr) (NULL)
365 #define XDisplayWidth(dpy, scr) (XRES)
366 #define XDisplayHeight(dpy, scr) (YRES)
368 #define XGetPixel(ximage, x, y) \
369 ((*((ximage)->f.get_pixel))((ximage), (x), (y)))
371 typedef unsigned long Pixel; /* Index into colormap */
372 typedef unsigned long XID;
374 typedef XID Drawable;
376 typedef XID Colormap;
378 typedef XID GContext;
379 typedef struct _XDisplay Display;
381 typedef long XVisualInfo;
388 GContext gid; /* protocol ID for graphics context */
393 Colormap cmap; /* default color map */
394 Window root; /* root window id */
395 unsigned long white_pixel; /* white pixel value */
396 unsigned long black_pixel; /* black pixel value */
401 BITMAP *video_bitmap;
404 typedef struct _XDisplay
406 int default_screen; /* default screen for operations */
407 Screen *screens; /* pointer to list of screens */
411 typedef struct _XImage
415 unsigned long (*get_pixel) (struct _XImage *, int, int);
421 long flags; /* marks which fields in this structure are defined */
422 int width, height; /* should set so old wm's don't mess up */
423 int min_width, min_height;
424 int max_width, max_height;
429 long flags; /* marks which fields in this structure are defined */
430 Bool input; /* does this application rely on the window manager to
431 get keyboard input? */
432 int initial_state; /* see below */
433 Pixmap icon_pixmap; /* pixmap to be used as icon */
434 Pixmap icon_mask; /* icon mask bitmap */
445 unsigned char *value; /* same as Property routines */
450 unsigned long foreground; /* foreground pixel */
451 unsigned long background; /* background pixel */
452 Bool graphics_exposures; /* boolean, should exposures be generated */
453 Pixmap clip_mask; /* bitmap clipping; other calls for rects */
454 int clip_x_origin; /* x origin for clipping */
455 int clip_y_origin; /* y origin for clipping */
456 unsigned long value_mask;
461 unsigned long valuemask; /* specifies which attributes are */
462 unsigned int closeness; /* allowable RGB deviation */
463 Pixel *pixels; /* list of used color pixels */
464 unsigned int npixels; /* number of used pixels */
476 int type; /* of event */
477 int x, y; /* pointer x, y coordinates in event window */
478 unsigned int button; /* detail */
484 int x, y; /* pointer x, y coordinates in event window */
489 int type; /* of event */
490 unsigned int state; /* key or button mask */
495 int type; /* FocusIn or FocusOut */
500 int type; /* ClientMessage */
501 } XClientMessageEvent;
503 typedef union _XEvent
505 int type; /* must not be changed; first element */
506 XExposeEvent xexpose;
507 XButtonEvent xbutton;
508 XMotionEvent xmotion;
512 unsigned char get_ascii(KeySym);
513 void XMapWindow(Display *, Window);
514 Display *XOpenDisplay(char *);
515 Window XCreateSimpleWindow(Display *, Window, int, int,
516 unsigned int, unsigned int, unsigned int,
517 unsigned long, unsigned long);
518 Status XStringListToTextProperty(char **, int, XTextProperty *);
520 GC XCreateGC(Display *, Drawable, unsigned long, XGCValues *);
521 void XSetClipMask(Display *, GC, Pixmap);
522 void XSetClipOrigin(Display *, GC, int, int);
523 void XFillRectangle(Display *, Drawable, GC, int, int,
524 unsigned int, unsigned int);
525 Pixmap XCreatePixmap(Display *, Drawable, unsigned int, unsigned int,
527 void XSync(Display *, Bool);
528 inline void XCopyArea(Display *, Drawable, Drawable, GC, int, int,
529 unsigned int, unsigned int, int, int);
530 int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *);
531 int XpmReadFileToPixmap(Display *, Drawable, char *, Pixmap *, Pixmap *,
533 int XReadBitmapFile(Display *, Drawable, char *,
534 unsigned int *, unsigned int *, Pixmap *, int *, int *);
535 void XFreePixmap(Display *, Pixmap);
536 void XFreeGC(Display *, GC);
537 void XCloseDisplay(Display *);
538 void XNextEvent(Display *, XEvent *);
539 int XPending(Display *);
540 KeySym XLookupKeysym(XKeyEvent *, int);
541 void NetworkServer(int, int);