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.sdl2.internal.sdl_types; 29 30 import core.stdc.config, 31 core.stdc.stdio; 32 import derelict.util.system; 33 34 // SDL_version.h 35 struct SDL_version { 36 Uint8 major; 37 Uint8 minor; 38 Uint8 patch; 39 } 40 41 enum : Uint8 { 42 SDL_MAJOR_VERSION = 2, 43 SDL_MINOR_VERSION = 0, 44 SDL_PATCHLEVEL = 5, 45 } 46 47 @nogc nothrow pure { 48 void SDL_VERSION(SDL_version* x) { 49 x.major = SDL_MAJOR_VERSION; 50 x.minor = SDL_MINOR_VERSION; 51 x.patch = SDL_PATCHLEVEL; 52 } 53 54 Uint32 SDL_VERSIONNUM(Uint8 X, Uint8 Y, Uint8 Z) { 55 return X*1000 + Y*100 + Z; 56 } 57 58 Uint32 SDL_COMPILEDVERSION() { 59 return SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL); 60 } 61 62 bool SDL_VERSION_ATLEAST(Uint8 X, Uint8 Y, Uint8 Z) { 63 return (SDL_COMPILEDVERSION() >= SDL_VERSIONNUM(X, Y, Z)); 64 } 65 } 66 67 // From SDL_stdinc.h 68 enum SDL_bool { 69 SDL_FALSE = 0, 70 SDL_TRUE = 1 71 } 72 mixin(MakeEnum!SDL_bool); 73 74 alias Sint8 = byte; 75 alias Uint8 = ubyte; 76 alias Sint16 = short; 77 alias Uint16 = ushort; 78 alias Sint32 = int; 79 alias Uint32 = uint; 80 alias Sint64 = long; 81 alias Uint64 = ulong; 82 83 @nogc nothrow pure 84 Uint32 SDL_FOURCC(char A, char B, char C, char D) { 85 return ((A << 0) | (B << 8) | (C << 16) | (D << 24)); 86 } 87 88 // SDL.h 89 enum : Uint32 { 90 SDL_INIT_TIMER = 0x00000001, 91 SDL_INIT_AUDIO = 0x00000010, 92 SDL_INIT_VIDEO = 0x00000020, 93 SDL_INIT_JOYSTICK = 0x00000200, 94 SDL_INIT_HAPTIC = 0x00001000, 95 SDL_INIT_GAMECONTROLLER = 0x00002000, 96 SDL_INIT_EVENTS = 0x00004000, 97 SDL_INIT_NOPARACHUTE = 0x00100000, 98 SDL_INIT_EVERYTHING = 99 SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | 100 SDL_INIT_EVENTS | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | 101 SDL_INIT_GAMECONTROLLER 102 } 103 104 // SDL_assert.h 105 enum SDL_AssertState : Uint32 { 106 SDL_ASSERTION_RETRY = 0, 107 SDL_ASSERTION_BREAK = 1, 108 SDL_ASSERTION_ABORT = 2, 109 SDL_ASSERTION_IGNORE = 3, 110 SDL_ASSERTION_ALWAYS_IGNORE = 4 111 } 112 mixin(MakeEnum!SDL_AssertState); 113 alias SDL_assert_state = SDL_AssertState; 114 115 struct SDL_AssertData { 116 int always_ignore; 117 Uint32 trigger_count; 118 const(char) *condition; 119 const(char) *filename; 120 int linenum; 121 const(char) *function_; 122 const(SDL_AssertData) *next; 123 } 124 alias SDL_assert_data = SDL_AssertData; 125 126 extern(C) nothrow alias SDL_AssertionHandler = SDL_AssertState function(const(SDL_AssertData)* data, void* userdata); 127 128 // SDL_audio.h 129 enum SDL_AudioMask : Uint16 { 130 SDL_AUDIO_MASK_BITSIZE = 0xFF, 131 SDL_AUDIO_MASK_DATATYPE = 1<<8, 132 SDL_AUDIO_MASK_ENDIAN = 1<<12, 133 SDL_AUDIO_MASK_SIGNED = 1<<15, 134 } 135 mixin(MakeEnum!SDL_AudioMask); 136 137 @nogc nothrow pure { 138 int SDL_AUDIO_BITSIZE(SDL_AudioFormat x) { return x & SDL_AUDIO_MASK_BITSIZE; } 139 int SDL_AUDIO_ISFLOAT(SDL_AudioFormat x) { return x & SDL_AUDIO_MASK_DATATYPE; } 140 int SDL_AUDIO_ISBIGENDIAN(SDL_AudioFormat x) { return x & SDL_AUDIO_MASK_ENDIAN; } 141 int SDL_AUDIO_ISSIGNED(SDL_AudioFormat x) { return x & SDL_AUDIO_MASK_SIGNED; } 142 int SDL_AUDIO_ISINT(SDL_AudioFormat x) { return !SDL_AUDIO_ISFLOAT(x); } 143 int SDL_AUDIO_ISLITTLEENDIAN(SDL_AudioFormat x) { return !SDL_AUDIO_ISBIGENDIAN(x); } 144 int SDL_AUDIO_ISUNSIGNED(SDL_AudioFormat x) { return !SDL_AUDIO_ISSIGNED(x); } 145 } 146 147 enum SDL_AudioFormat : Uint16 { 148 AUDIO_U8 = 0x0008, 149 AUDIO_S8 = 0x8008, 150 AUDIO_U16LSB = 0x0010, 151 AUDIO_S16LSB = 0x8010, 152 AUDIO_U16MSB = 0x1010, 153 AUDIO_S16MSB = 0x9010, 154 AUDIO_U16 = AUDIO_U16LSB, 155 AUDIO_S16 = AUDIO_S16LSB, 156 AUDIO_S32LSB = 0x8020, 157 AUDIO_S32MSB = 0x9020, 158 AUDIO_S32 = AUDIO_S32LSB, 159 AUDIO_F32LSB = 0x8120, 160 AUDIO_F32MSB = 0x9120, 161 AUDIO_F32 = AUDIO_F32LSB, 162 } 163 mixin(MakeEnum!SDL_AudioFormat); 164 165 version(LittleEndian) { 166 alias AUDIO_U16SYS = AUDIO_U16LSB; 167 alias AUDIO_S16SYS = AUDIO_S16LSB; 168 alias AUDIO_S32SYS = AUDIO_S32LSB; 169 alias AUDIO_F32SYS = AUDIO_F32LSB; 170 } else { 171 alias AUDIO_U16SYS = AUDIO_U16MSB; 172 alias AUDIO_S16SYS = AUDIO_S16MSB; 173 alias AUDIO_S32SYS = AUDIO_S32MSB; 174 alias AUDIO_F32SYS = AUDIO_F32MSB; 175 } 176 177 enum { 178 SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = 0x00000001, 179 SDL_AUDIO_ALLOW_FORMAT_CHANGE = 0x00000002, 180 SDL_AUDIO_ALLOW_CHANNELS_CHANGE = 0x00000004, 181 SDL_AUDIO_ALLOW_ANY_CHANGE = (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE), 182 } 183 184 extern(C) nothrow alias SDL_AudioCallback = void function(void* userdata, Uint8* stream, int len); 185 struct SDL_AudioSpec { 186 int freq; 187 SDL_AudioFormat format; 188 Uint8 channels; 189 Uint8 silence; 190 Uint16 samples; 191 Uint16 padding; 192 Uint32 size; 193 SDL_AudioCallback callback; 194 void* userdata; 195 } 196 197 extern(C) nothrow alias SDL_AudioFilter = void function(SDL_AudioCVT* cvt, SDL_AudioFormat format); 198 enum SDL_AUDIOCVT_MAX_FILTERS = 9; 199 200 struct SDL_AudioCVT { 201 int needed; 202 SDL_AudioFormat src_format; 203 SDL_AudioFormat dst_format; 204 double rate_incr; 205 Uint8* buf; 206 int len; 207 int len_cvt; 208 int len_mult; 209 double len_ratio; 210 SDL_AudioFilter[SDL_AUDIOCVT_MAX_FILTERS + 1] filters; 211 int filter_index; 212 } 213 214 alias Uint32 SDL_AudioDeviceID; 215 216 enum SDL_AudioStatus { 217 SDL_AUDIO_STOPPED = 0, 218 SDL_AUDIO_PLAYING, 219 SDL_AUDIO_PAUSED, 220 } 221 mixin(MakeEnum!SDL_AudioStatus); 222 223 enum SDL_MIX_MAXVOLUME = 128; 224 225 // SDL_blendmode.h 226 enum SDL_BlendMode { 227 SDL_BLENDMODE_NONE = 0x00000000, 228 SDL_BLENDMODE_BLEND = 0x00000001, 229 SDL_BLENDMODE_ADD = 0x00000002, 230 SDL_BLENDMODE_MOD = 0x00000004, 231 SDL_BLENDMODE_INVALID = 0x7FFFFFFF, 232 } 233 mixin(MakeEnum!SDL_BlendMode); 234 235 enum SDL_BlendOperation { 236 SDL_BLENDOPERATION_ADD = 0x1, 237 SDL_BLENDOPERATION_SUBTRACT = 0x2, 238 SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, 239 SDL_BLENDOPERATION_MINIMUM = 0x4, 240 SDL_BLENDOPERATION_MAXIMUM = 0x5, 241 } 242 mixin(MakeEnum!SDL_BlendOperation); 243 244 enum SDL_BlendFactor { 245 SDL_BLENDFACTOR_ZERO = 0x1, 246 SDL_BLENDFACTOR_ONE = 0x2, 247 SDL_BLENDFACTOR_SRC_COLOR = 0x3, 248 SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, 249 SDL_BLENDFACTOR_SRC_ALPHA = 0x5, 250 SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, 251 SDL_BLENDFACTOR_DST_COLOR = 0x7, 252 SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, 253 SDL_BLENDFACTOR_DST_ALPHA = 0x9, 254 SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA, 255 } 256 mixin(MakeEnum!SDL_BlendFactor); 257 258 // SDL_cpuinfo.h 259 enum SDL_CACHELINE_SIZE = 128; 260 261 // SDL_events.h 262 enum { 263 SDL_RELEASED = 0, 264 SDL_PRESSED = 1, 265 } 266 267 enum SDL_EventType { 268 SDL_FIRSTEVENT = 0, 269 SDL_QUIT = 0x100, 270 SDL_APP_TERMINATING, 271 SDL_APP_LOWMEMORY, 272 SDL_APP_WILLENTERBACKGROUND, 273 SDL_APP_DIDENTERBACKGROUND, 274 SDL_APP_WILLENTERFOREGROUND, 275 SDL_APP_DIDENTERFOREGROUND, 276 SDL_WINDOWEVENT = 0x200, 277 SDL_SYSWMEVENT, 278 SDL_KEYDOWN = 0x300, 279 SDL_KEYUP, 280 SDL_TEXTEDITING, 281 SDL_TEXTINPUT, 282 SDL_KEYMAPCHANGED, 283 SDL_MOUSEMOTION = 0x400, 284 SDL_MOUSEBUTTONDOWN, 285 SDL_MOUSEBUTTONUP, 286 SDL_MOUSEWHEEL, 287 SDL_JOYAXISMOTION = 0x600, 288 SDL_JOYBALLMOTION, 289 SDL_JOYHATMOTION, 290 SDL_JOYBUTTONDOWN, 291 SDL_JOYBUTTONUP, 292 SDL_JOYDEVICEADDED, 293 SDL_JOYDEVICEREMOVED, 294 SDL_CONTROLLERAXISMOTION = 0x650, 295 SDL_CONTROLLERBUTTONDOWN, 296 SDL_CONTROLLERBUTTONUP, 297 SDL_CONTROLLERDEVICEADDED, 298 SDL_CONTROLLERDEVICEREMOVED, 299 SDL_CONTROLLERDEVICEREMAPPED, 300 SDL_FINGERDOWN = 0x700, 301 SDL_FINGERUP, 302 SDL_FINGERMOTION, 303 SDL_DOLLARGESTURE = 0x800, 304 SDL_DOLLARRECORD, 305 SDL_MULTIGESTURE, 306 SDL_CLIPBOARDUPDATE = 0x900, 307 SDL_DROPFILE = 0x1000, 308 SDL_DROPTEXT, 309 SDL_DROPBEGIN, 310 SDL_DROPCOMPLETE, 311 SDL_AUDIODEVICEADDED = 0x1100, 312 SDL_AUDIODEVICEREMOVED, 313 SDL_RENDER_TARGETS_RESET = 0x2000, 314 SDL_RENDER_DEVICE_RESET = 0x2001, 315 SDL_USEREVENT = 0x8000, 316 SDL_LASTEVENT = 0xFFFF 317 } 318 mixin(MakeEnum!SDL_EventType); 319 320 struct SDL_CommonEvent { 321 SDL_EventType type; 322 Uint32 timestamp; 323 } 324 325 struct SDL_WindowEvent { 326 SDL_EventType type; 327 Uint32 timestamp; 328 Uint32 windowID; 329 SDL_WindowEventID event; 330 Uint8 padding1; 331 Uint8 padding2; 332 Uint8 padding3; 333 Sint32 data1; 334 Sint32 data2; 335 } 336 337 struct SDL_KeyboardEvent { 338 SDL_EventType type; 339 Uint32 timestamp; 340 Uint32 windowID; 341 Uint8 state; 342 Uint8 repeat; 343 Uint8 padding2; 344 Uint8 padding3; 345 SDL_Keysym keysym; 346 } 347 348 enum SDL_TEXTEDITINGEVENT_TEXT_SIZE = 32; 349 struct SDL_TextEditingEvent { 350 SDL_EventType type; 351 Uint32 timestamp; 352 Uint32 windowID; 353 char[SDL_TEXTEDITINGEVENT_TEXT_SIZE] text; 354 Sint32 start; 355 Sint32 length; 356 } 357 358 enum SDL_TEXTINPUTEVENT_TEXT_SIZE = 32; 359 struct SDL_TextInputEvent { 360 SDL_EventType type; 361 Uint32 timestamp; 362 Uint32 windowID; 363 char[SDL_TEXTINPUTEVENT_TEXT_SIZE] text; 364 } 365 366 struct SDL_MouseMotionEvent { 367 SDL_EventType type; 368 Uint32 timestamp; 369 Uint32 windowID; 370 Uint32 which; 371 Uint32 state; 372 Sint32 x; 373 Sint32 y; 374 Sint32 xrel; 375 Sint32 yrel; 376 } 377 378 struct SDL_MouseButtonEvent { 379 SDL_EventType type; 380 Uint32 timestamp; 381 Uint32 windowID; 382 Uint32 which; 383 Uint8 button; 384 Uint8 state; 385 Uint8 clicks; 386 Uint8 padding1; 387 Sint32 x; 388 Sint32 y; 389 } 390 391 struct SDL_MouseWheelEvent { 392 SDL_EventType type; 393 Uint32 timestamp; 394 Uint32 windowID; 395 Uint32 which; 396 Sint32 x; 397 Sint32 y; 398 Uint32 direction; 399 } 400 401 struct SDL_JoyAxisEvent { 402 SDL_EventType type; 403 Uint32 timestamp; 404 SDL_JoystickID which; 405 Uint8 axis; 406 Uint8 padding1; 407 Uint8 padding2; 408 Uint8 padding3; 409 Sint16 value; 410 Uint16 padding4; 411 } 412 413 struct SDL_JoyBallEvent { 414 SDL_EventType type; 415 Uint32 timestamp; 416 SDL_JoystickID which; 417 Uint8 ball; 418 Uint8 padding1; 419 Uint8 padding2; 420 Uint8 padding3; 421 Sint16 xrel; 422 Sint16 yrel; 423 } 424 425 struct SDL_JoyHatEvent { 426 SDL_EventType type; 427 Uint32 timestamp; 428 SDL_JoystickID which; 429 Uint8 hat; 430 Uint8 value; 431 Uint8 padding1; 432 Uint8 padding2; 433 } 434 435 struct SDL_JoyButtonEvent { 436 SDL_EventType type; 437 Uint32 timestamp; 438 SDL_JoystickID which; 439 Uint8 button; 440 Uint8 state; 441 Uint8 padding1; 442 Uint8 padding2; 443 } 444 445 struct SDL_JoyDeviceEvent { 446 SDL_EventType type; 447 Uint32 timestamp; 448 Sint32 which; 449 } 450 451 struct SDL_ControllerAxisEvent { 452 SDL_EventType type; 453 Uint32 timestamp; 454 SDL_JoystickID which; 455 Uint8 axis; 456 Uint8 padding1; 457 Uint8 padding2; 458 Uint8 padding3; 459 Sint16 value; 460 Uint16 padding4; 461 } 462 463 struct SDL_ControllerButtonEvent { 464 SDL_EventType type; 465 Uint32 timestamp; 466 SDL_JoystickID which; 467 Uint8 button; 468 Uint8 state; 469 Uint8 padding1; 470 Uint8 padding2; 471 } 472 473 struct SDL_ControllerDeviceEvent { 474 SDL_EventType type; 475 Uint32 timestamp; 476 Sint32 which; 477 } 478 479 struct SDL_AudioDeviceEvent { 480 SDL_EventType type; 481 Uint32 timestamp; 482 Uint32 which; 483 Uint8 iscapture; 484 Uint8 padding1; 485 Uint8 padding2; 486 Uint8 padding3; 487 } 488 489 struct SDL_TouchFingerEvent { 490 SDL_EventType type; 491 Uint32 timestamp; 492 SDL_TouchID touchId; 493 SDL_FingerID fingerId; 494 float x; 495 float y; 496 float dx; 497 float dy; 498 float pressure; 499 } 500 501 struct SDL_MultiGestureEvent { 502 SDL_EventType type; 503 Uint32 timestamp; 504 SDL_TouchID touchId; 505 float dTheta; 506 float dDist; 507 float x; 508 float y; 509 Uint16 numFingers; 510 Uint16 padding; 511 } 512 513 struct SDL_DollarGestureEvent { 514 SDL_EventType type; 515 Uint32 timestamp; 516 SDL_TouchID touchId; 517 SDL_GestureID gestureId; 518 Uint32 numFingers; 519 float error; 520 float x; 521 float y; 522 } 523 524 struct SDL_DropEvent { 525 SDL_EventType type; 526 Uint32 timestamp; 527 char* file; 528 Uint32 windowID; // Added in SDL 2.0.5! 529 } 530 531 struct SDL_QuitEvent { 532 SDL_EventType type; 533 Uint32 timestamp; 534 } 535 536 struct SDL_OSEvent { 537 SDL_EventType type; 538 Uint32 timestamp; 539 } 540 541 struct SDL_UserEvent { 542 SDL_EventType type; 543 Uint32 timestamp; 544 Uint32 windowID; 545 Sint32 code; 546 void* data1; 547 void* data2; 548 } 549 550 struct SDL_SysWMEvent { 551 SDL_EventType type; 552 Uint32 timestamp; 553 SDL_SysWMmsg* msg; 554 } 555 556 union SDL_Event { 557 SDL_EventType type; 558 SDL_CommonEvent common; 559 SDL_WindowEvent window; 560 SDL_KeyboardEvent key; 561 SDL_TextEditingEvent edit; 562 SDL_TextInputEvent text; 563 SDL_MouseMotionEvent motion; 564 SDL_MouseButtonEvent button; 565 SDL_MouseWheelEvent wheel; 566 SDL_JoyAxisEvent jaxis; 567 SDL_JoyBallEvent jball; 568 SDL_JoyHatEvent jhat; 569 SDL_JoyButtonEvent jbutton; 570 SDL_JoyDeviceEvent jdevice; 571 SDL_ControllerAxisEvent caxis; 572 SDL_ControllerButtonEvent cbutton; 573 SDL_ControllerDeviceEvent cdevice; 574 SDL_AudioDeviceEvent adevice; 575 SDL_QuitEvent quit; 576 SDL_UserEvent user; 577 SDL_SysWMEvent syswm; 578 SDL_TouchFingerEvent tfinger; 579 SDL_MultiGestureEvent mgesture; 580 SDL_DollarGestureEvent dgesture; 581 SDL_DropEvent drop; 582 583 Uint8[56] padding; 584 } 585 586 enum SDL_eventaction { 587 SDL_ADDEVENT, 588 SDL_PEEKEVENT, 589 SDL_GETEVENT 590 } 591 mixin(MakeEnum!SDL_eventaction); 592 593 extern(C) nothrow alias SDL_EventFilter = int function(void* userdata, SDL_Event* event); 594 595 enum { 596 SDL_QUERY = -1, 597 SDL_IGNORE = 0, 598 SDL_DISABLE = 0, 599 SDL_ENABLE = 1, 600 } 601 602 // SDL_gamecontroller.h 603 struct SDL_GameController; 604 enum SDL_GameControllerBindType { 605 SDL_CONTROLLER_BINDTYPE_NONE = 0, 606 SDL_CONTROLLER_BINDTYPE_BUTTON, 607 SDL_CONTROLLER_BINDTYPE_AXIS, 608 SDL_CONTROLLER_BINDTYPE_HAT, 609 } 610 mixin(MakeEnum!SDL_GameControllerBindType); 611 612 struct SDL_GameControllerButtonBind { 613 SDL_GameControllerBindType bindType; 614 union value { 615 int button; 616 int axis; 617 struct hat { 618 int hat; 619 int hat_mask; 620 } 621 } 622 alias button = value.button; 623 alias axis = value.axis; 624 alias hat = value.hat; 625 } 626 627 enum SDL_GameControllerAxis { 628 SDL_CONTROLLER_AXIS_INVALID = -1, 629 SDL_CONTROLLER_AXIS_LEFTX, 630 SDL_CONTROLLER_AXIS_LEFTY, 631 SDL_CONTROLLER_AXIS_RIGHTX, 632 SDL_CONTROLLER_AXIS_RIGHTY, 633 SDL_CONTROLLER_AXIS_TRIGGERLEFT, 634 SDL_CONTROLLER_AXIS_TRIGGERRIGHT, 635 SDL_CONTROLLER_AXIS_MAX 636 } 637 mixin(MakeEnum!SDL_GameControllerAxis); 638 639 enum SDL_GameControllerButton { 640 SDL_CONTROLLER_BUTTON_INVALID = -1, 641 SDL_CONTROLLER_BUTTON_A, 642 SDL_CONTROLLER_BUTTON_B, 643 SDL_CONTROLLER_BUTTON_X, 644 SDL_CONTROLLER_BUTTON_Y, 645 SDL_CONTROLLER_BUTTON_BACK, 646 SDL_CONTROLLER_BUTTON_GUIDE, 647 SDL_CONTROLLER_BUTTON_START, 648 SDL_CONTROLLER_BUTTON_LEFTSTICK, 649 SDL_CONTROLLER_BUTTON_RIGHTSTICK, 650 SDL_CONTROLLER_BUTTON_LEFTSHOULDER, 651 SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, 652 SDL_CONTROLLER_BUTTON_DPAD_UP, 653 SDL_CONTROLLER_BUTTON_DPAD_DOWN, 654 SDL_CONTROLLER_BUTTON_DPAD_LEFT, 655 SDL_CONTROLLER_BUTTON_DPAD_RIGHT, 656 SDL_CONTROLLER_BUTTON_MAX 657 } 658 mixin(MakeEnum!SDL_GameControllerButton); 659 660 // SDL_gesture.h 661 alias SDL_GestureID = Sint64; 662 663 // SDL_haptic.h 664 struct SDL_Haptic; 665 666 enum SDL_D_HapticFlags : Uint16 { 667 SDL_HAPTIC_CONSTANT = 1u<<0, 668 SDL_HAPTIC_SINE = 1u<<1, 669 SDL_HAPTIC_LEFTRIGHT = 1u<<2, 670 SDL_HAPTIC_TRIANGLE = 1u<<3, 671 SDL_HAPTIC_SAWTOOTHUP = 1u<<4, 672 SDL_HAPTIC_SAWTOOTHDOWN = 1u<<5, 673 SDL_HAPTIC_RAMP = 1u<<6, 674 SDL_HAPTIC_SPRING = 1u<<7, 675 SDL_HAPTIC_DAMPER = 1u<<8, 676 SDL_HAPTIC_INERTIA = 1u<<9, 677 SDL_HAPTIC_FRICTION = 1u<<10, 678 SDL_HAPTIC_CUSTOM = 1u<<11, 679 SDL_HAPTIC_GAIN = 1u<<12, 680 SDL_HAPTIC_AUTOCENTER = 1u<<13, 681 SDL_HAPTIC_STATUS = 1u<<14, 682 SDL_HAPTIC_PAUSE = 1u<<15, 683 SDL_HAPTIC_POLAR = 0, 684 SDL_HAPTIC_CARTESIAN = 1, 685 SDL_HAPTIC_SPHERICAL = 2, 686 } 687 mixin(MakeEnum!SDL_D_HapticFlags); 688 689 enum SDL_HAPTIC_INFINITY = 4294967295U; 690 691 struct SDL_HapticDirection { 692 Uint8 type; 693 Sint32[3] dir; 694 } 695 696 struct SDL_HapticConstant { 697 SDL_D_HapticFlags type; 698 SDL_HapticDirection direction; 699 Uint32 length; 700 Uint16 delay; 701 Uint16 button; 702 Uint16 interval; 703 Sint16 level; 704 Uint16 attack_length; 705 Uint16 attack_level; 706 Uint16 fade_length; 707 Uint16 fade_level; 708 } 709 710 struct SDL_HapticPeriodic { 711 SDL_D_HapticFlags type; 712 SDL_HapticDirection direction; 713 Uint32 length; 714 Uint32 delay; 715 Uint16 button; 716 Uint16 interval; 717 Uint16 period; 718 Sint16 magnitude; 719 Sint16 offset; 720 Uint16 phase; 721 Uint16 attack_length; 722 Uint16 attack_level; 723 Uint16 fade_length; 724 Uint16 fade_level; 725 } 726 727 struct SDL_HapticCondition { 728 SDL_D_HapticFlags type; 729 SDL_HapticDirection direciton; 730 Uint32 length; 731 Uint16 delay; 732 Uint16 button; 733 Uint16 interval; 734 Uint16[3] right_sat; 735 Uint16[3] left_sat; 736 Sint16[3] right_coeff; 737 Sint16[3] left_coeff; 738 Uint16[3] deadband; 739 Uint16[3] center; 740 } 741 742 struct SDL_HapticRamp { 743 SDL_D_HapticFlags type; 744 SDL_HapticDirection direction; 745 Uint32 length; 746 Uint16 delay; 747 Uint16 button; 748 Uint16 interval; 749 Sint16 start; 750 Sint16 end; 751 Uint16 attack_length; 752 Uint16 attack_level; 753 Uint16 fade_length; 754 Uint16 fade_level; 755 } 756 757 struct SDL_HapticLeftRight { 758 SDL_D_HapticFlags type; 759 Uint32 length; 760 Uint16 large_magnitude; 761 Uint16 small_magnitude; 762 } 763 764 struct SDL_HapticCustom { 765 SDL_D_HapticFlags type; 766 SDL_HapticDirection direction; 767 Uint32 length; 768 Uint16 delay; 769 Uint16 button; 770 Uint16 interval; 771 Uint8 channels; 772 Uint16 period; 773 Uint16 samples; 774 Uint16* data; 775 Uint16 attack_length; 776 Uint16 attack_level; 777 Uint16 fade_length; 778 Uint16 fade_level; 779 } 780 781 union SDL_HapticEffect { 782 SDL_D_HapticFlags type; 783 SDL_HapticConstant constant; 784 SDL_HapticPeriodic periodic; 785 SDL_HapticCondition condition; 786 SDL_HapticRamp ramp; 787 SDL_HapticLeftRight leftright; 788 SDL_HapticCustom custom; 789 } 790 791 // SDL_hints.h 792 enum : string 793 { 794 SDL_HINT_FRAMEBUFFER_ACCELERATION = "SDL_FRAMEBUFFER_ACCELERATION", 795 SDL_HINT_RENDER_DRIVER = "SDL_RENDER_DRIVER", 796 SDL_HINT_RENDER_OPENGL_SHADERS = "SDL_RENDER_OPENGL_SHADERS", 797 SDL_HINT_RENDER_DIRECT3D_THREADSAFE = "SDL_RENDER_DIRECT3D_THREADSAFE", 798 SDL_HINT_RENDER_DIRECT3D11_DEBUG = "SDL_RENDER_DIRECT3D11_DEBUG", 799 SDL_HINT_RENDER_LOGICAL_SIZE_MODE = "SDL_RENDER_LOGICAL_SIZE_MODE", 800 SDL_HINT_RENDER_SCALE_QUALITY = "SDL_RENDER_SCALE_QUALITY", 801 SDL_HINT_RENDER_VSYNC = "SDL_RENDER_VSYNC", 802 SDL_HINT_VIDEO_ALLOW_SCREENSAVER = "SDL_VIDEO_ALLOW_SCREENSAVER", 803 SDL_HINT_VIDEO_X11_XVIDMODE = "SDL_VIDEO_X11_XVIDMODE", 804 SDL_HINT_VIDEO_X11_XINERAMA = "SDL_VIDEO_X11_XINERAMA", 805 SDL_HINT_VIDEO_X11_XRANDR = "SDL_VIDEO_X11_XRANDR", 806 SDL_HINT_VIDEO_X11_NET_WM_PING = "SDL_VIDEO_X11_NET_WM_PING", 807 SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN = "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN", 808 SDL_HINT_WINDOWS_INTRESOURCE_ICON = "SDL_WINDOWS_INTRESOURCE_ICON", 809 SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL = "SDL_WINDOWS_INTRESOURCE_ICON_SMALL", 810 SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP = "SDL_WINDOWS_ENABLE_MESSAGELOOP", 811 SDL_HINT_GRAB_KEYBOARD = "SDL_GRAB_KEYBOARD", 812 SDL_HINT_MOUSE_NORMAL_SPEED_SCALE = "SDL_MOUSE_NORMAL_SPEED_SCALE", 813 SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE = "SDL_MOUSE_RELATIVE_SPEED_SCALE", 814 SDL_HINT_MOUSE_RELATIVE_MODE_WARP = "SDL_MOUSE_RELATIVE_MODE_WARP", 815 SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH = "SDL_MOUSE_FOCUS_CLICKTHROUGH", 816 SDL_HINT_TOUCH_MOUSE_EVENTS = "SDL_TOUCH_MOUSE_EVENTS", 817 SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS = "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS", 818 SDL_HINT_IDLE_TIMER_DISABLED = "SDL_IOS_IDLE_TIMER_DISABLED", 819 SDL_HINT_ORIENTATIONS = "SDL_IOS_ORIENTATIONS", 820 SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS = "SDL_APPLE_TV_CONTROLLER_UI_EVENTS", 821 SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION = "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION", 822 SDL_HINT_ACCELEROMETER_AS_JOYSTICK = "SDL_ACCELEROMETER_AS_JOYSTICK", 823 SDL_HINT_XINPUT_ENABLED = "SDL_XINPUT_ENABLED", 824 SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING = "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING", 825 SDL_HINT_GAMECONTROLLERCONFIG = "SDL_GAMECONTROLLERCONFIG", 826 SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES = "SDL_GAMECONTROLLER_IGNORE_DEVICES", 827 SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT = "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT", 828 SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS = "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS", 829 SDL_HINT_ALLOW_TOPMOST = "SDL_ALLOW_TOPMOST", 830 SDL_HINT_TIMER_RESOLUTION = "SDL_TIMER_RESOLUTION", 831 SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION = "SDL_QTWAYLAND_CONTENT_ORIENTATION", 832 SDL_HINT_QTWAYLAND_WINDOW_FLAGS = "SDL_QTWAYLAND_WINDOW_FLAGS", 833 SDL_HINT_THREAD_STACK_SIZE = "SDL_THREAD_STACK_SIZE", 834 SDL_HINT_VIDEO_HIGHDPI_DISABLED = "SDL_VIDEO_HIGHDPI_DISABLED", 835 SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK = "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK", 836 SDL_HINT_VIDEO_WIN_D3DCOMPILER = "SDL_VIDEO_WIN_D3DCOMPILER", 837 SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT = "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT", 838 SDL_HINT_WINRT_PRIVACY_POLICY_URL = "SDL_WINRT_PRIVACY_POLICY_URL", 839 SDL_HINT_WINRT_PRIVACY_POLICY_LABEL = "SDL_WINRT_PRIVACY_POLICY_LABEL", 840 SDL_HINT_WINRT_HANDLE_BACK_BUTTON = "SDL_WINRT_HANDLE_BACK_BUTTON", 841 SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES = "SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES", 842 SDL_HINT_MAC_BACKGROUND_APP = "SDL_MAC_BACKGROUND_APP", 843 SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION", 844 SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION = "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION", 845 SDL_HINT_IME_INTERNAL_EDITING = "SDL_IME_INTERNAL_EDITING", 846 SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH = "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH", 847 SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT = "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT", 848 SDL_HINT_NO_SIGNAL_HANDLERS = "SDL_NO_SIGNAL_HANDLERS", 849 SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 = "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4", 850 SDL_HINT_BMP_SAVE_LEGACY_FORMAT = "SDL_BMP_SAVE_LEGACY_FORMAT", 851 SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING = "SDL_WINDOWS_DISABLE_THREAD_NAMING", 852 SDL_HINT_RPI_VIDEO_LAYER = "SDL_RPI_VIDEO_LAYER", 853 SDL_HINT_OPENGL_ES_DRIVER = "SDL_OPENGL_ES_DRIVER", 854 SDL_HINT_AUDIO_RESAMPLING_MODE = "SDL_AUDIO_RESAMPLING_MODE", 855 } 856 857 enum SDL_HintPriority { 858 SDL_HINT_DEFAULT, 859 SDL_HINT_NORMAL, 860 SDL_HINT_OVERRIDE, 861 } 862 mixin(MakeEnum!SDL_HintPriority); 863 864 extern(C) nothrow alias SDL_HintCallback = void function(void*, const(char)*, const(char)*); 865 866 // SDL_joystick.h 867 struct SDL_Joystick; 868 869 struct SDL_JoystickGUID { 870 Uint8[16] data; 871 } 872 873 alias SDL_JoystickID = Sint32; 874 875 enum SDL_JoystickType { 876 SDL_JOYSTICK_TYPE_UNKNOWN, 877 SDL_JOYSTICK_TYPE_GAMECONTROLLER, 878 SDL_JOYSTICK_TYPE_WHEEL, 879 SDL_JOYSTICK_TYPE_ARCADE_STICK, 880 SDL_JOYSTICK_TYPE_FLIGHT_STICK, 881 SDL_JOYSTICK_TYPE_DANCE_PAD, 882 SDL_JOYSTICK_TYPE_GUITAR, 883 SDL_JOYSTICK_TYPE_DRUM_KIT, 884 SDL_JOYSTICK_TYPE_ARCADE_PAD, 885 SDL_JOYSTICK_TYPE_THROTTLE, 886 } 887 mixin(MakeEnum!SDL_JoystickType); 888 889 enum SDL_JoystickPowerLevel { 890 SDL_JOYSTICK_POWER_UNKNOWN = -1, 891 SDL_JOYSTICK_POWER_EMPTY, 892 SDL_JOYSTICK_POWER_LOW, 893 SDL_JOYSTICK_POWER_MEDIUM, 894 SDL_JOYSTICK_POWER_FULL, 895 SDL_JOYSTICK_POWER_WIRED, 896 SDL_JOYSTICK_POWER_MAX 897 } 898 mixin(MakeEnum!SDL_JoystickPowerLevel); 899 900 enum { 901 SDL_JOYSTICK_AXIS_MAX = 32767, 902 SDL_JOYSTICK_AXIS_MIN = -32768, 903 } 904 905 enum : Uint8 { 906 SDL_HAT_CENTERED = 0x00, 907 SDL_HAT_UP = 0x01, 908 SDL_HAT_RIGHT = 0x02, 909 SDL_HAT_DOWN = 0x04, 910 SDL_HAT_LEFT = 0x08, 911 SDL_HAT_RIGHTUP = (SDL_HAT_RIGHT|SDL_HAT_UP), 912 SDL_HAT_RIGHTDOWN = (SDL_HAT_RIGHT|SDL_HAT_DOWN), 913 SDL_HAT_LEFTUP = (SDL_HAT_LEFT|SDL_HAT_UP), 914 SDL_HAT_LEFTDOWN = (SDL_HAT_LEFT|SDL_HAT_DOWN), 915 } 916 917 // SDL_keyboard.h 918 struct SDL_Keysym { 919 SDL_Scancode scancode; 920 SDL_Keycode sym; 921 Uint16 mod; 922 Uint32 unicode; 923 } 924 925 // SDL_messagebox.h 926 enum SDL_MessageBoxFlags { 927 SDL_MESSAGEBOX_ERROR = 0x00000010, 928 SDL_MESSAGEBOX_WARNING = 0x00000020, 929 SDL_MESSAGEBOX_INFORMATION = 0x00000040, 930 } 931 mixin(MakeEnum!SDL_MessageBoxFlags); 932 933 enum SDL_MessageBoxButtonFlags { 934 SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, 935 SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002, 936 } 937 mixin(MakeEnum!SDL_MessageBoxButtonFlags); 938 939 struct SDL_MessageBoxButtonData { 940 Uint32 flags; 941 int buttonid; 942 const(char)* text; 943 } 944 945 struct SDL_MessageBoxColor { 946 Uint8 r, g, b; 947 } 948 949 enum SDL_MessageBoxColorType { 950 SDL_MESSAGEBOX_COLOR_BACKGROUND, 951 SDL_MESSAGEBOX_COLOR_TEXT, 952 SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, 953 SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, 954 SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, 955 SDL_MESSAGEBOX_COLOR_MAX, 956 } 957 mixin(MakeEnum!SDL_MessageBoxColorType); 958 959 struct SDL_MessageBoxColorScheme { 960 SDL_MessageBoxColor[SDL_MESSAGEBOX_COLOR_MAX] colors; 961 } 962 963 struct SDL_MessageBoxData { 964 Uint32 flags; 965 SDL_Window* window; 966 const(char)* title; 967 const(char)* message; 968 int numbuttons; 969 const(SDL_MessageBoxButtonData)* buttons; 970 const(SDL_MessageBoxColorScheme)* colorScheme; 971 } 972 973 // SDL_scancode.h 974 enum SDL_Scancode { 975 SDL_SCANCODE_UNKNOWN = 0, 976 977 SDL_SCANCODE_A = 4, 978 SDL_SCANCODE_B = 5, 979 SDL_SCANCODE_C = 6, 980 SDL_SCANCODE_D = 7, 981 SDL_SCANCODE_E = 8, 982 SDL_SCANCODE_F = 9, 983 SDL_SCANCODE_G = 10, 984 SDL_SCANCODE_H = 11, 985 SDL_SCANCODE_I = 12, 986 SDL_SCANCODE_J = 13, 987 SDL_SCANCODE_K = 14, 988 SDL_SCANCODE_L = 15, 989 SDL_SCANCODE_M = 16, 990 SDL_SCANCODE_N = 17, 991 SDL_SCANCODE_O = 18, 992 SDL_SCANCODE_P = 19, 993 SDL_SCANCODE_Q = 20, 994 SDL_SCANCODE_R = 21, 995 SDL_SCANCODE_S = 22, 996 SDL_SCANCODE_T = 23, 997 SDL_SCANCODE_U = 24, 998 SDL_SCANCODE_V = 25, 999 SDL_SCANCODE_W = 26, 1000 SDL_SCANCODE_X = 27, 1001 SDL_SCANCODE_Y = 28, 1002 SDL_SCANCODE_Z = 29, 1003 1004 SDL_SCANCODE_1 = 30, 1005 SDL_SCANCODE_2 = 31, 1006 SDL_SCANCODE_3 = 32, 1007 SDL_SCANCODE_4 = 33, 1008 SDL_SCANCODE_5 = 34, 1009 SDL_SCANCODE_6 = 35, 1010 SDL_SCANCODE_7 = 36, 1011 SDL_SCANCODE_8 = 37, 1012 SDL_SCANCODE_9 = 38, 1013 SDL_SCANCODE_0 = 39, 1014 1015 SDL_SCANCODE_RETURN = 40, 1016 SDL_SCANCODE_ESCAPE = 41, 1017 SDL_SCANCODE_BACKSPACE = 42, 1018 SDL_SCANCODE_TAB = 43, 1019 SDL_SCANCODE_SPACE = 44, 1020 1021 SDL_SCANCODE_MINUS = 45, 1022 SDL_SCANCODE_EQUALS = 46, 1023 SDL_SCANCODE_LEFTBRACKET = 47, 1024 SDL_SCANCODE_RIGHTBRACKET = 48, 1025 SDL_SCANCODE_BACKSLASH = 49, 1026 SDL_SCANCODE_NONUSHASH = 50, 1027 SDL_SCANCODE_SEMICOLON = 51, 1028 SDL_SCANCODE_APOSTROPHE = 52, 1029 SDL_SCANCODE_GRAVE = 53, 1030 SDL_SCANCODE_COMMA = 54, 1031 SDL_SCANCODE_PERIOD = 55, 1032 SDL_SCANCODE_SLASH = 56, 1033 1034 SDL_SCANCODE_CAPSLOCK = 57, 1035 1036 SDL_SCANCODE_F1 = 58, 1037 SDL_SCANCODE_F2 = 59, 1038 SDL_SCANCODE_F3 = 60, 1039 SDL_SCANCODE_F4 = 61, 1040 SDL_SCANCODE_F5 = 62, 1041 SDL_SCANCODE_F6 = 63, 1042 SDL_SCANCODE_F7 = 64, 1043 SDL_SCANCODE_F8 = 65, 1044 SDL_SCANCODE_F9 = 66, 1045 SDL_SCANCODE_F10 = 67, 1046 SDL_SCANCODE_F11 = 68, 1047 SDL_SCANCODE_F12 = 69, 1048 1049 SDL_SCANCODE_PRINTSCREEN = 70, 1050 SDL_SCANCODE_SCROLLLOCK = 71, 1051 SDL_SCANCODE_PAUSE = 72, 1052 SDL_SCANCODE_INSERT = 73, 1053 SDL_SCANCODE_HOME = 74, 1054 SDL_SCANCODE_PAGEUP = 75, 1055 SDL_SCANCODE_DELETE = 76, 1056 SDL_SCANCODE_END = 77, 1057 SDL_SCANCODE_PAGEDOWN = 78, 1058 SDL_SCANCODE_RIGHT = 79, 1059 SDL_SCANCODE_LEFT = 80, 1060 SDL_SCANCODE_DOWN = 81, 1061 SDL_SCANCODE_UP = 82, 1062 1063 SDL_SCANCODE_NUMLOCKCLEAR = 83, 1064 SDL_SCANCODE_KP_DIVIDE = 84, 1065 SDL_SCANCODE_KP_MULTIPLY = 85, 1066 SDL_SCANCODE_KP_MINUS = 86, 1067 SDL_SCANCODE_KP_PLUS = 87, 1068 SDL_SCANCODE_KP_ENTER = 88, 1069 SDL_SCANCODE_KP_1 = 89, 1070 SDL_SCANCODE_KP_2 = 90, 1071 SDL_SCANCODE_KP_3 = 91, 1072 SDL_SCANCODE_KP_4 = 92, 1073 SDL_SCANCODE_KP_5 = 93, 1074 SDL_SCANCODE_KP_6 = 94, 1075 SDL_SCANCODE_KP_7 = 95, 1076 SDL_SCANCODE_KP_8 = 96, 1077 SDL_SCANCODE_KP_9 = 97, 1078 SDL_SCANCODE_KP_0 = 98, 1079 SDL_SCANCODE_KP_PERIOD = 99, 1080 1081 SDL_SCANCODE_NONUSBACKSLASH = 100, 1082 SDL_SCANCODE_APPLICATION = 101, 1083 SDL_SCANCODE_POWER = 102, 1084 SDL_SCANCODE_KP_EQUALS = 103, 1085 SDL_SCANCODE_F13 = 104, 1086 SDL_SCANCODE_F14 = 105, 1087 SDL_SCANCODE_F15 = 106, 1088 SDL_SCANCODE_F16 = 107, 1089 SDL_SCANCODE_F17 = 108, 1090 SDL_SCANCODE_F18 = 109, 1091 SDL_SCANCODE_F19 = 110, 1092 SDL_SCANCODE_F20 = 111, 1093 SDL_SCANCODE_F21 = 112, 1094 SDL_SCANCODE_F22 = 113, 1095 SDL_SCANCODE_F23 = 114, 1096 SDL_SCANCODE_F24 = 115, 1097 SDL_SCANCODE_EXECUTE = 116, 1098 SDL_SCANCODE_HELP = 117, 1099 SDL_SCANCODE_MENU = 118, 1100 SDL_SCANCODE_SELECT = 119, 1101 SDL_SCANCODE_STOP = 120, 1102 SDL_SCANCODE_AGAIN = 121, 1103 SDL_SCANCODE_UNDO = 122, 1104 SDL_SCANCODE_CUT = 123, 1105 SDL_SCANCODE_COPY = 124, 1106 SDL_SCANCODE_PASTE = 125, 1107 SDL_SCANCODE_FIND = 126, 1108 SDL_SCANCODE_MUTE = 127, 1109 SDL_SCANCODE_VOLUMEUP = 128, 1110 SDL_SCANCODE_VOLUMEDOWN = 129, 1111 SDL_SCANCODE_KP_COMMA = 133, 1112 SDL_SCANCODE_KP_EQUALSAS400 = 134, 1113 1114 SDL_SCANCODE_INTERNATIONAL1 = 135, 1115 SDL_SCANCODE_INTERNATIONAL2 = 136, 1116 SDL_SCANCODE_INTERNATIONAL3 = 137, 1117 SDL_SCANCODE_INTERNATIONAL4 = 138, 1118 SDL_SCANCODE_INTERNATIONAL5 = 139, 1119 SDL_SCANCODE_INTERNATIONAL6 = 140, 1120 SDL_SCANCODE_INTERNATIONAL7 = 141, 1121 SDL_SCANCODE_INTERNATIONAL8 = 142, 1122 SDL_SCANCODE_INTERNATIONAL9 = 143, 1123 SDL_SCANCODE_LANG1 = 144, 1124 SDL_SCANCODE_LANG2 = 145, 1125 SDL_SCANCODE_LANG3 = 146, 1126 SDL_SCANCODE_LANG4 = 147, 1127 SDL_SCANCODE_LANG5 = 148, 1128 SDL_SCANCODE_LANG6 = 149, 1129 SDL_SCANCODE_LANG7 = 150, 1130 SDL_SCANCODE_LANG8 = 151, 1131 SDL_SCANCODE_LANG9 = 152, 1132 1133 SDL_SCANCODE_ALTERASE = 153, 1134 SDL_SCANCODE_SYSREQ = 154, 1135 SDL_SCANCODE_CANCEL = 155, 1136 SDL_SCANCODE_CLEAR = 156, 1137 SDL_SCANCODE_PRIOR = 157, 1138 SDL_SCANCODE_RETURN2 = 158, 1139 SDL_SCANCODE_SEPARATOR = 159, 1140 SDL_SCANCODE_OUT = 160, 1141 SDL_SCANCODE_OPER = 161, 1142 SDL_SCANCODE_CLEARAGAIN = 162, 1143 SDL_SCANCODE_CRSEL = 163, 1144 SDL_SCANCODE_EXSEL = 164, 1145 1146 SDL_SCANCODE_KP_00 = 176, 1147 SDL_SCANCODE_KP_000 = 177, 1148 SDL_SCANCODE_THOUSANDSSEPARATOR = 178, 1149 SDL_SCANCODE_DECIMALSEPARATOR = 179, 1150 SDL_SCANCODE_CURRENCYUNIT = 180, 1151 SDL_SCANCODE_CURRENCYSUBUNIT = 181, 1152 SDL_SCANCODE_KP_LEFTPAREN = 182, 1153 SDL_SCANCODE_KP_RIGHTPAREN = 183, 1154 SDL_SCANCODE_KP_LEFTBRACE = 184, 1155 SDL_SCANCODE_KP_RIGHTBRACE = 185, 1156 SDL_SCANCODE_KP_TAB = 186, 1157 SDL_SCANCODE_KP_BACKSPACE = 187, 1158 SDL_SCANCODE_KP_A = 188, 1159 SDL_SCANCODE_KP_B = 189, 1160 SDL_SCANCODE_KP_C = 190, 1161 SDL_SCANCODE_KP_D = 191, 1162 SDL_SCANCODE_KP_E = 192, 1163 SDL_SCANCODE_KP_F = 193, 1164 SDL_SCANCODE_KP_XOR = 194, 1165 SDL_SCANCODE_KP_POWER = 195, 1166 SDL_SCANCODE_KP_PERCENT = 196, 1167 SDL_SCANCODE_KP_LESS = 197, 1168 SDL_SCANCODE_KP_GREATER = 198, 1169 SDL_SCANCODE_KP_AMPERSAND = 199, 1170 SDL_SCANCODE_KP_DBLAMPERSAND = 200, 1171 SDL_SCANCODE_KP_VERTICALBAR = 201, 1172 SDL_SCANCODE_KP_DBLVERTICALBAR = 202, 1173 SDL_SCANCODE_KP_COLON = 203, 1174 SDL_SCANCODE_KP_HASH = 204, 1175 SDL_SCANCODE_KP_SPACE = 205, 1176 SDL_SCANCODE_KP_AT = 206, 1177 SDL_SCANCODE_KP_EXCLAM = 207, 1178 SDL_SCANCODE_KP_MEMSTORE = 208, 1179 SDL_SCANCODE_KP_MEMRECALL = 209, 1180 SDL_SCANCODE_KP_MEMCLEAR = 210, 1181 SDL_SCANCODE_KP_MEMADD = 211, 1182 SDL_SCANCODE_KP_MEMSUBTRACT = 212, 1183 SDL_SCANCODE_KP_MEMMULTIPLY = 213, 1184 SDL_SCANCODE_KP_MEMDIVIDE = 214, 1185 SDL_SCANCODE_KP_PLUSMINUS = 215, 1186 SDL_SCANCODE_KP_CLEAR = 216, 1187 SDL_SCANCODE_KP_CLEARENTRY = 217, 1188 SDL_SCANCODE_KP_BINARY = 218, 1189 SDL_SCANCODE_KP_OCTAL = 219, 1190 SDL_SCANCODE_KP_DECIMAL = 220, 1191 SDL_SCANCODE_KP_HEXADECIMAL = 221, 1192 1193 SDL_SCANCODE_LCTRL = 224, 1194 SDL_SCANCODE_LSHIFT = 225, 1195 SDL_SCANCODE_LALT = 226, 1196 SDL_SCANCODE_LGUI = 227, 1197 SDL_SCANCODE_RCTRL = 228, 1198 SDL_SCANCODE_RSHIFT = 229, 1199 SDL_SCANCODE_RALT = 230, 1200 SDL_SCANCODE_RGUI = 231, 1201 1202 SDL_SCANCODE_MODE = 257, 1203 1204 SDL_SCANCODE_AUDIONEXT = 258, 1205 SDL_SCANCODE_AUDIOPREV = 259, 1206 SDL_SCANCODE_AUDIOSTOP = 260, 1207 SDL_SCANCODE_AUDIOPLAY = 261, 1208 SDL_SCANCODE_AUDIOMUTE = 262, 1209 SDL_SCANCODE_MEDIASELECT = 263, 1210 SDL_SCANCODE_WWW = 264, 1211 SDL_SCANCODE_MAIL = 265, 1212 SDL_SCANCODE_CALCULATOR = 266, 1213 SDL_SCANCODE_COMPUTER = 267, 1214 SDL_SCANCODE_AC_SEARCH = 268, 1215 SDL_SCANCODE_AC_HOME = 269, 1216 SDL_SCANCODE_AC_BACK = 270, 1217 SDL_SCANCODE_AC_FORWARD = 271, 1218 SDL_SCANCODE_AC_STOP = 272, 1219 SDL_SCANCODE_AC_REFRESH = 273, 1220 SDL_SCANCODE_AC_BOOKMARKS = 274, 1221 1222 SDL_SCANCODE_BRIGHTNESSDOWN = 275, 1223 SDL_SCANCODE_BRIGHTNESSUP = 276, 1224 SDL_SCANCODE_DISPLAYSWITCH = 277, 1225 SDL_SCANCODE_KBDILLUMTOGGLE = 278, 1226 SDL_SCANCODE_KBDILLUMDOWN = 279, 1227 SDL_SCANCODE_KBDILLUMUP = 280, 1228 SDL_SCANCODE_EJECT = 281, 1229 SDL_SCANCODE_SLEEP = 282, 1230 1231 SDL_SCANCODE_APP1 = 283, 1232 SDL_SCANCODE_APP2 = 284, 1233 1234 SDL_SCANCODE_AUDIOREWIND = 285, 1235 SDL_SCANCODE_AUDIOFASTFORWARD = 286, 1236 1237 SDL_NUM_SCANCODES = 512 1238 } 1239 mixin(MakeEnum!SDL_Scancode); 1240 1241 // SDL_keycode.h 1242 enum SDLK_SCANCODE_MASK = 1<<30; 1243 @nogc nothrow pure int SDL_SCANCODE_TO_KEYCODE(SDL_Scancode X) { 1244 return (X | SDLK_SCANCODE_MASK); 1245 } 1246 1247 enum SDL_Keycode { 1248 SDLK_UNKNOWN = 0, 1249 SDLK_RETURN = '\r', 1250 SDLK_ESCAPE = '\033', 1251 SDLK_BACKSPACE = '\b', 1252 SDLK_TAB = '\t', 1253 SDLK_SPACE = ' ', 1254 SDLK_EXCLAIM = '!', 1255 SDLK_QUOTEDBL = '"', 1256 SDLK_HASH = '#', 1257 SDLK_PERCENT = '%', 1258 SDLK_DOLLAR = '$', 1259 SDLK_AMPERSAND = '&', 1260 SDLK_QUOTE = '\'', 1261 SDLK_LEFTPAREN = '(', 1262 SDLK_RIGHTPAREN = ')', 1263 SDLK_ASTERISK = '*', 1264 SDLK_PLUS = '+', 1265 SDLK_COMMA = ',', 1266 SDLK_MINUS = '-', 1267 SDLK_PERIOD = '.', 1268 SDLK_SLASH = '/', 1269 SDLK_0 = '0', 1270 SDLK_1 = '1', 1271 SDLK_2 = '2', 1272 SDLK_3 = '3', 1273 SDLK_4 = '4', 1274 SDLK_5 = '5', 1275 SDLK_6 = '6', 1276 SDLK_7 = '7', 1277 SDLK_8 = '8', 1278 SDLK_9 = '9', 1279 SDLK_COLON = ':', 1280 SDLK_SEMICOLON = ';', 1281 SDLK_LESS = '<', 1282 SDLK_EQUALS = '=', 1283 SDLK_GREATER = '>', 1284 SDLK_QUESTION = '?', 1285 SDLK_AT = '@', 1286 1287 SDLK_LEFTBRACKET = '[', 1288 SDLK_BACKSLASH = '\\', 1289 SDLK_RIGHTBRACKET = ']', 1290 SDLK_CARET = '^', 1291 SDLK_UNDERSCORE = '_', 1292 SDLK_BACKQUOTE = '`', 1293 SDLK_a = 'a', 1294 SDLK_b = 'b', 1295 SDLK_c = 'c', 1296 SDLK_d = 'd', 1297 SDLK_e = 'e', 1298 SDLK_f = 'f', 1299 SDLK_g = 'g', 1300 SDLK_h = 'h', 1301 SDLK_i = 'i', 1302 SDLK_j = 'j', 1303 SDLK_k = 'k', 1304 SDLK_l = 'l', 1305 SDLK_m = 'm', 1306 SDLK_n = 'n', 1307 SDLK_o = 'o', 1308 SDLK_p = 'p', 1309 SDLK_q = 'q', 1310 SDLK_r = 'r', 1311 SDLK_s = 's', 1312 SDLK_t = 't', 1313 SDLK_u = 'u', 1314 SDLK_v = 'v', 1315 SDLK_w = 'w', 1316 SDLK_x = 'x', 1317 SDLK_y = 'y', 1318 SDLK_z = 'z', 1319 1320 SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CAPSLOCK), 1321 1322 SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F1), 1323 SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F2), 1324 SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F3), 1325 SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F4), 1326 SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F5), 1327 SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F6), 1328 SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F7), 1329 SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F8), 1330 SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F9), 1331 SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F10), 1332 SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F11), 1333 SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F12), 1334 1335 SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PRINTSCREEN), 1336 SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_SCROLLLOCK), 1337 SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PAUSE), 1338 SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_INSERT), 1339 SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_HOME), 1340 SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PAGEUP), 1341 SDLK_DELETE = '\177', 1342 SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_END), 1343 SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PAGEDOWN), 1344 SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RIGHT), 1345 SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_LEFT), 1346 SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_DOWN), 1347 SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_UP), 1348 1349 SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_NUMLOCKCLEAR), 1350 SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_DIVIDE), 1351 SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MULTIPLY), 1352 SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MINUS), 1353 SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_PLUS), 1354 SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_ENTER), 1355 SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_1), 1356 SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_2), 1357 SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_3), 1358 SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_4), 1359 SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_5), 1360 SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_6), 1361 SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_7), 1362 SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_8), 1363 SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_9), 1364 SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_0), 1365 SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_PERIOD), 1366 1367 SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_APPLICATION), 1368 SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_POWER), 1369 SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_EQUALS), 1370 SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F13), 1371 SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F14), 1372 SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F15), 1373 SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F16), 1374 SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F17), 1375 SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F18), 1376 SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F19), 1377 SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F20), 1378 SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F21), 1379 SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F22), 1380 SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F23), 1381 SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_F24), 1382 SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_EXECUTE), 1383 SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_HELP), 1384 SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_MENU), 1385 SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_SELECT), 1386 SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_STOP), 1387 SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AGAIN), 1388 SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_UNDO), 1389 SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CUT), 1390 SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_COPY), 1391 SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PASTE), 1392 SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_FIND), 1393 SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_MUTE), 1394 SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_VOLUMEUP), 1395 SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_VOLUMEDOWN), 1396 SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_COMMA), 1397 SDLK_KP_EQUALSAS400 = 1398 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_EQUALSAS400), 1399 1400 SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_ALTERASE), 1401 SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_SYSREQ), 1402 SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CANCEL), 1403 SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CLEAR), 1404 SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_PRIOR), 1405 SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RETURN2), 1406 SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_SEPARATOR), 1407 SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_OUT), 1408 SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_OPER), 1409 SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CLEARAGAIN), 1410 SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CRSEL), 1411 SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_EXSEL), 1412 1413 SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_00), 1414 SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_000), 1415 SDLK_THOUSANDSSEPARATOR = 1416 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_THOUSANDSSEPARATOR), 1417 SDLK_DECIMALSEPARATOR = 1418 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_DECIMALSEPARATOR), 1419 SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CURRENCYUNIT), 1420 SDLK_CURRENCYSUBUNIT = 1421 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CURRENCYSUBUNIT), 1422 SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_LEFTPAREN), 1423 SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_RIGHTPAREN), 1424 SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_LEFTBRACE), 1425 SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_RIGHTBRACE), 1426 SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_TAB), 1427 SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_BACKSPACE), 1428 SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_A), 1429 SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_B), 1430 SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_C), 1431 SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_D), 1432 SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_E), 1433 SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_F), 1434 SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_XOR), 1435 SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_POWER), 1436 SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_PERCENT), 1437 SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_LESS), 1438 SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_GREATER), 1439 SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_AMPERSAND), 1440 SDLK_KP_DBLAMPERSAND = 1441 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_DBLAMPERSAND), 1442 SDLK_KP_VERTICALBAR = 1443 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_VERTICALBAR), 1444 SDLK_KP_DBLVERTICALBAR = 1445 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_DBLVERTICALBAR), 1446 SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_COLON), 1447 SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_HASH), 1448 SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_SPACE), 1449 SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_AT), 1450 SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_EXCLAM), 1451 SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMSTORE), 1452 SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMRECALL), 1453 SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMCLEAR), 1454 SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMADD), 1455 SDLK_KP_MEMSUBTRACT = 1456 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMSUBTRACT), 1457 SDLK_KP_MEMMULTIPLY = 1458 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMMULTIPLY), 1459 SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_MEMDIVIDE), 1460 SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_PLUSMINUS), 1461 SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_CLEAR), 1462 SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_CLEARENTRY), 1463 SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_BINARY), 1464 SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_OCTAL), 1465 SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_DECIMAL), 1466 SDLK_KP_HEXADECIMAL = 1467 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KP_HEXADECIMAL), 1468 1469 SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_LCTRL), 1470 SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_LSHIFT), 1471 SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_LALT), 1472 SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_LGUI), 1473 SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RCTRL), 1474 SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RSHIFT), 1475 SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RALT), 1476 SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_RGUI), 1477 1478 SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_MODE), 1479 1480 SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIONEXT), 1481 SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOPREV), 1482 SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOSTOP), 1483 SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOPLAY), 1484 SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOMUTE), 1485 SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_MEDIASELECT), 1486 SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_WWW), 1487 SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_MAIL), 1488 SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_CALCULATOR), 1489 SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_COMPUTER), 1490 SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_SEARCH), 1491 SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_HOME), 1492 SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_BACK), 1493 SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_FORWARD), 1494 SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_STOP), 1495 SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_REFRESH), 1496 SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AC_BOOKMARKS), 1497 1498 SDLK_BRIGHTNESSDOWN = 1499 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_BRIGHTNESSDOWN), 1500 SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_BRIGHTNESSUP), 1501 SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_DISPLAYSWITCH), 1502 SDLK_KBDILLUMTOGGLE = 1503 SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KBDILLUMTOGGLE), 1504 SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KBDILLUMDOWN), 1505 SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_KBDILLUMUP), 1506 SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_EJECT), 1507 SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_SLEEP), 1508 SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_APP1), 1509 SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_APP2), 1510 1511 SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOREWIND), 1512 SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_Scancode.SDL_SCANCODE_AUDIOFASTFORWARD), 1513 1514 } 1515 mixin(MakeEnum!SDL_Keycode); 1516 1517 enum SDL_Keymod { 1518 KMOD_NONE = 0x0000, 1519 KMOD_LSHIFT = 0x0001, 1520 KMOD_RSHIFT = 0x0002, 1521 KMOD_LCTRL = 0x0040, 1522 KMOD_RCTRL = 0x0080, 1523 KMOD_LALT = 0x0100, 1524 KMOD_RALT = 0x0200, 1525 KMOD_LGUI = 0x0400, 1526 KMOD_RGUI = 0x0800, 1527 KMOD_NUM = 0x1000, 1528 KMOD_CAPS = 0x2000, 1529 KMOD_MODE = 0x4000, 1530 KMOD_RESERVED = 0x8000, 1531 1532 KMOD_CTRL = (KMOD_LCTRL|KMOD_RCTRL), 1533 KMOD_SHIFT = (KMOD_LSHIFT|KMOD_RSHIFT), 1534 KMOD_ALT = (KMOD_LALT|KMOD_RALT), 1535 KMOD_GUI = (KMOD_LGUI|KMOD_RGUI), 1536 } 1537 mixin(MakeEnum!SDL_Keymod); 1538 1539 // SDL_log.h 1540 enum SDL_MAX_LOG_MESSAGE = 4096; 1541 1542 enum { 1543 SDL_LOG_CATEGORY_APPLICATION, 1544 SDL_LOG_CATEGORY_ERROR, 1545 SDL_LOG_CATEGORY_ASSERT, 1546 SDL_LOG_CATEGORY_SYSTEM, 1547 SDL_LOG_CATEGORY_AUDIO, 1548 SDL_LOG_CATEGORY_VIDEO, 1549 SDL_LOG_CATEGORY_RENDER, 1550 SDL_LOG_CATEGORY_INPUT, 1551 1552 SDL_LOG_CATEGORY_RESERVED1, 1553 SDL_LOG_CATEGORY_RESERVED2, 1554 SDL_LOG_CATEGORY_RESERVED3, 1555 SDL_LOG_CATEGORY_RESERVED4, 1556 SDL_LOG_CATEGORY_RESERVED5, 1557 SDL_LOG_CATEGORY_RESERVED6, 1558 SDL_LOG_CATEGORY_RESERVED7, 1559 SDL_LOG_CATEGORY_RESERVED8, 1560 SDL_LOG_CATEGORY_RESERVED9, 1561 SDL_LOG_CATEGORY_RESERVED10, 1562 1563 SDL_LOG_CATEGORY_CUSTOM 1564 } 1565 1566 enum SDL_LogPriority { 1567 SDL_LOG_PRIORITY_VERBOSE = 1, 1568 SDL_LOG_PRIORITY_DEBUG, 1569 SDL_LOG_PRIORITY_INFO, 1570 SDL_LOG_PRIORITY_WARN, 1571 SDL_LOG_PRIORITY_ERROR, 1572 SDL_LOG_PRIORITY_CRITICAL, 1573 SDL_NUM_LOG_PRIORITIES 1574 } 1575 mixin(MakeEnum!SDL_LogPriority); 1576 1577 extern(C) nothrow alias SDL_LogOutputFunction = void function(void*, int, SDL_LogPriority, const(char)*); 1578 1579 // SDL_mouse.h 1580 struct SDL_Cursor; 1581 1582 @nogc nothrow pure Uint8 SDL_BUTTON(Uint8 X) { 1583 return cast(Uint8)(1 << (X - 1)); 1584 } 1585 1586 enum SDL_SystemCursor { 1587 SDL_SYSTEM_CURSOR_ARROW, 1588 SDL_SYSTEM_CURSOR_IBEAM, 1589 SDL_SYSTEM_CURSOR_WAIT, 1590 SDL_SYSTEM_CURSOR_CROSSHAIR, 1591 SDL_SYSTEM_CURSOR_WAITARROW, 1592 SDL_SYSTEM_CURSOR_SIZENWSE, 1593 SDL_SYSTEM_CURSOR_SIZENESW, 1594 SDL_SYSTEM_CURSOR_SIZEWE, 1595 SDL_SYSTEM_CURSOR_SIZENS, 1596 SDL_SYSTEM_CURSOR_SIZEALL, 1597 SDL_SYSTEM_CURSOR_NO, 1598 SDL_SYSTEM_CURSOR_HAND, 1599 SDL_NUM_SYSTEM_CURSORS 1600 } 1601 mixin(MakeEnum!SDL_SystemCursor); 1602 1603 enum SDL_MouseWheelDirection { 1604 SDL_MOUSEWHEEL_NORMAL, 1605 SDL_MOUSEWHEEL_FLIPPED 1606 } 1607 mixin(MakeEnum!SDL_MouseWheelDirection); 1608 1609 enum SDL_D_MouseButton : Uint8 { 1610 SDL_BUTTON_LEFT = 1, 1611 SDL_BUTTON_MIDDLE = 2, 1612 SDL_BUTTON_RIGHT = 3, 1613 SDL_BUTTON_X1 = 4, 1614 SDL_BUTTON_X2 = 5, 1615 SDL_BUTTON_LMASK = SDL_BUTTON(SDL_BUTTON_LEFT), 1616 SDL_BUTTON_MMASK = SDL_BUTTON(SDL_BUTTON_MIDDLE), 1617 SDL_BUTTON_RMASK = SDL_BUTTON(SDL_BUTTON_RIGHT), 1618 SDL_BUTTON_X1MASK = SDL_BUTTON(SDL_BUTTON_X1), 1619 SDL_BUTTON_X2MASK = SDL_BUTTON(SDL_BUTTON_X2), 1620 } 1621 mixin(MakeEnum!SDL_D_MouseButton); 1622 1623 // SDL_pixels.h 1624 enum SDL_ALPHA_OPAQUE = 255; 1625 enum SDL_ALPHA_TRANSPARENT = 0; 1626 1627 enum { 1628 SDL_PIXELTYPE_UNKNOWN, 1629 SDL_PIXELTYPE_INDEX1, 1630 SDL_PIXELTYPE_INDEX4, 1631 SDL_PIXELTYPE_INDEX8, 1632 SDL_PIXELTYPE_PACKED8, 1633 SDL_PIXELTYPE_PACKED16, 1634 SDL_PIXELTYPE_PACKED32, 1635 SDL_PIXELTYPE_ARRAYU8, 1636 SDL_PIXELTYPE_ARRAYU16, 1637 SDL_PIXELTYPE_ARRAYU32, 1638 SDL_PIXELTYPE_ARRAYF16, 1639 SDL_PIXELTYPE_ARRAYF32 1640 } 1641 1642 enum { 1643 SDL_BITMAPORDER_NONE, 1644 SDL_BITMAPORDER_4321, 1645 SDL_BITMAPORDER_1234 1646 } 1647 1648 enum { 1649 SDL_PACKEDORDER_NONE, 1650 SDL_PACKEDORDER_XRGB, 1651 SDL_PACKEDORDER_RGBX, 1652 SDL_PACKEDORDER_ARGB, 1653 SDL_PACKEDORDER_RGBA, 1654 SDL_PACKEDORDER_XBGR, 1655 SDL_PACKEDORDER_BGRX, 1656 SDL_PACKEDORDER_ABGR, 1657 SDL_PACKEDORDER_BGRA 1658 } 1659 1660 enum { 1661 SDL_ARRAYORDER_NONE, 1662 SDL_ARRAYORDER_RGB, 1663 SDL_ARRAYORDER_RGBA, 1664 SDL_ARRAYORDER_ARGB, 1665 SDL_ARRAYORDER_BGR, 1666 SDL_ARRAYORDER_BGRA, 1667 SDL_ARRAYORDER_ABGR 1668 } 1669 1670 enum { 1671 SDL_PACKEDLAYOUT_NONE, 1672 SDL_PACKEDLAYOUT_332, 1673 SDL_PACKEDLAYOUT_4444, 1674 SDL_PACKEDLAYOUT_1555, 1675 SDL_PACKEDLAYOUT_5551, 1676 SDL_PACKEDLAYOUT_565, 1677 SDL_PACKEDLAYOUT_8888, 1678 SDL_PACKEDLAYOUT_2101010, 1679 SDL_PACKEDLAYOUT_1010102 1680 } 1681 1682 alias SDL_DEFINE_PIXELFOURCC = SDL_FOURCC ; 1683 @nogc nothrow { 1684 Uint32 SDL_DEFINE_PIXELFORMAT(int type, int order, int layout, int bits, int bytes) { 1685 return (1<<28) | (type << 24) | (order << 20) | (layout << 16) | (bits << 8) | (bytes << 0); 1686 } 1687 1688 Uint32 SDL_PIXELFLAG(Uint32 X) { return (X >> 28) & 0x0F; } 1689 Uint32 SDL_PIXELTYPE(Uint32 X) { return (X >> 24) & 0x0F; } 1690 Uint32 SDL_PIXELORDER(Uint32 X) { return (X >> 20) & 0x0F; } 1691 Uint32 SDL_PIXELLAYOUT(Uint32 X) { return (X >> 16) & 0x0F; } 1692 Uint32 SDL_BITSPERPIXEL(Uint32 X) { return (X >> 8) & 0xFF; } 1693 Uint32 SDL_BYTESPERPIXEL(Uint32 X) { 1694 if(SDL_ISPIXELFORMAT_FOURCC(X)) { 1695 if(X == SDL_PIXELFORMAT_YUY2 || X == SDL_PIXELFORMAT_UYVY || X == SDL_PIXELFORMAT_YVYU) 1696 return 2; 1697 else 1698 return 1; 1699 } else { 1700 return (X >> 0) & 0xFF; 1701 } 1702 } 1703 1704 bool SDL_ISPIXELFORMAT_INDEXED(Uint32 format) { 1705 if(!SDL_ISPIXELFORMAT_FOURCC(format)) { 1706 auto pixelType = SDL_PIXELTYPE(format); 1707 return pixelType == SDL_PIXELTYPE_INDEX1 || pixelType == SDL_PIXELTYPE_INDEX4 || 1708 pixelType == SDL_PIXELTYPE_INDEX8; 1709 } 1710 return false; 1711 } 1712 1713 bool SDL_ISPIXELFORMAT_PACKED(Uint32 format) { 1714 if(!SDL_ISPIXELFORMAT_FOURCC(format)) { 1715 auto pixelType = SDL_PIXELTYPE(format); 1716 return pixelType == SDL_PIXELTYPE_PACKED8 || pixelType == SDL_PIXELTYPE_PACKED16 || 1717 pixelType == SDL_PIXELTYPE_PACKED32; 1718 } 1719 return false; 1720 } 1721 1722 bool SDL_ISPIXELFORMAT_ARRAY(Uint32 format) { 1723 if(!SDL_ISPIXELFORMAT_FOURCC(format)) { 1724 auto pixelType = SDL_PIXELTYPE(format); 1725 return pixelType == SDL_PIXELTYPE_ARRAYU8 || pixelType == SDL_PIXELTYPE_ARRAYU16 || 1726 pixelType == SDL_PIXELTYPE_ARRAYU32 || pixelType == SDL_PIXELTYPE_ARRAYF16 || 1727 pixelType == SDL_PIXELTYPE_ARRAYF32; 1728 } 1729 return false; 1730 } 1731 1732 bool SDL_ISPIXELFORMAT_ALPHA(Uint32 format) { 1733 if(!SDL_ISPIXELFORMAT_FOURCC(format)) { 1734 auto pixelOrder = SDL_PIXELORDER(format); 1735 return ((SDL_ISPIXELFORMAT_PACKED(format) && 1736 (pixelOrder == SDL_PACKEDORDER_ARGB || pixelOrder == SDL_PACKEDORDER_RGBA || 1737 pixelOrder == SDL_PACKEDORDER_ABGR || pixelOrder == SDL_PACKEDORDER_BGRA)) || 1738 (SDL_ISPIXELFORMAT_ARRAY(format) && 1739 (pixelOrder == SDL_ARRAYORDER_ARGB || pixelOrder == SDL_ARRAYORDER_RGBA || 1740 pixelOrder == SDL_ARRAYORDER_ABGR || pixelOrder == SDL_ARRAYORDER_BGRA))); 1741 } 1742 return false; 1743 } 1744 1745 bool SDL_ISPIXELFORMAT_FOURCC(Uint32 format) { return format && !(format & 0x80000000); } 1746 } 1747 1748 enum { 1749 SDL_PIXELFORMAT_UNKNOWN, 1750 SDL_PIXELFORMAT_INDEX1LSB = 1751 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, 1752 1, 0), 1753 SDL_PIXELFORMAT_INDEX1MSB = 1754 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, 1755 1, 0), 1756 SDL_PIXELFORMAT_INDEX4LSB = 1757 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, 1758 4, 0), 1759 SDL_PIXELFORMAT_INDEX4MSB = 1760 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, 1761 4, 0), 1762 SDL_PIXELFORMAT_INDEX8 = 1763 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), 1764 SDL_PIXELFORMAT_RGB332 = 1765 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, 1766 SDL_PACKEDLAYOUT_332, 8, 1), 1767 SDL_PIXELFORMAT_RGB444 = 1768 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 1769 SDL_PACKEDLAYOUT_4444, 12, 2), 1770 SDL_PIXELFORMAT_RGB555 = 1771 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 1772 SDL_PACKEDLAYOUT_1555, 15, 2), 1773 SDL_PIXELFORMAT_BGR555 = 1774 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, 1775 SDL_PACKEDLAYOUT_1555, 15, 2), 1776 SDL_PIXELFORMAT_ARGB4444 = 1777 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, 1778 SDL_PACKEDLAYOUT_4444, 16, 2), 1779 SDL_PIXELFORMAT_RGBA4444 = 1780 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, 1781 SDL_PACKEDLAYOUT_4444, 16, 2), 1782 SDL_PIXELFORMAT_ABGR4444 = 1783 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, 1784 SDL_PACKEDLAYOUT_4444, 16, 2), 1785 SDL_PIXELFORMAT_BGRA4444 = 1786 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, 1787 SDL_PACKEDLAYOUT_4444, 16, 2), 1788 SDL_PIXELFORMAT_ARGB1555 = 1789 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, 1790 SDL_PACKEDLAYOUT_1555, 16, 2), 1791 SDL_PIXELFORMAT_RGBA5551 = 1792 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, 1793 SDL_PACKEDLAYOUT_5551, 16, 2), 1794 SDL_PIXELFORMAT_ABGR1555 = 1795 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, 1796 SDL_PACKEDLAYOUT_1555, 16, 2), 1797 SDL_PIXELFORMAT_BGRA5551 = 1798 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, 1799 SDL_PACKEDLAYOUT_5551, 16, 2), 1800 SDL_PIXELFORMAT_RGB565 = 1801 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 1802 SDL_PACKEDLAYOUT_565, 16, 2), 1803 SDL_PIXELFORMAT_BGR565 = 1804 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, 1805 SDL_PACKEDLAYOUT_565, 16, 2), 1806 SDL_PIXELFORMAT_RGB24 = 1807 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, 1808 24, 3), 1809 SDL_PIXELFORMAT_BGR24 = 1810 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, 1811 24, 3), 1812 SDL_PIXELFORMAT_RGB888 = 1813 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, 1814 SDL_PACKEDLAYOUT_8888, 24, 4), 1815 SDL_PIXELFORMAT_RGBX8888 = 1816 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, 1817 SDL_PACKEDLAYOUT_8888, 24, 4), 1818 SDL_PIXELFORMAT_BGR888 = 1819 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, 1820 SDL_PACKEDLAYOUT_8888, 24, 4), 1821 SDL_PIXELFORMAT_BGRX8888 = 1822 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, 1823 SDL_PACKEDLAYOUT_8888, 24, 4), 1824 SDL_PIXELFORMAT_ARGB8888 = 1825 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, 1826 SDL_PACKEDLAYOUT_8888, 32, 4), 1827 SDL_PIXELFORMAT_RGBA8888 = 1828 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, 1829 SDL_PACKEDLAYOUT_8888, 32, 4), 1830 SDL_PIXELFORMAT_ABGR8888 = 1831 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, 1832 SDL_PACKEDLAYOUT_8888, 32, 4), 1833 SDL_PIXELFORMAT_BGRA8888 = 1834 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, 1835 SDL_PACKEDLAYOUT_8888, 32, 4), 1836 SDL_PIXELFORMAT_ARGB2101010 = 1837 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, 1838 SDL_PACKEDLAYOUT_2101010, 32, 4), 1839 1840 SDL_PIXELFORMAT_YV12 = 1841 SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), 1842 SDL_PIXELFORMAT_IYUV = 1843 SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), 1844 SDL_PIXELFORMAT_YUY2 = 1845 SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), 1846 SDL_PIXELFORMAT_UYVY = 1847 SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), 1848 SDL_PIXELFORMAT_YVYU = 1849 SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), 1850 SDL_PIXELFORMAT_NV12 = 1851 SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), 1852 SDL_PIXELFORMAT_NV21 = 1853 SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1') 1854 } 1855 1856 static assert(SDL_PIXELFORMAT_BGRX8888 == 0x16661804); 1857 1858 version(BigEndian) { 1859 alias SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888; 1860 alias SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888; 1861 alias SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888; 1862 alias SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888; 1863 } 1864 else { 1865 alias SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888; 1866 alias SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888; 1867 alias SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888; 1868 alias SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888; 1869 } 1870 1871 struct SDL_Color { 1872 Uint8 r; 1873 Uint8 g; 1874 Uint8 b; 1875 Uint8 a; 1876 } 1877 1878 struct SDL_Palette { 1879 int ncolors; 1880 SDL_Color* colors; 1881 // NOTE: original was named 'version' 1882 Uint32 _version; 1883 int refcount; 1884 } 1885 1886 struct SDL_PixelFormat { 1887 Uint32 format; 1888 SDL_Palette *palette; 1889 Uint8 BitsPerPixel; 1890 Uint8 BytesPerPixel; 1891 Uint8[2] padding; 1892 Uint32 Rmask; 1893 Uint32 Gmask; 1894 Uint32 Bmask; 1895 Uint32 Amask; 1896 Uint8 Rloss; 1897 Uint8 Gloss; 1898 Uint8 Bloss; 1899 Uint8 Aloss; 1900 Uint8 Rshift; 1901 Uint8 Gshift; 1902 Uint8 Bshift; 1903 Uint8 Ashift; 1904 int refcount; 1905 SDL_PixelFormat* next; 1906 } 1907 1908 // SDL_power.h 1909 enum SDL_PowerState { 1910 SDL_POWERSTATE_UNKNOWN, 1911 SDL_POWERSTATE_ON_BATTERY, 1912 SDL_POWERSTATE_NO_BATTERY, 1913 SDL_POWERSTATE_CHARGING, 1914 SDL_POWERSTATE_CHARGED 1915 } 1916 mixin(MakeEnum!SDL_PowerState); 1917 1918 // SDL_rect.h 1919 struct SDL_Point { 1920 int x; 1921 int y; 1922 } 1923 1924 struct SDL_Rect { 1925 int x, y; 1926 int w, h; 1927 } 1928 1929 @nogc nothrow pure { 1930 bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) { 1931 return ((p.x >= r.x) && (p.x < (r.x + r.w)) && 1932 (p.y >= r.y) && (p.y < (r.y + r.h))); 1933 } 1934 bool SDL_RectEmpty(const(SDL_Rect)* X) { return !X || (X.w <= 0) || (X.h <= 0); } 1935 bool SDL_RectEquals(const(SDL_Rect)* A, const(SDL_Rect)* B) { 1936 return A && B && 1937 (A.x == B.x) && (A.y == B.y) && 1938 (A.w == B.w) && (A.h == B.h); 1939 } 1940 } 1941 1942 // SDL_render.h 1943 enum SDL_RendererFlags : Uint32 { 1944 SDL_RENDERER_SOFTWARE = 0x00000001, 1945 SDL_RENDERER_ACCELERATED = 0x00000002, 1946 SDL_RENDERER_PRESENTVSYNC = 0x00000004, 1947 SDL_RENDERER_TARGETTEXTURE = 0x00000008, 1948 } 1949 mixin(MakeEnum!SDL_RendererFlags); 1950 1951 struct SDL_RendererInfo { 1952 const(char)* name; 1953 SDL_RendererFlags flags; 1954 Uint32 num_texture_formats; 1955 Uint32[16] texture_formats; 1956 int max_texture_width; 1957 int max_texture_height; 1958 } 1959 1960 enum SDL_TextureAccess { 1961 SDL_TEXTUREACCESS_STATIC, 1962 SDL_TEXTUREACCESS_STREAMING, 1963 SDL_TEXTUREACCESS_TARGET, 1964 } 1965 mixin(MakeEnum!SDL_TextureAccess); 1966 1967 enum SDL_TextureModulate { 1968 SDL_TEXTUREMODULATE_NONE = 0x00000000, 1969 SDL_TEXTUREMODULATE_COLOR = 0x00000001, 1970 SDL_TEXTUREMODULATE_ALPHA = 0x00000002 1971 } 1972 mixin(MakeEnum!SDL_TextureModulate); 1973 1974 enum SDL_RendererFlip { 1975 SDL_FLIP_NONE = 0x00000000, 1976 SDL_FLIP_HORIZONTAL = 0x00000001, 1977 SDL_FLIP_VERTICAL = 0x00000002, 1978 } 1979 mixin(MakeEnum!SDL_RendererFlip); 1980 1981 struct SDL_Renderer; 1982 struct SDL_Texture; 1983 1984 // SDL_rwops.h 1985 enum : uint { 1986 SDL_RWOPS_UNKNOWN = 0, 1987 SDL_RWOPS_WINFILE = 1, 1988 SDL_RWOPS_STDFILE = 2, 1989 SDL_RWOPS_JNIFILE = 3, 1990 SDL_RWOPS_MEMORY = 4, 1991 SDL_RWOPS_MEMORY_RO = 5, 1992 } 1993 1994 struct SDL_RWops { 1995 extern(C) @nogc nothrow { 1996 Sint64 function(SDL_RWops*) size; 1997 Sint64 function(SDL_RWops*, Sint64, int) seek; 1998 size_t function(SDL_RWops*, void*, size_t, size_t) read; 1999 size_t function(SDL_RWops*, const(void)*, size_t, size_t) write; 2000 int function(SDL_RWops*) close; 2001 } 2002 2003 Uint32 type; 2004 2005 union Hidden { 2006 // version(Android) 2007 version(Windows) { 2008 struct Windowsio { 2009 SDL_bool append; 2010 void* h; 2011 struct Buffer { 2012 void* data; 2013 size_t size; 2014 size_t left; 2015 } 2016 Buffer buffer; 2017 } 2018 Windowsio windowsio; 2019 } 2020 2021 struct Stdio { 2022 SDL_bool autoclose; 2023 FILE* fp; 2024 } 2025 Stdio stdio; 2026 2027 struct Mem { 2028 Uint8* base; 2029 Uint8* here; 2030 Uint8* stop; 2031 } 2032 Mem mem; 2033 2034 struct Unknown { 2035 void* data1; 2036 } 2037 Unknown unknown; 2038 } 2039 Hidden hidden; 2040 } 2041 2042 enum { 2043 RW_SEEK_SET = 0, 2044 RW_SEEK_CUR = 1, 2045 RW_SEEK_END = 2, 2046 } 2047 2048 @nogc nothrow { 2049 Sint64 SDL_RWsize(SDL_RWops* ctx) { return ctx.size(ctx); } 2050 Sint64 SDL_RWseek(SDL_RWops* ctx, Sint64 offset, int whence) { return ctx.seek(ctx, offset, whence); } 2051 Sint64 SDL_RWtell(SDL_RWops* ctx) { return ctx.seek(ctx, 0, RW_SEEK_CUR); } 2052 size_t SDL_RWread(SDL_RWops* ctx, void* ptr, size_t size, size_t n) { return ctx.read(ctx, ptr, size, n); } 2053 size_t SDL_RWwrite(SDL_RWops* ctx, const(void)* ptr, size_t size, size_t n) { return ctx.write(ctx, ptr, size, n); } 2054 int SDL_RWclose(SDL_RWops* ctx) { return ctx.close(ctx); } 2055 } 2056 2057 // SDL_shape.h 2058 enum { 2059 SDL_NONSHAPEABLE_WINDOW = -1, 2060 SDL_INVALID_SHAPE_ARGUMENT = -2, 2061 SDL_WINDOW_LACKS_SHAPE = -3, 2062 } 2063 2064 enum WindowShapeMode { 2065 ShapeModeDefault, 2066 ShapeModeBinarizeAlpha, 2067 ShapeModeReverseBinarizeAlpha, 2068 ShapeModeColorKey 2069 } 2070 mixin(MakeEnum!WindowShapeMode); 2071 2072 @nogc nothrow pure bool SDL_SHAPEMODEALPHA(WindowShapeMode mode) { 2073 return mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha; 2074 } 2075 2076 union SDL_WindowShapeParams { 2077 Uint8 binarizationCutoff; 2078 SDL_Color colorKey; 2079 } 2080 2081 struct SDL_WindowShapeMode { 2082 WindowShapeMode mode; 2083 SDL_WindowShapeParams parameters; 2084 } 2085 2086 // SDL_surface.h 2087 enum SDL_D_SurfaceFlags { 2088 SDL_SWSURFACE = 0, 2089 SDL_PREALLOC = 0x00000001, 2090 SDL_RLEACCEL = 0x00000002, 2091 SDL_DONTFREE = 0x00000004, 2092 } 2093 mixin(MakeEnum!SDL_D_SurfaceFlags); 2094 2095 @nogc nothrow pure bool SDL_MUSTLOCK(const(SDL_Surface)* S) { return (S.flags & SDL_RLEACCEL) != 0; } 2096 2097 struct SDL_BlitMap; 2098 struct SDL_Surface { 2099 SDL_D_SurfaceFlags flags; 2100 SDL_PixelFormat* format; 2101 int w, h; 2102 int pitch; 2103 void* pixels; 2104 void* userdata; 2105 int locked; 2106 void* lock_data; 2107 SDL_Rect clip_rect; 2108 SDL_BlitMap* map; 2109 int refcount; 2110 } 2111 2112 extern(C) nothrow alias SDL_blit = int function(SDL_Surface* src, SDL_Rect* srcrect, SDL_Surface* dst, SDL_Rect* dstrect); 2113 2114 // SDL_system.h 2115 static if(Derelict_OS_Windows) { 2116 struct IDirect3DDevice9; 2117 } 2118 static if(Derelict_OS_iOS) { 2119 extern(C) nothrow alias SDL_iPhoneAnimationCallback = void function(void*); 2120 } 2121 static if(Derelict_OS_Android) { 2122 enum int SDL_ANDROID_EXTERNAL_STORAGE_READ = 0x01; 2123 enum int SDL_ANDROID_EXTERNAL_STORAGE_WRITE = 0x02; 2124 } 2125 static if(Derelict_OS_WinRT) { 2126 enum SDL_WinRT_Path { 2127 SDL_WINRT_PATH_INSTALLED_LOCATION, 2128 SDL_WINRT_PATH_LOCAL_FOLDER, 2129 SDL_WINRT_PATH_ROAMING_FOLDER, 2130 SDL_WINRT_PATH_TEMP_FOLDER 2131 } 2132 } 2133 2134 // SDL_syswm.h 2135 enum SDL_SYSWM_TYPE { 2136 SDL_SYSWM_UNKNOWN, 2137 SDL_SYSWM_WINDOWS, 2138 SDL_SYSWM_X11, 2139 SDL_SYSWM_DIRECTFB, 2140 SDL_SYSWM_COCOA, 2141 SDL_SYSWM_UIKIT, 2142 SDL_SYSWM_WAYLAND, 2143 SDL_SYSWM_MIR, 2144 SDL_SYSWM_WINRT, 2145 SDL_SYSWM_ANDROID, 2146 SDL_SYSWM_VIVANTE, 2147 SDL_SYSWM_OS2, 2148 } 2149 mixin(MakeEnum!SDL_SYSWM_TYPE); 2150 2151 static if(Derelict_OS_Windows) { 2152 // I don't want to import core.sys.windows.windows just for these 2153 version(Win64) { 2154 alias wparam = ulong; 2155 alias lparam = long; 2156 }else { 2157 alias wparam = uint; 2158 alias lparam = int; 2159 } 2160 } 2161 2162 struct SDL_SysWMmsg { 2163 SDL_version version_; 2164 SDL_SYSWM_TYPE subsystem; 2165 union msg_ { 2166 static if(Derelict_OS_Windows) { 2167 struct win_ { 2168 void* hwnd; 2169 uint msg; 2170 wparam wParam; 2171 lparam lParam; 2172 } 2173 win_ win; 2174 } 2175 2176 static if(Derelict_OS_WinRT) { 2177 struct winrt_ { 2178 void* window; 2179 } 2180 winrt_ winrt; 2181 } 2182 2183 static if(Derelict_OS_Mac) { 2184 struct cocoa_ { 2185 int dummy; 2186 } 2187 cocoa_ cocoa; 2188 } 2189 2190 static if(Derelict_OS_Posix) { 2191 // X11 unsupported for now 2192 struct x11_ { 2193 c_long[24] pad; // sufficient size for any X11 event 2194 } 2195 x11_ x11; 2196 } 2197 2198 static if(Derelict_OS_Linux) { 2199 // DirectFB unsupported for now 2200 // Consequently SDL_SysWMmsg might have a different size that in SDL 2201 struct dfb_ { 2202 void* event; 2203 } 2204 dfb_ dfb; 2205 } 2206 2207 int dummy; 2208 } 2209 msg_ msg; 2210 } 2211 2212 struct SDL_SysWMinfo { 2213 SDL_version version_; // version is reserved in D 2214 SDL_SYSWM_TYPE subsystem; 2215 2216 union info_ { 2217 static if(Derelict_OS_Windows) { 2218 struct win_ { 2219 void* window; 2220 void* hdc; 2221 void* hinstance; 2222 } 2223 win_ win; 2224 } 2225 2226 static if(Derelict_OS_WinRT) { 2227 struct winrt_ { 2228 void* window; 2229 } 2230 winrt_ winrt; 2231 } 2232 2233 static if(Derelict_OS_Posix) { 2234 struct x11_ { 2235 void* display; 2236 uint window; 2237 } 2238 x11_ x11; 2239 } 2240 2241 // TODO not too sure about all the Derelict_OS tests below. 2242 static if(Derelict_OS_Linux) { 2243 struct dfb_ { 2244 void *dfb; 2245 void *window; 2246 void *surface; 2247 } 2248 dfb_ dfb; 2249 2250 struct wl_ { 2251 void *display; 2252 void *surface; 2253 void *shell_surface; 2254 } 2255 wl_ wl; 2256 2257 struct mir_ { 2258 void *connection; 2259 void *surface; 2260 } 2261 mir_ mir; 2262 } 2263 2264 static if(Derelict_OS_Mac || Derelict_OS_iOS) { 2265 struct cocoa_ { 2266 void* window; 2267 } 2268 cocoa_ cocoa; 2269 2270 struct uikit_ { 2271 void *window; 2272 } 2273 uikit_ uikit; 2274 } 2275 } 2276 info_ info; 2277 } 2278 2279 // SDL_timer.h 2280 extern(C) nothrow alias SDL_TimerCallback = Uint32 function(Uint32 interval, void* param); 2281 alias SDL_TimerID = int; 2282 2283 @nogc nothrow pure bool SDL_TICKS_PASSED(Uint32 A, Uint32 B) { 2284 return cast(Sint32)(B - A) <= 0; 2285 } 2286 2287 // SDL_touch.h 2288 alias SDL_TouchID = Sint64; 2289 alias SDL_FingerID = Sint64; 2290 2291 struct SDL_Finger { 2292 SDL_FingerID id; 2293 float x; 2294 float y; 2295 float pressure; 2296 } 2297 2298 enum SDL_TOUCH_MOUSEID = cast(Uint32)-1; 2299 2300 // SDL_video.h 2301 struct SDL_DisplayMode { 2302 Uint32 format; 2303 int w; 2304 int h; 2305 int refresh_rate; 2306 void* driverdata; 2307 } 2308 2309 struct SDL_Window; 2310 2311 enum SDL_WindowFlags { 2312 SDL_WINDOW_FULLSCREEN = 0x00000001, 2313 SDL_WINDOW_OPENGL = 0x00000002, 2314 SDL_WINDOW_SHOWN = 0x00000004, 2315 SDL_WINDOW_HIDDEN = 0x00000008, 2316 SDL_WINDOW_BORDERLESS = 0x00000010, 2317 SDL_WINDOW_RESIZABLE = 0x00000020, 2318 SDL_WINDOW_MINIMIZED = 0x00000040, 2319 SDL_WINDOW_MAXIMIZED = 0x00000080, 2320 SDL_WINDOW_INPUT_GRABBED = 0x00000100, 2321 SDL_WINDOW_INPUT_FOCUS = 0x00000200, 2322 SDL_WINDOW_MOUSE_FOCUS = 0x00000400, 2323 SDL_WINDOW_FULLSCREEN_DESKTOP = SDL_WINDOW_FULLSCREEN | 0x00001000, 2324 SDL_WINDOW_FOREIGN = 0x00000800, 2325 SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, 2326 SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, 2327 SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, 2328 SDL_WINDOW_SKIP_TASKBAR = 0x00010000, 2329 SDL_WINDOW_UTILITY = 0x00020000, 2330 SDL_WINDOW_TOOLTIP = 0x00040000, 2331 SDL_WINDOW_POPUP_MENU = 0x00080000, 2332 SDL_WINDOW_VULKAN = 0x10000000, 2333 } 2334 mixin(MakeEnum!SDL_WindowFlags); 2335 2336 enum { 2337 SDL_WINDOWPOS_UNDEFINED_MASK = 0x1FFF0000, 2338 SDL_WINDOWPOS_UNDEFINED = SDL_WINDOWPOS_UNDEFINED_DISPLAY(0), 2339 SDL_WINDOWPOS_CENTERED_MASK = 0x2FFF0000, 2340 SDL_WINDOWPOS_CENTERED = SDL_WINDOWPOS_CENTERED_DISPLAY(0), 2341 } 2342 2343 @nogc nothrow pure { 2344 Uint32 SDL_WINDOWPOS_UNDEFINED_DISPLAY(Uint32 X) { return (SDL_WINDOWPOS_UNDEFINED_MASK | X); } 2345 bool SDL_WINDOWPOS_ISUNDEFINED(Uint32 X) { return (X & 0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK; } 2346 Uint32 SDL_WINDOWPOS_CENTERED_DISPLAY(Uint32 X) { return (SDL_WINDOWPOS_CENTERED_MASK | X); } 2347 bool SDL_WINDOWPOS_ISCENTERED(Uint32 X) { return (X & 0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK; } 2348 } 2349 2350 enum SDL_WindowEventID : Uint8 { 2351 SDL_WINDOWEVENT_NONE, 2352 SDL_WINDOWEVENT_SHOWN, 2353 SDL_WINDOWEVENT_HIDDEN, 2354 SDL_WINDOWEVENT_EXPOSED, 2355 SDL_WINDOWEVENT_MOVED, 2356 SDL_WINDOWEVENT_RESIZED, 2357 SDL_WINDOWEVENT_SIZE_CHANGED, 2358 SDL_WINDOWEVENT_MINIMIZED, 2359 SDL_WINDOWEVENT_MAXIMIZED, 2360 SDL_WINDOWEVENT_RESTORED, 2361 SDL_WINDOWEVENT_ENTER, 2362 SDL_WINDOWEVENT_LEAVE, 2363 SDL_WINDOWEVENT_FOCUS_GAINED, 2364 SDL_WINDOWEVENT_FOCUS_LOST, 2365 SDL_WINDOWEVENT_CLOSE, 2366 SDL_WINDOWEVENT_TAKE_FOCUS, 2367 SDL_WINDOWEVENT_HIT_TEST, 2368 } 2369 mixin(MakeEnum!SDL_WindowEventID); 2370 2371 alias SDL_GLContext = void*; 2372 2373 enum SDL_GLattr { 2374 SDL_GL_RED_SIZE, 2375 SDL_GL_GREEN_SIZE, 2376 SDL_GL_BLUE_SIZE, 2377 SDL_GL_ALPHA_SIZE, 2378 SDL_GL_BUFFER_SIZE, 2379 SDL_GL_DOUBLEBUFFER, 2380 SDL_GL_DEPTH_SIZE, 2381 SDL_GL_STENCIL_SIZE, 2382 SDL_GL_ACCUM_RED_SIZE, 2383 SDL_GL_ACCUM_GREEN_SIZE, 2384 SDL_GL_ACCUM_BLUE_SIZE, 2385 SDL_GL_ACCUM_ALPHA_SIZE, 2386 SDL_GL_STEREO, 2387 SDL_GL_MULTISAMPLEBUFFERS, 2388 SDL_GL_MULTISAMPLESAMPLES, 2389 SDL_GL_ACCELERATED_VISUAL, 2390 SDL_GL_RETAINED_BACKING, 2391 SDL_GL_CONTEXT_MAJOR_VERSION, 2392 SDL_GL_CONTEXT_MINOR_VERSION, 2393 SDL_GL_CONTEXT_EGL, 2394 SDL_GL_CONTEXT_FLAGS, 2395 SDL_GL_CONTEXT_PROFILE_MASK, 2396 SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 2397 SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 2398 SDL_GL_CONTEXT_RELEASE_BEHAVIOR, 2399 SDL_GL_CONTEXT_RESET_NOTIFICATION, 2400 SDL_GL_CONTEXT_NO_ERROR, 2401 } 2402 mixin(MakeEnum!SDL_GLattr); 2403 2404 enum SDL_GLprofile { 2405 SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, 2406 SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, 2407 SDL_GL_CONTEXT_PROFILE_ES = 0x0004, 2408 } 2409 mixin(MakeEnum!SDL_GLprofile); 2410 2411 enum SDL_GLcontextFlag { 2412 SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, 2413 SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, 2414 SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, 2415 SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008, 2416 } 2417 mixin(MakeEnum!SDL_GLcontextFlag); 2418 2419 enum SDL_GLcontextReleaseFlag { 2420 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, 2421 SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001, 2422 } 2423 mixin(MakeEnum!SDL_GLcontextReleaseFlag); 2424 2425 enum SDL_GLContextResetNotification { 2426 SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, 2427 SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 2428 } 2429 mixin(MakeEnum!SDL_GLContextResetNotification); 2430 2431 enum SDL_HitTestResult { 2432 SDL_HITTEST_NORMAL, 2433 SDL_HITTEST_DRAGGABLE, 2434 SDL_HITTEST_RESIZE_TOPLEFT, 2435 SDL_HITTEST_RESIZE_TOP, 2436 SDL_HITTEST_RESIZE_TOPRIGHT, 2437 SDL_HITTEST_RESIZE_RIGHT, 2438 SDL_HITTEST_RESIZE_BOTTOMRIGHT, 2439 SDL_HITTEST_RESIZE_BOTTOM, 2440 SDL_HITTEST_RESIZE_BOTTOMLEFT, 2441 SDL_HITTEST_RESIZE_LEFT, 2442 } 2443 mixin(MakeEnum!SDL_HitTestResult); 2444 extern(C) nothrow alias SDL_HitTest = SDL_HitTestResult function(SDL_Window*, const(SDL_Point)*, void*);