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