1 /*********************************************************** 2 * Artsoft Retro-Game Library * 3 *----------------------------------------------------------* 4 * (c) 1994-2006 Artsoft Entertainment * 5 * Holger Schemel * 6 * Detmolder Strasse 189 * 7 * 33604 Bielefeld * 8 * Germany * 9 * e-mail: info@artsoft.org * 10 *----------------------------------------------------------* 11 * msdos.h * 12 ***********************************************************/ 13 14 #ifndef MSDOS_H 15 #define MSDOS_H 16 17 #include <time.h> 18 #include "allegro.h" 19 20 21 /* symbol 'window' is defined in DJGPP cross-compiler in libc.a(conio.o) */ 22 #define window window_internal 23 24 /* symbol 'font' is defined in "allegro.h" */ 25 #define font font_internal 26 27 /* system dependent definitions */ 28 29 #define TARGET_STRING "DOS" 30 31 /* allegro defines TRUE as -1 */ 32 #ifdef TRUE 33 #undef TRUE 34 #undef FALSE 35 #endif 36 37 #define TRUE 1 38 #define FALSE 0 39 40 #define XRES 800 41 #define YRES 600 42 43 /* allegro defines some macros that bother the rest of the program */ 44 #ifdef joy_x 45 #undef joy_x 46 #undef joy_y 47 #undef joy_left 48 #undef joy_right 49 #undef joy_up 50 #undef joy_down 51 #undef joy_b1 52 #undef joy_b2 53 #endif 54 55 /* additional Allegro keyboard mapping */ 56 57 /* The following are all undefined in Allegro */ 58 #define NEW_KEY_BACKSLASH 86 59 #define NEW_KEY_1_PAD 101 60 #define NEW_KEY_2_PAD 102 61 #define NEW_KEY_3_PAD 103 62 #define NEW_KEY_4_PAD 104 63 #define NEW_KEY_5_PAD 105 64 #define NEW_KEY_6_PAD 106 65 #define NEW_KEY_7_PAD 107 66 #define NEW_KEY_8_PAD 108 67 #define NEW_KEY_9_PAD 109 68 #define NEW_KEY_0_PAD 110 69 #define NEW_KEY_STOP_PAD 111 70 #define NEW_KEY_EQUALS_PAD 112 71 #define NEW_KEY_SLASH_PAD 113 72 #define NEW_KEY_ASTERISK_PAD 114 73 #define NEW_KEY_ENTER_PAD 115 74 75 /* X11 keyboard mapping (from 'keysymdef.h') */ 76 77 #define XK_VoidSymbol 0xFFFFFF /* void symbol */ 78 79 /* 80 * TTY Functions, cleverly chosen to map to ascii, for convenience of 81 * programming, but could have been arbitrary (at the cost of lookup 82 * tables in client code. 83 */ 84 85 #define XK_BackSpace 0xFF08 /* back space, back char */ 86 #define XK_Tab 0xFF09 87 #define XK_Linefeed 0xFF0A /* Linefeed, LF */ 88 #define XK_Clear 0xFF0B 89 #define XK_Return 0xFF0D /* Return, enter */ 90 #define XK_Pause 0xFF13 /* Pause, hold */ 91 #define XK_Scroll_Lock 0xFF14 92 #define XK_Sys_Req 0xFF15 93 #define XK_Escape 0xFF1B 94 #define XK_Delete 0xFFFF /* Delete, rubout */ 95 96 /* International & multi-key character composition */ 97 98 #define XK_Multi_key 0xFF20 /* Multi-key character compose */ 99 #define XK_SingleCandidate 0xFF3C 100 #define XK_MultipleCandidate 0xFF3D 101 #define XK_PreviousCandidate 0xFF3E 102 103 /* Cursor control & motion */ 104 105 #define XK_Home 0xFF50 106 #define XK_Left 0xFF51 /* Move left, left arrow */ 107 #define XK_Up 0xFF52 /* Move up, up arrow */ 108 #define XK_Right 0xFF53 /* Move right, right arrow */ 109 #define XK_Down 0xFF54 /* Move down, down arrow */ 110 #define XK_Prior 0xFF55 /* Prior, previous */ 111 #define XK_Page_Up 0xFF55 112 #define XK_Next 0xFF56 /* Next */ 113 #define XK_Page_Down 0xFF56 114 #define XK_End 0xFF57 /* EOL */ 115 #define XK_Begin 0xFF58 /* BOL */ 116 117 /* Misc Functions */ 118 119 #define XK_Select 0xFF60 /* Select, mark */ 120 #define XK_Print 0xFF61 121 #define XK_Execute 0xFF62 /* Execute, run, do */ 122 #define XK_Insert 0xFF63 /* Insert, insert here */ 123 #define XK_Undo 0xFF65 /* Undo, oops */ 124 #define XK_Redo 0xFF66 /* redo, again */ 125 #define XK_Menu 0xFF67 126 #define XK_Find 0xFF68 /* Find, search */ 127 #define XK_Cancel 0xFF69 /* Cancel, stop, abort, exit */ 128 #define XK_Help 0xFF6A /* Help */ 129 #define XK_Break 0xFF6B 130 #define XK_Mode_switch 0xFF7E /* Character set switch */ 131 #define XK_script_switch 0xFF7E /* Alias for mode_switch */ 132 #define XK_Num_Lock 0xFF7F 133 134 /* Keypad Functions, keypad numbers cleverly chosen to map to ascii */ 135 136 #define XK_KP_Space 0xFF80 /* space */ 137 #define XK_KP_Tab 0xFF89 138 #define XK_KP_Enter 0xFF8D /* enter */ 139 #define XK_KP_F1 0xFF91 /* PF1, KP_A, ... */ 140 #define XK_KP_F2 0xFF92 141 #define XK_KP_F3 0xFF93 142 #define XK_KP_F4 0xFF94 143 #define XK_KP_Home 0xFF95 144 #define XK_KP_Left 0xFF96 145 #define XK_KP_Up 0xFF97 146 #define XK_KP_Right 0xFF98 147 #define XK_KP_Down 0xFF99 148 #define XK_KP_Prior 0xFF9A 149 #define XK_KP_Page_Up 0xFF9A 150 #define XK_KP_Next 0xFF9B 151 #define XK_KP_Page_Down 0xFF9B 152 #define XK_KP_End 0xFF9C 153 #define XK_KP_Begin 0xFF9D 154 #define XK_KP_Insert 0xFF9E 155 #define XK_KP_Delete 0xFF9F 156 #define XK_KP_Equal 0xFFBD /* equals */ 157 #define XK_KP_Multiply 0xFFAA 158 #define XK_KP_Add 0xFFAB 159 #define XK_KP_Separator 0xFFAC /* separator, often comma */ 160 #define XK_KP_Subtract 0xFFAD 161 #define XK_KP_Decimal 0xFFAE 162 #define XK_KP_Divide 0xFFAF 163 164 #define XK_KP_0 0xFFB0 165 #define XK_KP_1 0xFFB1 166 #define XK_KP_2 0xFFB2 167 #define XK_KP_3 0xFFB3 168 #define XK_KP_4 0xFFB4 169 #define XK_KP_5 0xFFB5 170 #define XK_KP_6 0xFFB6 171 #define XK_KP_7 0xFFB7 172 #define XK_KP_8 0xFFB8 173 #define XK_KP_9 0xFFB9 174 175 /* 176 * Auxilliary Functions; note the duplicate definitions for left and right 177 * function keys; Sun keyboards and a few other manufactures have such 178 * function key groups on the left and/or right sides of the keyboard. 179 * We've not found a keyboard with more than 35 function keys total. 180 */ 181 182 #define XK_F1 0xFFBE 183 #define XK_F2 0xFFBF 184 #define XK_F3 0xFFC0 185 #define XK_F4 0xFFC1 186 #define XK_F5 0xFFC2 187 #define XK_F6 0xFFC3 188 #define XK_F7 0xFFC4 189 #define XK_F8 0xFFC5 190 #define XK_F9 0xFFC6 191 #define XK_F10 0xFFC7 192 #define XK_F11 0xFFC8 193 #define XK_L1 0xFFC8 194 #define XK_F12 0xFFC9 195 #define XK_L2 0xFFC9 196 #define XK_F13 0xFFCA 197 #define XK_L3 0xFFCA 198 #define XK_F14 0xFFCB 199 #define XK_L4 0xFFCB 200 #define XK_F15 0xFFCC 201 #define XK_L5 0xFFCC 202 #define XK_F16 0xFFCD 203 #define XK_L6 0xFFCD 204 #define XK_F17 0xFFCE 205 #define XK_L7 0xFFCE 206 #define XK_F18 0xFFCF 207 #define XK_L8 0xFFCF 208 #define XK_F19 0xFFD0 209 #define XK_L9 0xFFD0 210 #define XK_F20 0xFFD1 211 #define XK_L10 0xFFD1 212 #define XK_F21 0xFFD2 213 #define XK_R1 0xFFD2 214 #define XK_F22 0xFFD3 215 #define XK_R2 0xFFD3 216 #define XK_F23 0xFFD4 217 #define XK_R3 0xFFD4 218 #define XK_F24 0xFFD5 219 #define XK_R4 0xFFD5 220 #define XK_F25 0xFFD6 221 #define XK_R5 0xFFD6 222 #define XK_F26 0xFFD7 223 #define XK_R6 0xFFD7 224 #define XK_F27 0xFFD8 225 #define XK_R7 0xFFD8 226 #define XK_F28 0xFFD9 227 #define XK_R8 0xFFD9 228 #define XK_F29 0xFFDA 229 #define XK_R9 0xFFDA 230 #define XK_F30 0xFFDB 231 #define XK_R10 0xFFDB 232 #define XK_F31 0xFFDC 233 #define XK_R11 0xFFDC 234 #define XK_F32 0xFFDD 235 #define XK_R12 0xFFDD 236 #define XK_F33 0xFFDE 237 #define XK_R13 0xFFDE 238 #define XK_F34 0xFFDF 239 #define XK_R14 0xFFDF 240 #define XK_F35 0xFFE0 241 #define XK_R15 0xFFE0 242 243 /* Modifiers */ 244 245 #define XK_Shift_L 0xFFE1 /* Left shift */ 246 #define XK_Shift_R 0xFFE2 /* Right shift */ 247 #define XK_Control_L 0xFFE3 /* Left control */ 248 #define XK_Control_R 0xFFE4 /* Right control */ 249 #define XK_Caps_Lock 0xFFE5 /* Caps lock */ 250 #define XK_Shift_Lock 0xFFE6 /* Shift lock */ 251 252 #define XK_Meta_L 0xFFE7 /* Left meta */ 253 #define XK_Meta_R 0xFFE8 /* Right meta */ 254 #define XK_Alt_L 0xFFE9 /* Left alt */ 255 #define XK_Alt_R 0xFFEA /* Right alt */ 256 #define XK_Super_L 0xFFEB /* Left super */ 257 #define XK_Super_R 0xFFEC /* Right super */ 258 #define XK_Hyper_L 0xFFED /* Left hyper */ 259 #define XK_Hyper_R 0xFFEE /* Right hyper */ 260 261 /* 262 * Latin 1 263 * Byte 3 = 0 264 */ 265 266 #define XK_space 0x020 267 #define XK_exclam 0x021 268 #define XK_quotedbl 0x022 269 #define XK_numbersign 0x023 270 #define XK_dollar 0x024 271 #define XK_percent 0x025 272 #define XK_ampersand 0x026 273 #define XK_apostrophe 0x027 274 #define XK_quoteright 0x027 /* deprecated */ 275 #define XK_parenleft 0x028 276 #define XK_parenright 0x029 277 #define XK_asterisk 0x02a 278 #define XK_plus 0x02b 279 #define XK_comma 0x02c 280 #define XK_minus 0x02d 281 #define XK_period 0x02e 282 #define XK_slash 0x02f 283 #define XK_0 0x030 284 #define XK_1 0x031 285 #define XK_2 0x032 286 #define XK_3 0x033 287 #define XK_4 0x034 288 #define XK_5 0x035 289 #define XK_6 0x036 290 #define XK_7 0x037 291 #define XK_8 0x038 292 #define XK_9 0x039 293 #define XK_colon 0x03a 294 #define XK_semicolon 0x03b 295 #define XK_less 0x03c 296 #define XK_equal 0x03d 297 #define XK_greater 0x03e 298 #define XK_question 0x03f 299 #define XK_at 0x040 300 #define XK_A 0x041 301 #define XK_B 0x042 302 #define XK_C 0x043 303 #define XK_D 0x044 304 #define XK_E 0x045 305 #define XK_F 0x046 306 #define XK_G 0x047 307 #define XK_H 0x048 308 #define XK_I 0x049 309 #define XK_J 0x04a 310 #define XK_K 0x04b 311 #define XK_L 0x04c 312 #define XK_M 0x04d 313 #define XK_N 0x04e 314 #define XK_O 0x04f 315 #define XK_P 0x050 316 #define XK_Q 0x051 317 #define XK_R 0x052 318 #define XK_S 0x053 319 #define XK_T 0x054 320 #define XK_U 0x055 321 #define XK_V 0x056 322 #define XK_W 0x057 323 #define XK_X 0x058 324 #define XK_Y 0x059 325 #define XK_Z 0x05a 326 #define XK_bracketleft 0x05b 327 #define XK_backslash 0x05c 328 #define XK_bracketright 0x05d 329 #define XK_asciicircum 0x05e 330 #define XK_underscore 0x05f 331 #define XK_grave 0x060 332 #define XK_quoteleft 0x060 /* deprecated */ 333 #define XK_a 0x061 334 #define XK_b 0x062 335 #define XK_c 0x063 336 #define XK_d 0x064 337 #define XK_e 0x065 338 #define XK_f 0x066 339 #define XK_g 0x067 340 #define XK_h 0x068 341 #define XK_i 0x069 342 #define XK_j 0x06a 343 #define XK_k 0x06b 344 #define XK_l 0x06c 345 #define XK_m 0x06d 346 #define XK_n 0x06e 347 #define XK_o 0x06f 348 #define XK_p 0x070 349 #define XK_q 0x071 350 #define XK_r 0x072 351 #define XK_s 0x073 352 #define XK_t 0x074 353 #define XK_u 0x075 354 #define XK_v 0x076 355 #define XK_w 0x077 356 #define XK_x 0x078 357 #define XK_y 0x079 358 #define XK_z 0x07a 359 #define XK_braceleft 0x07b 360 #define XK_bar 0x07c 361 #define XK_braceright 0x07d 362 #define XK_asciitilde 0x07e 363 364 #define XK_nobreakspace 0x0a0 365 #define XK_exclamdown 0x0a1 366 #define XK_cent 0x0a2 367 #define XK_sterling 0x0a3 368 #define XK_currency 0x0a4 369 #define XK_yen 0x0a5 370 #define XK_brokenbar 0x0a6 371 #define XK_section 0x0a7 372 #define XK_diaeresis 0x0a8 373 #define XK_copyright 0x0a9 374 #define XK_ordfeminine 0x0aa 375 #define XK_guillemotleft 0x0ab /* left angle quotation mark */ 376 #define XK_notsign 0x0ac 377 #define XK_hyphen 0x0ad 378 #define XK_registered 0x0ae 379 #define XK_macron 0x0af 380 #define XK_degree 0x0b0 381 #define XK_plusminus 0x0b1 382 #define XK_twosuperior 0x0b2 383 #define XK_threesuperior 0x0b3 384 #define XK_acute 0x0b4 385 #define XK_mu 0x0b5 386 #define XK_paragraph 0x0b6 387 #define XK_periodcentered 0x0b7 388 #define XK_cedilla 0x0b8 389 #define XK_onesuperior 0x0b9 390 #define XK_masculine 0x0ba 391 #define XK_guillemotright 0x0bb /* right angle quotation mark */ 392 #define XK_onequarter 0x0bc 393 #define XK_onehalf 0x0bd 394 #define XK_threequarters 0x0be 395 #define XK_questiondown 0x0bf 396 #define XK_Agrave 0x0c0 397 #define XK_Aacute 0x0c1 398 #define XK_Acircumflex 0x0c2 399 #define XK_Atilde 0x0c3 400 #define XK_Adiaeresis 0x0c4 401 #define XK_Aring 0x0c5 402 #define XK_AE 0x0c6 403 #define XK_Ccedilla 0x0c7 404 #define XK_Egrave 0x0c8 405 #define XK_Eacute 0x0c9 406 #define XK_Ecircumflex 0x0ca 407 #define XK_Ediaeresis 0x0cb 408 #define XK_Igrave 0x0cc 409 #define XK_Iacute 0x0cd 410 #define XK_Icircumflex 0x0ce 411 #define XK_Idiaeresis 0x0cf 412 #define XK_ETH 0x0d0 413 #define XK_Eth 0x0d0 /* deprecated */ 414 #define XK_Ntilde 0x0d1 415 #define XK_Ograve 0x0d2 416 #define XK_Oacute 0x0d3 417 #define XK_Ocircumflex 0x0d4 418 #define XK_Otilde 0x0d5 419 #define XK_Odiaeresis 0x0d6 420 #define XK_multiply 0x0d7 421 #define XK_Ooblique 0x0d8 422 #define XK_Ugrave 0x0d9 423 #define XK_Uacute 0x0da 424 #define XK_Ucircumflex 0x0db 425 #define XK_Udiaeresis 0x0dc 426 #define XK_Yacute 0x0dd 427 #define XK_THORN 0x0de 428 #define XK_Thorn 0x0de /* deprecated */ 429 #define XK_ssharp 0x0df 430 #define XK_agrave 0x0e0 431 #define XK_aacute 0x0e1 432 #define XK_acircumflex 0x0e2 433 #define XK_atilde 0x0e3 434 #define XK_adiaeresis 0x0e4 435 #define XK_aring 0x0e5 436 #define XK_ae 0x0e6 437 #define XK_ccedilla 0x0e7 438 #define XK_egrave 0x0e8 439 #define XK_eacute 0x0e9 440 #define XK_ecircumflex 0x0ea 441 #define XK_ediaeresis 0x0eb 442 #define XK_igrave 0x0ec 443 #define XK_iacute 0x0ed 444 #define XK_icircumflex 0x0ee 445 #define XK_idiaeresis 0x0ef 446 #define XK_eth 0x0f0 447 #define XK_ntilde 0x0f1 448 #define XK_ograve 0x0f2 449 #define XK_oacute 0x0f3 450 #define XK_ocircumflex 0x0f4 451 #define XK_otilde 0x0f5 452 #define XK_odiaeresis 0x0f6 453 #define XK_division 0x0f7 454 #define XK_oslash 0x0f8 455 #define XK_ugrave 0x0f9 456 #define XK_uacute 0x0fa 457 #define XK_ucircumflex 0x0fb 458 #define XK_udiaeresis 0x0fc 459 #define XK_yacute 0x0fd 460 #define XK_thorn 0x0fe 461 #define XK_ydiaeresis 0x0ff 462 463 /* end of X11 keyboard mapping */ 464 465 466 #define screen myscreen 467 468 #define XFlush(a) 469 #define XGetImage(a,b,c,d,e,f,g,h) ((XImage *) NULL) 470 #define XDisplayName(a) ((char *) NULL) 471 #define XFreeColors(a,b,c,d,e) 472 #define XSelectInput(a,b,c) 473 #define XDefaultDepth(a,b) (8) 474 #define XSetWMProperties(a,b,c,d,e,f,g,h,i) 475 476 #define MAX_EVENT_BUFFER 256 477 #define MAX_SCANCODES 128 478 479 #define True 1 480 #define False 0 481 #define None 0L 482 483 #define DUMMY_FILE ((void *) -1) 484 #define DUMMY_MASK (-1) 485 486 #define KeyPressMask (1L << 0) 487 #define KeyReleaseMask (1L << 1) 488 #define ButtonPressMask (1L << 2) 489 #define ButtonReleaseMask (1L << 3) 490 #define ButtonMotionMask (1L << 13) 491 #define ExposureMask (1L << 15) 492 #define StructureNotifyMask (1L << 17) 493 #define FocusChangeMask (1L << 21) 494 495 #define KeyPress 2 496 #define KeyRelease 3 497 #define ButtonPress 4 498 #define ButtonRelease 5 499 #define MotionNotify 6 500 #define FocusIn 9 501 #define FocusOut 10 502 #define Expose 12 503 #define UnmapNotify 18 504 #define MapNotify 19 505 #define ClientMessage 33 506 507 #define LineSolid 0 508 #define LineOnOffDash 1 509 #define LineDoubleDash 2 510 511 #define CapNotLast 0 512 #define CapButt 1 513 #define CapRound 2 514 #define CapProjecting 3 515 516 #define JoinMiter 0 517 #define JoinRound 1 518 #define JoinBevel 2 519 520 #define GCForeground (1L << 2) 521 #define GCBackground (1L << 3) 522 #define GCLineWidth (1L << 4) 523 #define GCLineStyle (1L << 5) 524 #define GCCapStyle (1L << 6) 525 #define GCJoinStyle (1L << 7) 526 #define GCGraphicsExposures (1L << 16) 527 #define GCClipMask (1L << 19) 528 529 #define NormalState 1 /* most applications want to start this way */ 530 #define InputHint (1L << 0) 531 #define StateHint (1L << 1) 532 #define IconPixmapHint (1L << 2) 533 #define IconMaskHint (1L << 5) 534 #define PSize (1L << 3) /* program specified size */ 535 #define PMinSize (1L << 4) /* program specified minimum size */ 536 #define PMaxSize (1L << 5) /* program specified maximum size */ 537 538 #define PCX_Success 0 539 #define PCX_OpenFailed -1 540 #define PCX_ReadFailed -2 541 #define PCX_FileInvalid -3 542 #define PCX_NoMemory -4 543 #define PCX_ColorFailed -5 544 545 #define BitmapSuccess 0 546 #define BitmapOpenFailed 1 547 #define BitmapFileInvalid 2 548 #define BitmapNoMemory 3 549 550 #define ZPixmap 2 /* depth == drawable depth */ 551 552 #define DefaultScreen(dpy) (((_XPrivDisplay)dpy)->default_screen) 553 #define DefaultColormap(dpy, scr) (ScreenOfDisplay(dpy,scr)->cmap) 554 #define ScreenOfDisplay(dpy, scr) (&((_XPrivDisplay)dpy)->screens[scr]) 555 #define BlackPixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->black_pixel) 556 #define WhitePixel(dpy, scr) (ScreenOfDisplay(dpy,scr)->white_pixel) 557 #define RootWindow(dpy, scr) (ScreenOfDisplay(dpy,scr)->root) 558 #define AllPlanes ((unsigned int)~0L) 559 560 #define DefaultVisual(dpy, scr) (NULL) 561 #define DefaultDepth(dpy, scr) (NULL) 562 #define XDisplayWidth(dpy, scr) (XRES) 563 #define XDisplayHeight(dpy, scr) (YRES) 564 565 #define XGetPixel(ximage, x, y) \ 566 ((*((ximage)->f.get_pixel))((ximage), (x), (y))) 567 568 typedef unsigned int Pixel; /* Index into colormap */ 569 typedef unsigned int XID; 570 typedef XID Window; 571 typedef XID Drawable; 572 typedef XID Pixmap; 573 typedef XID Colormap; 574 typedef XID KeySym; 575 typedef XID GContext; 576 typedef struct _XDisplay Display; 577 typedef int Visual; 578 typedef int XVisualInfo; 579 typedef int Atom; 580 typedef int Status; 581 typedef int Bool; 582 typedef int XComposeStatus; /* we don't need the real type */ 583 584 typedef struct _XGC 585 { 586 GContext gid; /* protocol ID for graphics context */ 587 } *GC; 588 589 typedef struct 590 { 591 Colormap cmap; /* default color map */ 592 Window root; /* root window id */ 593 unsigned int white_pixel; /* white pixel value */ 594 unsigned int black_pixel; /* black pixel value */ 595 int x; 596 int y; 597 unsigned int width; 598 unsigned int height; 599 BITMAP *video_bitmap; 600 } Screen; 601 602 typedef struct _XDisplay 603 { 604 int default_screen; /* default screen for operations */ 605 Screen *screens; /* pointer to list of screens */ 606 BITMAP *mouse_ptr; 607 } *_XPrivDisplay; 608 609 typedef struct _XImage 610 { 611 struct funcs 612 { 613 unsigned int (*get_pixel) (struct _XImage *, int, int); 614 } f; 615 } XImage; 616 617 typedef struct 618 { 619 int flags; /* marks which fields in this structure are defined */ 620 int width, height; /* should set so old wm's don't mess up */ 621 int min_width, min_height; 622 int max_width, max_height; 623 } XSizeHints; 624 625 typedef struct 626 { 627 int flags; /* marks which fields in this structure are defined */ 628 Bool input; /* does this application rely on the window manager to 629 get keyboard input? */ 630 int initial_state; /* see below */ 631 Pixmap icon_pixmap; /* pixmap to be used as icon */ 632 Pixmap icon_mask; /* icon mask bitmap */ 633 } XWMHints; 634 635 typedef struct 636 { 637 char *res_name; 638 char *res_class; 639 } XClassHint; 640 641 typedef struct 642 { 643 unsigned char *value; /* same as Property routines */ 644 } XTextProperty; 645 646 typedef struct 647 { 648 unsigned int foreground; /* foreground pixel */ 649 unsigned int background; /* background pixel */ 650 Bool graphics_exposures; /* boolean, should exposures be generated */ 651 Pixmap clip_mask; /* bitmap clipping; other calls for rects */ 652 int clip_x_origin; /* x origin for clipping */ 653 int clip_y_origin; /* y origin for clipping */ 654 unsigned int value_mask; 655 int line_width; /* line width */ 656 int line_style; /* LineSolid, LineOnOffDash, LineDoubleDash */ 657 int cap_style; /* CapNotLast, CapButt, 658 CapRound, CapProjecting */ 659 int join_style; /* JoinMiter, JoinRound, JoinBevel */ 660 661 } XGCValues; 662 663 typedef struct 664 { 665 int type; 666 int x, y; 667 int width, height; 668 } XExposeEvent; 669 670 typedef struct 671 { 672 int type; /* of event */ 673 int x, y; /* pointer x, y coordinates in event window */ 674 unsigned int button; /* detail */ 675 } XButtonEvent; 676 677 typedef struct 678 { 679 int type; 680 int x, y; /* pointer x, y coordinates in event window */ 681 } XMotionEvent; 682 683 typedef struct 684 { 685 int type; /* of event */ 686 unsigned int state; /* key or button mask */ 687 } XKeyEvent; 688 689 typedef struct 690 { 691 int type; /* FocusIn or FocusOut */ 692 } XFocusChangeEvent; 693 694 typedef struct 695 { 696 int type; /* ClientMessage */ 697 } XClientMessageEvent; 698 699 typedef union _XEvent 700 { 701 int type; /* must not be changed; first element */ 702 XExposeEvent xexpose; 703 XButtonEvent xbutton; 704 XMotionEvent xmotion; 705 XKeyEvent xkey; 706 } XEvent; 707 708 Pixel AllegroAllocColorCell(int, int, int); 709 710 void XMapWindow(Display *, Window); 711 Display *XOpenDisplay(char *); 712 Window XCreateSimpleWindow(Display *, Window, int, int, 713 unsigned int, unsigned int, unsigned int, 714 unsigned int, unsigned int); 715 Status XStringListToTextProperty(char **, int, XTextProperty *); 716 void XFree(void *); 717 GC XCreateGC(Display *, Drawable, unsigned int, XGCValues *); 718 void XSetClipMask(Display *, GC, Pixmap); 719 void XSetClipOrigin(Display *, GC, int, int); 720 void XFillRectangle(Display *, Drawable, GC, int, int, 721 unsigned int, unsigned int); 722 Pixmap XCreatePixmap(Display *, Drawable, unsigned int, unsigned int, 723 unsigned int); 724 void XSync(Display *, Bool); 725 void XCopyArea(Display *, Drawable, Drawable, GC, int, int, 726 unsigned int, unsigned int, int, int); 727 int Read_PCX_to_Pixmap(Display *, Window, GC, char *, Pixmap *, Pixmap *); 728 int XReadBitmapFile(Display *, Drawable, char *, 729 unsigned int *, unsigned int *, Pixmap *, int *, int *); 730 void XFreePixmap(Display *, Pixmap); 731 void XFreeGC(Display *, GC); 732 void XUnmapWindow(Display *, Window); 733 void XCloseDisplay(Display *); 734 void XNextEvent(Display *, XEvent *); 735 int XPending(Display *); 736 KeySym XLookupKeysym(XKeyEvent *, int); 737 int XLookupString(XKeyEvent *, char *, int, KeySym *, XComposeStatus *); 738 void XSetForeground(Display *, GC, unsigned int); 739 void XDrawLine(Display *, Drawable, GC, int, int, int, int); 740 void XDestroyImage(XImage *); 741 void XDestroyWindow(Display *, Window); 742 Bool XQueryPointer(Display *, Window, Window *, Window *, int *, int *, 743 int *, int *, unsigned int *); 744 void XAutoRepeatOn(Display *); 745 void XAutoRepeatOff(Display *); 746 747 void AllegroDrawLine(Drawable, int, int, int, int, Pixel); 748 Pixel AllegroGetPixel(Drawable, int, int); 749 750 void AllegroZoomBitmap(Drawable, Drawable, int, int, int, int); 751 752 void MSDOSOpenAudio(void); 753 void MSDOSCloseAudio(void); 754 755 void NetworkServer(int, int); 756 757 void MSDOSInitJoysticks(); 758 boolean MSDOSReadJoystick(int, int *, int *, boolean *, boolean *); 759 760 #endif /* MSDOS_H */ 761