1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED = "aS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 module derelict.allegro5.types; 29 30 private { 31 import core.stdc.stdint; 32 import core.stdc.time; 33 } 34 35 public { 36 version(Windows) { 37 alias off_t = long; 38 } else { 39 import core.sys.posix.sys.types : off_t; 40 } 41 } 42 43 44 // altime.h 45 struct ALLEGRO_TIMEOUT { 46 ulong __pad1__; 47 ulong __pad2__; 48 } 49 50 // base.h 51 enum ALLEGRO_VERSION = 5; 52 enum ALLEGRO_SUB_VERSION = 2; 53 enum ALLEGRO_WIP_VERSION = 0; 54 enum ALLEGRO_RELEASE_NUMBER = 1; 55 enum ALLEGRO_VERSION_STR = "5.2.0"; 56 enum ALLEGRO_DATA_STR = "2016"; 57 enum ALLEGRO_DATE = 20130616; 58 enum uint ALLEGRO_VERSION_INT = ((ALLEGRO_VERSION << 24) | (ALLEGRO_SUB_VERSION << 16) | 59 (ALLEGRO_WIP_VERSION << 8) | ALLEGRO_RELEASE_NUMBER); 60 61 enum ALLEGRO_PI = 3.14159265358979323846; 62 63 uint AL_ID(int a, int b, int c, int d) { 64 return ((a << 24) | (b << 16) | (c << 8) | d); 65 } 66 67 // bitmap.h 68 struct ALLEGRO_BITMAP; 69 70 enum { 71 ALLEGRO_MEMORY_BITMAP = 0x0001, 72 _ALLEGRO_KEEP_BITMAP_FORMAT = 0x0002, 73 ALLEGRO_FORCE_LOCKING = 0x0004, 74 ALLEGRO_NO_PRESERVE_TEXTURE = 0x0008, 75 _ALLEGRO_ALPHA_TEST = 0x0010, 76 _ALLEGRO_INTERNAL_OPENGL = 0x0020, 77 ALLEGRO_MIN_LINEAR = 0x0040, 78 ALLEGRO_MAG_LINEAR = 0x0080, 79 ALLEGRO_MIPMAP = 0x0100, 80 _ALLEGRO_NO_PREMULTIPLIED_ALPHA = 0x0200, 81 ALLEGRO_VIDEO_BITMAP = 0x0400, 82 ALLEGRO_CONVERT_BITMAP = 0x1000, 83 } 84 85 // bitmap_draw.h 86 enum { 87 ALLEGRO_FLIP_HORIZONTAL = 0x00001, 88 ALLEGRO_FLIP_VERTICAL = 0x00002, 89 } 90 91 // bitmap_io.h 92 enum { 93 ALLEGRO_KEEP_BITMAP_FORMAT = 0x0002, 94 ALLEGRO_NO_PREMULTIPLIED_ALPHA = 0x0200, 95 ALLEGRO_KEEP_INDEX = 0x0800 96 } 97 98 extern(C) nothrow { 99 alias ALLEGRO_IIO_LOADER_FUNCTION = ALLEGRO_BITMAP* function(const(char)*); 100 alias ALLEGRO_IIO_FS_LOADER_FUNCTION = ALLEGRO_BITMAP* function(ALLEGRO_FILE*); 101 alias ALLEGRO_IIO_SAVER_FUNCTION = bool function(const(char)*, ALLEGRO_BITMAP*); 102 alias ALLEGRO_IIO_FS_SAVER_FUNCTION = bool function(ALLEGRO_FILE*, ALLEGRO_BITMAP*); 103 alias ALLEGRO_IIO_IDENTIFIER_FUNCTION = bool function(ALLEGRO_FILE*); 104 } 105 106 // bitmap_lock.h 107 enum { 108 ALLEGRO_LOCK_READWRITE = 0, 109 ALLEGRO_LOCK_READONLY = 1, 110 ALLEGRO_LOCK_WRITEONLY = 2, 111 } 112 113 struct ALLEGRO_LOCKED_REGION { 114 void* data; 115 int format; 116 int pitch; 117 int pixel_size; 118 } 119 120 // blender.h 121 alias ALLEGRO_BLEND_MODE = int; 122 enum { 123 ALLEGRO_ZERO = 0, 124 ALLEGRO_ONE = 1, 125 ALLEGRO_ALPHA = 2, 126 ALLEGRO_INVERSE_ALPHA = 3, 127 ALLEGRO_SRC_COLOR = 4, 128 ALLEGRO_DEST_COLOR = 5, 129 ALLEGRO_INVERSE_SRC_COLOR = 6, 130 ALLEGRO_INVERSE_DEST_COLOR = 7, 131 ALLEGRO_CONST_COLOR = 8, 132 ALLEGRO_INVERSE_CONST_COLOR = 9, 133 ALLEGRO_NUM_BLEND_MODES, 134 } 135 136 alias ALLEGRO_BLEND_OPERATIONS = int; 137 enum { 138 ALLEGRO_ADD = 0, 139 ALLEGRO_SRC_MINUS_DEST = 1, 140 ALLEGRO_DEST_MINUS_SRC = 2, 141 ALLEGRO_NUM_BLEND_OPERATIONS, 142 } 143 144 // color.h 145 struct ALLEGRO_COLOR { 146 float r, g, b, a; 147 } 148 149 alias ALLEGRO_PIXEL_FORMAT = int; 150 enum { 151 ALLEGRO_PIXEL_FORMAT_ANY = 0, 152 ALLEGRO_PIXEL_FORMAT_ANY_NO_ALPHA, 153 ALLEGRO_PIXEL_FORMAT_ANY_WITH_ALPHA, 154 ALLEGRO_PIXEL_FORMAT_ANY_15_NO_ALPHA, 155 ALLEGRO_PIXEL_FORMAT_ANY_16_NO_ALPHA, 156 ALLEGRO_PIXEL_FORMAT_ANY_16_WITH_ALPHA, 157 ALLEGRO_PIXEL_FORMAT_ANY_24_NO_ALPHA, 158 ALLEGRO_PIXEL_FORMAT_ANY_32_NO_ALPHA, 159 ALLEGRO_PIXEL_FORMAT_ANY_32_WITH_ALPHA, 160 ALLEGRO_PIXEL_FORMAT_ARGB_8888, 161 ALLEGRO_PIXEL_FORMAT_RGBA_8888, 162 ALLEGRO_PIXEL_FORMAT_ARGB_4444, 163 ALLEGRO_PIXEL_FORMAT_RGB_888, 164 ALLEGRO_PIXEL_FORMAT_RGB_565, 165 ALLEGRO_PIXEL_FORMAT_RGB_555, 166 ALLEGRO_PIXEL_FORMAT_RGBA_5551, 167 ALLEGRO_PIXEL_FORMAT_ARGB_1555, 168 ALLEGRO_PIXEL_FORMAT_ABGR_8888, 169 ALLEGRO_PIXEL_FORMAT_XBGR_8888, 170 ALLEGRO_PIXEL_FORMAT_BGR_888, 171 ALLEGRO_PIXEL_FORMAT_BGR_565, 172 ALLEGRO_PIXEL_FORMAT_BGR_555, 173 ALLEGRO_PIXEL_FORMAT_RGBX_8888, 174 ALLEGRO_PIXEL_FORMAT_XRGB_8888, 175 ALLEGRO_PIXEL_FORMAT_ABGR_F32, 176 ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE, 177 ALLEGRO_PIXEL_FORMAT_RGBA_4444, 178 ALLEGRO_PIXEL_FORMAT_SINGLE_CHANNEL_8 , 179 ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT1, 180 ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT3, 181 ALLEGRO_PIXEL_FORMAT_COMPRESSED_RGBA_DXT5, 182 ALLEGRO_NUM_PIXEL_FORMATS 183 } 184 185 // config.h 186 struct ALLEGRO_CONFIG; 187 struct ALLEGRO_CONFIG_SECTION; 188 struct ALLEGRO_CONFIG_ENTRY; 189 190 // display.h 191 enum { 192 ALLEGRO_WINDOWED = 1 << 0, 193 ALLEGRO_FULLSCREEN = 1 << 1, 194 ALLEGRO_OPENGL = 1 << 2, 195 ALLEGRO_DIRECT3D_INTERNAL = 1 << 3, 196 ALLEGRO_RESIZABLE = 1 << 4, 197 ALLEGRO_FRAMELESS = 1 << 5, 198 ALLEGRO_NOFRAME = ALLEGRO_FRAMELESS, /* older synonym */ 199 ALLEGRO_GENERATE_EXPOSE_EVENTS = 1 << 6, 200 ALLEGRO_OPENGL_3_0 = 1 << 7, 201 ALLEGRO_OPENGL_FORWARD_COMPATIBLE = 1 << 8, 202 ALLEGRO_FULLSCREEN_WINDOW = 1 << 9, 203 ALLEGRO_MINIMIZED = 1 << 10, 204 ALLEGRO_PROGRAMMABLE_PIPELINE = 1 << 11, 205 ALLEGRO_GTK_TOPLEVEL_INTERNAL = 1 << 12, 206 ALLEGRO_MAXIMIZED = 1 << 13, 207 ALLEGRO_OPENGL_ES_PROFILE = 1 << 14, 208 } 209 210 alias ALLEGRO_DISPLAY_OPTIONS = int; 211 enum { 212 ALLEGRO_RED_SIZE, 213 ALLEGRO_GREEN_SIZE, 214 ALLEGRO_BLUE_SIZE, 215 ALLEGRO_ALPHA_SIZE, 216 ALLEGRO_RED_SHIFT, 217 ALLEGRO_GREEN_SHIFT, 218 ALLEGRO_BLUE_SHIFT, 219 ALLEGRO_ALPHA_SHIFT, 220 ALLEGRO_ACC_RED_SIZE, 221 ALLEGRO_ACC_GREEN_SIZE, 222 ALLEGRO_ACC_BLUE_SIZE, 223 ALLEGRO_ACC_ALPHA_SIZE, 224 ALLEGRO_STEREO, 225 ALLEGRO_AUX_BUFFERS, 226 ALLEGRO_COLOR_SIZE, 227 ALLEGRO_DEPTH_SIZE, 228 ALLEGRO_STENCIL_SIZE, 229 ALLEGRO_SAMPLE_BUFFERS, 230 ALLEGRO_SAMPLES, 231 ALLEGRO_RENDER_METHOD, 232 ALLEGRO_FLOAT_COLOR, 233 ALLEGRO_FLOAT_DEPTH, 234 ALLEGRO_SINGLE_BUFFER, 235 ALLEGRO_SWAP_METHOD, 236 ALLEGRO_COMPATIBLE_DISPLAY, 237 ALLEGRO_UPDATE_DISPLAY_REGION, 238 ALLEGRO_VSYNC, 239 ALLEGRO_MAX_BITMAP_SIZE, 240 ALLEGRO_SUPPORT_NPOT_BITMAP, 241 ALLEGRO_CAN_DRAW_INTO_BITMAP, 242 ALLEGRO_SUPPORT_SEPARATE_ALPHA, 243 ALLEGRO_DISPLAY_OPTIONS_COUNT, 244 ALLEGRO_AUTO_CONVERT_BITMAPS, 245 ALLEGRO_SUPPORTED_ORIENTATIONS, 246 ALLEGRO_OPENGL_MAJOR_VERSION, 247 ALLEGRO_OPENGL_MINOR_VERSION, 248 } 249 250 enum { 251 ALLEGRO_DONTCARE, 252 ALLEGRO_REQUIRE, 253 ALLEGRO_SUGGEST, 254 } 255 256 alias ALLEGRO_DISPLAY_ORIENTATION = int; 257 enum { 258 ALLEGRO_DISPLAY_ORIENTATION_UNKNOWN = 0, 259 ALLEGRO_DISPLAY_ORIENTATION_0_DEGREES = 1, 260 ALLEGRO_DISPLAY_ORIENTATION_90_DEGREES = 2, 261 ALLEGRO_DISPLAY_ORIENTATION_180_DEGREES = 4, 262 ALLEGRO_DISPLAY_ORIENTATION_270_DEGREES = 8, 263 ALLEGRO_DISPLAY_ORIENTATION_PORTRAIT = 5, 264 ALLEGRO_DISPLAY_ORIENTATION_LANDSCAPE = 10, 265 ALLEGRO_DISPLAY_ORIENTATION_ALL = 15, 266 ALLEGRO_DISPLAY_ORIENTATION_FACE_UP = 16, 267 ALLEGRO_DISPLAY_ORIENTATION_FACE_DOWN = 32 268 } 269 270 enum _ALLEGRO_PRIM_MAX_USER_ATTR = 10; 271 272 struct ALLEGRO_DISPLAY; 273 274 // events.h 275 alias ALLEGRO_EVENT_TYPE = uint; 276 277 enum { 278 ALLEGRO_EVENT_JOYSTICK_AXIS = 1, 279 ALLEGRO_EVENT_JOYSTICK_BUTTON_DOWN = 2, 280 ALLEGRO_EVENT_JOYSTICK_BUTTON_UP = 3, 281 ALLEGRO_EVENT_JOYSTICK_CONFIGURATION = 4, 282 283 ALLEGRO_EVENT_KEY_DOWN = 10, 284 ALLEGRO_EVENT_KEY_CHAR = 11, 285 ALLEGRO_EVENT_KEY_UP = 12, 286 287 ALLEGRO_EVENT_MOUSE_AXES = 20, 288 ALLEGRO_EVENT_MOUSE_BUTTON_DOWN = 21, 289 ALLEGRO_EVENT_MOUSE_BUTTON_UP = 22, 290 ALLEGRO_EVENT_MOUSE_ENTER_DISPLAY = 23, 291 ALLEGRO_EVENT_MOUSE_LEAVE_DISPLAY = 24, 292 ALLEGRO_EVENT_MOUSE_WARPED = 25, 293 294 ALLEGRO_EVENT_TIMER = 30, 295 296 ALLEGRO_EVENT_DISPLAY_EXPOSE = 40, 297 ALLEGRO_EVENT_DISPLAY_RESIZE = 41, 298 ALLEGRO_EVENT_DISPLAY_CLOSE = 42, 299 ALLEGRO_EVENT_DISPLAY_LOST = 43, 300 ALLEGRO_EVENT_DISPLAY_FOUND = 44, 301 ALLEGRO_EVENT_DISPLAY_SWITCH_IN = 45, 302 ALLEGRO_EVENT_DISPLAY_SWITCH_OUT = 46, 303 ALLEGRO_EVENT_DISPLAY_ORIENTATION = 47, 304 ALLEGRO_EVENT_DISPLAY_HALT_DRAWING = 48, 305 ALLEGRO_EVENT_DISPLAY_RESUME_DRAWING = 49, 306 307 ALLEGRO_EVENT_TOUCH_BEGIN = 50, 308 ALLEGRO_EVENT_TOUCH_END = 51, 309 ALLEGRO_EVENT_TOUCH_MOVE = 52, 310 ALLEGRO_EVENT_TOUCH_CANCEL = 53, 311 312 ALLEGRO_EVENT_DISPLAY_CONNECTED = 60, 313 ALLEGRO_EVENT_DISPLAY_DISCONNECTED = 61, 314 } 315 316 bool ALLEGRO_EVENT_TYPE_IS_USER(uint t) { 317 return t >= 512; 318 } 319 320 alias ALLEGRO_GET_EVENT_TYPE = AL_ID; 321 322 struct ALLEGRO_EVENT_SOURCE { 323 int[32] __pad = void; 324 } 325 326 template _AL_EVENT_HEADER(T) { 327 ALLEGRO_EVENT_TYPE type; 328 T* source; 329 double timestamp; 330 } 331 332 struct ALLEGRO_ANY_EVENT { 333 mixin _AL_EVENT_HEADER!(ALLEGRO_EVENT_SOURCE); 334 } 335 336 struct ALLEGRO_DISPLAY_EVENT { 337 mixin _AL_EVENT_HEADER!(ALLEGRO_DISPLAY); 338 int x, y; 339 int width, height; 340 int orientation; 341 } 342 343 struct ALLEGRO_JOYSTICK_EVENT { 344 mixin _AL_EVENT_HEADER!(ALLEGRO_JOYSTICK); 345 ALLEGRO_JOYSTICK* id; 346 int stick; 347 int axis; 348 float pos; 349 int button; 350 } 351 352 struct ALLEGRO_KEYBOARD_EVENT { 353 mixin _AL_EVENT_HEADER!(ALLEGRO_KEYBOARD); 354 ALLEGRO_DISPLAY* display; 355 int keycode; 356 int unichar; 357 uint modifiers; 358 bool repeat; 359 } 360 361 struct ALLEGRO_MOUSE_EVENT { 362 mixin _AL_EVENT_HEADER!(ALLEGRO_MOUSE); 363 ALLEGRO_DISPLAY* display; 364 int x, y, z, w; 365 int dx, dy, dz, dw; 366 uint button; 367 float pressure; 368 } 369 370 struct ALLEGRO_TIMER_EVENT { 371 mixin _AL_EVENT_HEADER!(ALLEGRO_TIMER); 372 long count; 373 double error; 374 } 375 376 struct ALLEGRO_TOUCH_EVENT { 377 mixin _AL_EVENT_HEADER!(ALLEGRO_TOUCH_INPUT); 378 ALLEGRO_DISPLAY* display; 379 int id; 380 float x, y; 381 float dx, dy; 382 bool primary; 383 } 384 385 struct ALLEGRO_USER_EVENT { 386 mixin _AL_EVENT_HEADER!(ALLEGRO_EVENT_SOURCE); 387 void* __internal__descr; 388 intptr_t data1; 389 intptr_t data2; 390 intptr_t data3; 391 intptr_t data4; 392 } 393 394 union ALLEGRO_EVENT { 395 ALLEGRO_EVENT_TYPE type; 396 ALLEGRO_ANY_EVENT any; 397 ALLEGRO_DISPLAY_EVENT display; 398 ALLEGRO_JOYSTICK_EVENT joystick; 399 ALLEGRO_KEYBOARD_EVENT keyboard; 400 ALLEGRO_MOUSE_EVENT mouse; 401 ALLEGRO_TIMER_EVENT timer; 402 ALLEGRO_TOUCH_EVENT touch; 403 ALLEGRO_USER_EVENT user; 404 } 405 406 struct ALLEGRO_EVENT_QUEUE; 407 408 // file.h 409 struct ALLEGRO_FILE; 410 411 struct ALLEGRO_FILE_INTERFACE { 412 extern(C) nothrow { 413 void* function(const(char)*, const(char)*) fi_fopen; 414 void function(ALLEGRO_FILE*) fi_fclose; 415 size_t function(ALLEGRO_FILE*, void*, size_t) fi_fread; 416 size_t function(ALLEGRO_FILE*, const(void)*, size_t) fi_fwrite; 417 bool function(ALLEGRO_FILE*) fi_fflush; 418 long function(ALLEGRO_FILE*) fi_ftell; 419 bool function(ALLEGRO_FILE*, long, int) fi_fseek; 420 bool function(ALLEGRO_FILE*) fi_feof; 421 bool function(ALLEGRO_FILE*) fi_ferror; 422 const(char)* function(ALLEGRO_FILE*) fi_ferrmsg; 423 void function(ALLEGRO_FILE*) fi_fclearerr; 424 int function(ALLEGRO_FILE*, int) fi_fungetc; 425 off_t function(ALLEGRO_FILE*) fi_fsize; 426 } 427 } 428 429 alias ALLEGRO_SEEK = int; 430 enum { 431 ALLEGRO_SEEK_SET = 0, 432 ALLEGRO_SEEK_CUR, 433 ALLEGRO_SEEK_END, 434 } 435 436 // fshook.h 437 struct ALLEGRO_FS_ENTRY { 438 const(ALLEGRO_FS_INTERFACE)* vtable; 439 } 440 441 alias ALLEGRO_FILE_MODE = int; 442 enum { 443 ALLEGRO_FILEMODE_READ = 1, 444 ALLEGRO_FILEMODE_WRITE = 1 << 1, 445 ALLEGRO_FILEMODE_EXECUTE = 1 << 2, 446 ALLEGRO_FILEMODE_HIDDEN = 1 << 3, 447 ALLEGRO_FILEMODE_ISFILE = 1 << 4, 448 ALLEGRO_FILEMODE_ISDIR = 1 << 5, 449 } 450 451 struct ALLEGRO_FS_INTERFACE { 452 extern(C) nothrow { 453 ALLEGRO_FS_ENTRY* function(const(char)*) fs_create_entry; 454 void function(ALLEGRO_FS_ENTRY*) fs_destroy_entry; 455 const(char)* function(ALLEGRO_FS_ENTRY*) fs_entry_name; 456 bool function(ALLEGRO_FS_ENTRY*) fs_update_entry; 457 uint function(ALLEGRO_FS_ENTRY*) fs_entry_mode; 458 time_t function(ALLEGRO_FS_ENTRY*) fs_entry_atime; 459 time_t function(ALLEGRO_FS_ENTRY*) fs_entry_mtime; 460 time_t function(ALLEGRO_FS_ENTRY*) fs_entry_ctime; 461 off_t function(ALLEGRO_FS_ENTRY*) fs_entry_size; 462 bool function(ALLEGRO_FS_ENTRY*) fs_entry_exists; 463 bool function(ALLEGRO_FS_ENTRY*) fs_remove_entry; 464 465 bool function(ALLEGRO_FS_ENTRY*) fs_open_directory; 466 ALLEGRO_FS_ENTRY* function(ALLEGRO_FS_ENTRY*) fs_read_directory; 467 bool function(ALLEGRO_FS_ENTRY*) fs_close_directory; 468 469 bool function(const(char)*) fs_filename_exists; 470 bool function(const(char)*) fs_remove_filename; 471 char* function() fs_get_current_directory; 472 bool function(const(char)*) fs_change_directory; 473 bool function(const(char)*) fs_make_directory; 474 475 ALLEGRO_FILE* function(ALLEGRO_FS_ENTRY*, const(char)*) fs_open_file; 476 } 477 } 478 479 // Used in the declaration of al_for_each_fs_entry 480 extern(C) nothrow alias foreachCallback = int function(ALLEGRO_FS_ENTRY*,void*); 481 482 // fullscreen_mode.h 483 struct ALLEGRO_DISPLAY_MODE { 484 int width; 485 int height; 486 int format; 487 int refresh_rate; 488 } 489 490 // joystick.h 491 private { 492 enum _AL_MAX_JOYSTICK_AXES = 3; 493 enum _AL_MAX_JOYSTICK_STICKS = 8; 494 enum _AL_MAX_JOYSTICK_BUTTONS = 32; 495 } 496 497 struct ALLEGRO_JOYSTICK; 498 499 struct _Axes { 500 float[_AL_MAX_JOYSTICK_AXES] axis; 501 } 502 503 struct ALLEGRO_JOYSTICK_STATE { 504 _Axes[_AL_MAX_JOYSTICK_STICKS] stick; 505 int[_AL_MAX_JOYSTICK_BUTTONS] button; 506 } 507 508 alias ALLEGRO_JOYFLAGS = int; 509 enum { 510 ALLEGRO_JOYFLAG_DIGITAL = 0x01, 511 ALLEGRO_JOYFLAG_ANALOGUE = 0x02, 512 } 513 514 // keycodes.h 515 enum { 516 ALLEGRO_KEY_A = 1, 517 ALLEGRO_KEY_B = 2, 518 ALLEGRO_KEY_C = 3, 519 ALLEGRO_KEY_D = 4, 520 ALLEGRO_KEY_E = 5, 521 ALLEGRO_KEY_F = 6, 522 ALLEGRO_KEY_G = 7, 523 ALLEGRO_KEY_H = 8, 524 ALLEGRO_KEY_I = 9, 525 ALLEGRO_KEY_J = 10, 526 ALLEGRO_KEY_K = 11, 527 ALLEGRO_KEY_L = 12, 528 ALLEGRO_KEY_M = 13, 529 ALLEGRO_KEY_N = 14, 530 ALLEGRO_KEY_O = 15, 531 ALLEGRO_KEY_P = 16, 532 ALLEGRO_KEY_Q = 17, 533 ALLEGRO_KEY_R = 18, 534 ALLEGRO_KEY_S = 19, 535 ALLEGRO_KEY_T = 20, 536 ALLEGRO_KEY_U = 21, 537 ALLEGRO_KEY_V = 22, 538 ALLEGRO_KEY_W = 23, 539 ALLEGRO_KEY_X = 24, 540 ALLEGRO_KEY_Y = 25, 541 ALLEGRO_KEY_Z = 26, 542 543 ALLEGRO_KEY_0 = 27, 544 ALLEGRO_KEY_1 = 28, 545 ALLEGRO_KEY_2 = 29, 546 ALLEGRO_KEY_3 = 30, 547 ALLEGRO_KEY_4 = 31, 548 ALLEGRO_KEY_5 = 32, 549 ALLEGRO_KEY_6 = 33, 550 ALLEGRO_KEY_7 = 34, 551 ALLEGRO_KEY_8 = 35, 552 ALLEGRO_KEY_9 = 36, 553 554 ALLEGRO_KEY_PAD_0 = 37, 555 ALLEGRO_KEY_PAD_1 = 38, 556 ALLEGRO_KEY_PAD_2 = 39, 557 ALLEGRO_KEY_PAD_3 = 40, 558 ALLEGRO_KEY_PAD_4 = 41, 559 ALLEGRO_KEY_PAD_5 = 42, 560 ALLEGRO_KEY_PAD_6 = 43, 561 ALLEGRO_KEY_PAD_7 = 44, 562 ALLEGRO_KEY_PAD_8 = 45, 563 ALLEGRO_KEY_PAD_9 = 46, 564 565 ALLEGRO_KEY_F1 = 47, 566 ALLEGRO_KEY_F2 = 48, 567 ALLEGRO_KEY_F3 = 49, 568 ALLEGRO_KEY_F4 = 50, 569 ALLEGRO_KEY_F5 = 51, 570 ALLEGRO_KEY_F6 = 52, 571 ALLEGRO_KEY_F7 = 53, 572 ALLEGRO_KEY_F8 = 54, 573 ALLEGRO_KEY_F9 = 55, 574 ALLEGRO_KEY_F10 = 56, 575 ALLEGRO_KEY_F11 = 57, 576 ALLEGRO_KEY_F12 = 58, 577 578 ALLEGRO_KEY_ESCAPE = 59, 579 ALLEGRO_KEY_TILDE = 60, 580 ALLEGRO_KEY_MINUS = 61, 581 ALLEGRO_KEY_EQUALS = 62, 582 ALLEGRO_KEY_BACKSPACE = 63, 583 ALLEGRO_KEY_TAB = 64, 584 ALLEGRO_KEY_OPENBRACE = 65, 585 ALLEGRO_KEY_CLOSEBRACE = 66, 586 ALLEGRO_KEY_ENTER = 67, 587 ALLEGRO_KEY_SEMICOLON = 68, 588 ALLEGRO_KEY_QUOTE = 69, 589 ALLEGRO_KEY_BACKSLASH = 70, 590 ALLEGRO_KEY_BACKSLASH2 = 71, 591 ALLEGRO_KEY_COMMA = 72, 592 ALLEGRO_KEY_FULLSTOP = 73, 593 ALLEGRO_KEY_SLASH = 74, 594 ALLEGRO_KEY_SPACE = 75, 595 596 ALLEGRO_KEY_INSERT = 76, 597 ALLEGRO_KEY_DELETE = 77, 598 ALLEGRO_KEY_HOME = 78, 599 ALLEGRO_KEY_END = 79, 600 ALLEGRO_KEY_PGUP = 80, 601 ALLEGRO_KEY_PGDN = 81, 602 ALLEGRO_KEY_LEFT = 82, 603 ALLEGRO_KEY_RIGHT = 83, 604 ALLEGRO_KEY_UP = 84, 605 ALLEGRO_KEY_DOWN = 85, 606 607 ALLEGRO_KEY_PAD_SLASH = 86, 608 ALLEGRO_KEY_PAD_ASTERISK = 87, 609 ALLEGRO_KEY_PAD_MINUS = 88, 610 ALLEGRO_KEY_PAD_PLUS = 89, 611 ALLEGRO_KEY_PAD_DELETE = 90, 612 ALLEGRO_KEY_PAD_ENTER = 91, 613 614 ALLEGRO_KEY_PRINTSCREEN = 92, 615 ALLEGRO_KEY_PAUSE = 93, 616 617 ALLEGRO_KEY_ABNT_C1 = 94, 618 ALLEGRO_KEY_YEN = 95, 619 ALLEGRO_KEY_KANA = 96, 620 ALLEGRO_KEY_CONVERT = 97, 621 ALLEGRO_KEY_NOCONVERT = 98, 622 ALLEGRO_KEY_AT = 99, 623 ALLEGRO_KEY_CIRCUMFLEX = 100, 624 ALLEGRO_KEY_COLON2 = 101, 625 ALLEGRO_KEY_KANJI = 102, 626 627 ALLEGRO_KEY_PAD_EQUALS = 103, 628 ALLEGRO_KEY_BACKQUOTE = 104, 629 ALLEGRO_KEY_SEMICOLON2 = 105, 630 ALLEGRO_KEY_COMMAND = 106, 631 632 ALLEGRO_KEY_BACK = 107, 633 ALLEGRO_KEY_VOLUME_UP = 108, 634 ALLEGRO_KEY_VOLUME_DOWN = 109, 635 636 ALLEGRO_KEY_SEARCH = 110, 637 ALLEGRO_KEY_DPAD_CENTER = 111, 638 ALLEGRO_KEY_BUTTON_X = 112, 639 ALLEGRO_KEY_BUTTON_Y = 113, 640 ALLEGRO_KEY_DPAD_UP = 114, 641 ALLEGRO_KEY_DPAD_DOWN = 115, 642 ALLEGRO_KEY_DPAD_LEFT = 116, 643 ALLEGRO_KEY_DPAD_RIGHT = 117, 644 ALLEGRO_KEY_SELECT = 118, 645 ALLEGRO_KEY_START = 119, 646 ALLEGRO_KEY_BUTTON_L1 = 120, 647 ALLEGRO_KEY_BUTTON_R1 = 121, 648 ALLEGRO_KEY_BUTTON_L2 = 122, 649 ALLEGRO_KEY_BUTTON_R2 = 123, 650 ALLEGRO_KEY_BUTTON_A = 124, 651 ALLEGRO_KEY_BUTTON_B = 125, 652 ALLEGRO_KEY_THUMBL = 126, 653 ALLEGRO_KEY_THUMBR = 127, 654 655 ALLEGRO_KEY_UNKNOWN = 128, 656 657 ALLEGRO_KEY_MODIFIERS = 215, 658 659 ALLEGRO_KEY_LSHIFT = 215, 660 ALLEGRO_KEY_RSHIFT = 216, 661 ALLEGRO_KEY_LCTRL = 217, 662 ALLEGRO_KEY_RCTRL = 218, 663 ALLEGRO_KEY_ALT = 219, 664 ALLEGRO_KEY_ALTGR = 220, 665 ALLEGRO_KEY_LWIN = 221, 666 ALLEGRO_KEY_RWIN = 222, 667 ALLEGRO_KEY_MENU = 223, 668 ALLEGRO_KEY_SCROLLLOCK = 224, 669 ALLEGRO_KEY_NUMLOCK = 225, 670 ALLEGRO_KEY_CAPSLOCK = 226, 671 672 ALLEGRO_KEY_MAX, 673 } 674 675 enum { 676 ALLEGRO_KEYMOD_SHIFT = 0x00001, 677 ALLEGRO_KEYMOD_CTRL = 0x00002, 678 ALLEGRO_KEYMOD_ALT = 0x00004, 679 ALLEGRO_KEYMOD_LWIN = 0x00008, 680 ALLEGRO_KEYMOD_RWIN = 0x00010, 681 ALLEGRO_KEYMOD_MENU = 0x00020, 682 ALLEGRO_KEYMOD_ALTGR = 0x00040, 683 ALLEGRO_KEYMOD_COMMAND = 0x00080, 684 ALLEGRO_KEYMOD_SCROLLLOCK = 0x00100, 685 ALLEGRO_KEYMOD_NUMLOCK = 0x00200, 686 ALLEGRO_KEYMOD_CAPSLOCK = 0x00400, 687 ALLEGRO_KEYMOD_INALTSEQ = 0x00800, 688 ALLEGRO_KEYMOD_ACCENT1 = 0x01000, 689 ALLEGRO_KEYMOD_ACCENT2 = 0x02000, 690 ALLEGRO_KEYMOD_ACCENT3 = 0x04000, 691 ALLEGRO_KEYMOD_ACCENT4 = 0x08000, 692 } 693 694 // keyboard.h 695 struct ALLEGRO_KEYBOARD; 696 697 struct ALLEGRO_KEYBOARD_STATE { 698 ALLEGRO_DISPLAY* display; 699 uint[(ALLEGRO_KEY_MAX + 31) / 32] __key_down__internal__; 700 } 701 702 // memory.h 703 struct ALLEGRO_MEMORY_INTERFACE { 704 extern(C) nothrow { 705 void* function(size_t, int, const(char)*, const(char)*) mi_malloc; 706 void function(void*, int, const(char)*, const(char)*) mi_free; 707 void* function(void*, size_t, int, const(char)*, const(char)*) mi_realloc; 708 void* function(size_t, size_t, int, const(char)*, const(char)*) mi_calloc; 709 } 710 } 711 712 // monitor.h 713 struct ALLEGRO_MONITOR_INFO { 714 int x1; 715 int y1; 716 int x2; 717 int y2; 718 } 719 720 enum ALLEGRO_DEFAULT_DISPLAY_ADAPTER = -1; 721 722 // mouse.h 723 enum ALLEGRO_MOUSE_MAX_EXTRA_AXES = 4; 724 725 struct ALLEGRO_MOUSE; 726 727 struct ALLEGRO_MOUSE_STATE { 728 int x; 729 int y; 730 int z; 731 int w; 732 int[ALLEGRO_MOUSE_MAX_EXTRA_AXES] more_axes; 733 int button; 734 float pressure; 735 ALLEGRO_DISPLAY* display; 736 } 737 738 // mouse_cursor.h 739 struct ALLEGRO_MOUSE_CURSOR; 740 741 alias ALLEGRO_SYSTEM_MOUSE_CURSOR = int; 742 enum { 743 ALLEGRO_SYSTEM_MOUSE_CURSOR_NONE = 0, 744 ALLEGRO_SYSTEM_MOUSE_CURSOR_DEFAULT = 1, 745 ALLEGRO_SYSTEM_MOUSE_CURSOR_ARROW = 2, 746 ALLEGRO_SYSTEM_MOUSE_CURSOR_BUSY = 3, 747 ALLEGRO_SYSTEM_MOUSE_CURSOR_QUESTION = 4, 748 ALLEGRO_SYSTEM_MOUSE_CURSOR_EDIT = 5, 749 ALLEGRO_SYSTEM_MOUSE_CURSOR_MOVE = 6, 750 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_N = 7, 751 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_W = 8, 752 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_S = 9, 753 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_E = 10, 754 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_NW = 11, 755 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_SW = 12, 756 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_SE = 13, 757 ALLEGRO_SYSTEM_MOUSE_CURSOR_RESIZE_NE = 14, 758 ALLEGRO_SYSTEM_MOUSE_CURSOR_PROGRESS = 15, 759 ALLEGRO_SYSTEM_MOUSE_CURSOR_PRECISION = 16, 760 ALLEGRO_SYSTEM_MOUSE_CURSOR_LINK = 17, 761 ALLEGRO_SYSTEM_MOUSE_CURSOR_ALT_SELECT = 18, 762 ALLEGRO_SYSTEM_MOUSE_CURSOR_UNAVAILABLE = 19, 763 ALLEGRO_NUM_SYSTEM_MOUSE_CURSORS, 764 } 765 766 // path.h 767 version(Windows) { 768 enum ALLEGRO_NATIVE_PATH_SEP = '\\'; 769 enum ALLEGRO_NATIVE_DRIVE_SEP = ':'; 770 } else { 771 enum ALLEGRO_NATIVE_PATH_SEP = '/'; 772 enum ALLEGRO_NATIVE_DRIVE_SEP = '\0'; 773 } 774 775 struct ALLEGRO_PATH; 776 777 // render_state.h 778 alias ALLEGRO_RENDER_STATE = int; 779 enum { 780 ALLEGRO_ALPHA_TEST = 0x0010, 781 ALLEGRO_WRITE_MASK, 782 ALLEGRO_DEPTH_TEST, 783 ALLEGRO_DEPTH_FUNCTION, 784 ALLEGRO_ALPHA_FUNCTION, 785 ALLEGRO_ALPHA_TEST_VALUE, 786 } 787 788 alias ALLEGRO_RENDER_FUNCTION = int; 789 enum { 790 ALLEGRO_RENDER_NEVER, 791 ALLEGRO_RENDER_ALWAYS, 792 ALLEGRO_RENDER_LESS, 793 ALLEGRO_RENDER_EQUAL, 794 ALLEGRO_RENDER_LESS_EQUAL, 795 ALLEGRO_RENDER_GREATER, 796 ALLEGRO_RENDER_NOT_EQUAL, 797 ALLEGRO_RENDER_GREATER_EQUAL, 798 } 799 800 // shader.h 801 struct ALLEGRO_SHADER; 802 803 alias ALLEGRO_SHADER_TYPE = int; 804 enum { 805 ALLEGRO_VERTEX_SHADER, 806 ALLEGRO_PIXEL_SHADER, 807 } 808 809 alias ALLEGRO_SHADER_PLATFORM = int; 810 enum { 811 ALLEGRO_SHADER_AUTO, 812 ALLEGRO_SHADER_GLSL, 813 ALLEGRO_SHADER_HLSL, 814 } 815 816 enum { 817 ALLEGRO_SHADER_VAR_COLOR = "al_color", 818 ALLEGRO_SHADER_VAR_POS = "al_pos", 819 ALLEGRO_SHADER_VAR_PROJVIEW_MATRIX = "al_projview_matrix", 820 ALLEGRO_SHADER_VAR_TEX = "al_tex", 821 ALLEGRO_SHADER_VAR_TEXCOORD = "al_texcoord", 822 ALLEGRO_SHADER_VAR_TEX_MATRIX = "al_tex_matrix", 823 ALLEGRO_SHADER_VAR_USER_ATTR = "al_user_attr_", 824 ALLEGRO_SHADER_VAR_USE_TEX = "al_use_tex", 825 ALLEGRO_SHADER_VAR_USE_TEX_MATRIX = "al_use_tex_matrix", 826 } 827 828 // system.h 829 struct ALLEGRO_SYSTEM; 830 831 enum { 832 ALLEGRO_RESOURCES_PATH = 0, 833 ALLEGRO_TEMP_PATH, 834 ALLEGRO_USER_DATA_PATH, 835 ALLEGRO_USER_HOME_PATH, 836 ALLEGRO_USER_SETTINGS_PATH, 837 ALLEGRO_USER_DOCUMENTS_PATH, 838 ALLEGRO_EXENAME_PATH, 839 ALLEGRO_LAST_PATH, 840 } 841 842 alias ALLEGRO_WRITE_MASK_FLAGS = int; 843 enum { 844 ALLEGRO_MASK_RED = 1 << 0, 845 ALLEGRO_MASK_GREEN = 1 << 1, 846 ALLEGRO_MASK_BLUE = 1 << 2, 847 ALLEGRO_MASK_ALPHA = 1 << 3, 848 ALLEGRO_MASK_DEPTH = 1 << 4, 849 ALLEGRO_MASK_RGB = (ALLEGRO_MASK_RED | ALLEGRO_MASK_GREEN | ALLEGRO_MASK_BLUE), 850 ALLEGRO_MASK_RGBA = (ALLEGRO_MASK_RGB | ALLEGRO_MASK_ALPHA), 851 } 852 853 // threads.h 854 struct ALLEGRO_THREAD; 855 struct ALLEGRO_MUTEX; 856 struct ALLEGRO_COND; 857 858 // Callbac for al_create_thread 859 extern(C) nothrow alias threadProc = void* function(ALLEGRO_THREAD*,void*); 860 861 // timer.h 862 @nogc nothrow { 863 double ALLEGRO_USECS_TO_SECS(double x) { return x / 1_000_000; } 864 double ALLEGRO_MSECS_TO_SECS(double x) { return x / 1_000; } 865 double ALLEGRO_BPS_TO_SECS(double x) { 866 if(x > 0) { 867 return 1.0 / x; 868 } else { 869 return 0; 870 } 871 } 872 873 double ALLEGRO_BPM_TO_SECS(double x) { 874 if(x > 0) { 875 return 60.0 / x; 876 } else { 877 return 0; 878 } 879 } 880 } 881 882 struct ALLEGRO_TIMER; 883 884 // tls.h 885 alias ALLEGRO_STATE_FLAGS = int; 886 enum { 887 ALLEGRO_STATE_NEW_DISPLAY_PARAMETERS = 0x0001, 888 ALLEGRO_STATE_NEW_BITMAP_PARAMETERS = 0x0002, 889 ALLEGRO_STATE_DISPLAY = 0x0004, 890 ALLEGRO_STATE_TARGET_BITMAP = 0x0008, 891 ALLEGRO_STATE_BLENDER = 0x0010, 892 ALLEGRO_STATE_NEW_FILE_INTERFACE = 0x0020, 893 ALLEGRO_STATE_TRANSFORM = 0x0040, 894 895 ALLEGRO_STATE_BITMAP = ALLEGRO_STATE_TARGET_BITMAP + ALLEGRO_STATE_NEW_BITMAP_PARAMETERS, 896 897 ALLEGRO_STATE_ALL = 0xffff, 898 } 899 900 struct ALLEGRO_STATE { 901 ubyte[1024] _tls = void; 902 } 903 904 // touch_input.h 905 struct ALLEGRO_TOUCH_INPUT; 906 907 struct ALLEGRO_TOUCH_STATE { 908 int id; 909 float x, y; 910 float dx, dy; 911 bool primary; 912 ALLEGRO_DISPLAY* display; 913 } 914 915 enum ALLEGRO_TOUCH_INPUT_MAX_TOUCH_COUNT = 16; 916 917 struct ALLEGRO_TOUCH_INPUT_STATE { 918 ALLEGRO_TOUCH_STATE[ALLEGRO_TOUCH_INPUT_MAX_TOUCH_COUNT] touches = void; 919 } 920 921 // transformations.h 922 struct ALLEGRO_TRANSFORM { 923 float[4][4] m; 924 } 925 926 // utf8.h 927 struct ALLEGRO_USTR { 928 int mlen; 929 int slen; 930 ubyte* data; 931 } 932 933 alias ALLEGRO_USTR_INFO = ALLEGRO_USTR;