hedgewars/SDLh.pas
changeset 9311 5baf10a52f43
parent 9224 bce8cf41d666
child 9317 a04c30940d2d
equal deleted inserted replaced
9309:7e8f91634f80 9311:5baf10a52f43
    87 /////////////////////////////////////////////////////////////////
    87 /////////////////////////////////////////////////////////////////
    88 /////////////////////  CONSTANT DEFINITIONS /////////////////////
    88 /////////////////////  CONSTANT DEFINITIONS /////////////////////
    89 /////////////////////////////////////////////////////////////////
    89 /////////////////////////////////////////////////////////////////
    90 
    90 
    91     // SDL_Init() flags
    91     // SDL_Init() flags
    92     SDL_INIT_TIMER       = $00000001;
    92     SDL_INIT_TIMER          = $00000001;
    93     SDL_INIT_AUDIO       = $00000010;
    93     SDL_INIT_AUDIO          = $00000010;
    94     SDL_INIT_VIDEO       = $00000020;
    94     SDL_INIT_VIDEO          = $00000020;
    95     SDL_INIT_JOYSTICK    = $00000200;
    95     SDL_INIT_JOYSTICK       = $00000200;
    96 {$IFDEF SDL13}
    96 {$IFDEF SDL13}
    97     SDL_INIT_HAPTIC      = $00001000;
    97     SDL_INIT_HAPTIC         = $00001000;
    98 {$ELSE}
    98     SDL_INIT_GAMECONTROLLER = $00002000; // implicitly activates JOYSTICK */
    99     SDL_INIT_CDROM       = $00000100;
    99 {$ELSE}
   100     SDL_INIT_EVENTTHREAD = $01000000;
   100     SDL_INIT_CDROM          = $00000100;
   101 {$ENDIF}
   101     SDL_INIT_EVENTTHREAD    = $01000000;
   102     SDL_INIT_NOPARACHUTE = $00100000;
   102 {$ENDIF}
   103     SDL_INIT_EVERYTHING  = $0000FFFF;
   103     SDL_INIT_NOPARACHUTE    = $00100000;
   104 
   104     //SDL_INIT_EVERYTHING                // unsafe, init subsystems one at a time
   105     SDL_ALLEVENTS        = $FFFFFFFF;
   105 
       
   106     SDL_ALLEVENTS        = $FFFFFFFF;    // dummy event type to prevent stack corruption
   106     SDL_APPINPUTFOCUS    = $02;
   107     SDL_APPINPUTFOCUS    = $02;
   107 
   108 
   108     SDL_BUTTON_LEFT      = 1;
   109     SDL_BUTTON_LEFT      = 1;
   109     SDL_BUTTON_MIDDLE    = 2;
   110     SDL_BUTTON_MIDDLE    = 2;
   110     SDL_BUTTON_RIGHT     = 3;
   111     SDL_BUTTON_RIGHT     = 3;
   111     SDL_BUTTON_WHEELUP   = 4;
   112     SDL_BUTTON_WHEELUP   = 4;
   112     SDL_BUTTON_WHEELDOWN = 5;
   113     SDL_BUTTON_WHEELDOWN = 5;
   113 
   114 
       
   115 
   114 {$IFDEF SDL13}
   116 {$IFDEF SDL13}
   115     // SDL_Event types
   117     // SDL_Event types
   116     SDL_FIRSTEVENT        = 0;
   118     // pascal does not support unions as is, so we list here every possible event
       
   119     // and later associate a struct type each
       
   120     SDL_FIRSTEVENT        = 0;              // type
       
   121     SDL_COMMONDEVENT      = 1;              // type and timestamp
   117     SDL_QUITEV            = $100;
   122     SDL_QUITEV            = $100;
       
   123     SDL_APP_TERMINATING   = $101;
       
   124     SDL_APP_LOWMEMORY     = $102;
       
   125     SDL_APP_WILLENTERBACKGROUND = $103;
       
   126     SDL_APP_DIDENTERBACKGROUND = $104;
       
   127     SDL_APP_WILLENTERFOREGROUND = $105;
       
   128     SDL_APP_DIDENTERFOREGROUND = $106;
   118     SDL_WINDOWEVENT       = $200;
   129     SDL_WINDOWEVENT       = $200;
   119     SDL_SYSWMEVENT        = $201;
   130     SDL_SYSWMEVENT        = $201;
   120     SDL_KEYDOWN           = $300;
   131     SDL_KEYDOWN           = $300;
   121     SDL_KEYUP             = $301;
   132     SDL_KEYUP             = $301;
   122     SDL_TEXTEDITING       = $302;
   133     SDL_TEXTEDITING       = $302;
   123     SDL_TEXTINPUT         = $303;
   134     SDL_TEXTINPUT         = $303;
   124     SDL_MOUSEMOTION       = $400;
   135     SDL_MOUSEMOTION       = $400;
   125     SDL_MOUSEBUTTONDOWN   = $401;
   136     SDL_MOUSEBUTTONDOWN   = $401;
   126     SDL_MOUSEBUTTONUP     = $402;
   137     SDL_MOUSEBUTTONUP     = $402;
   127     SDL_MOUSEWHEEL        = $403;
   138     SDL_MOUSEWHEEL        = $403;
   128     SDL_INPUTMOTION       = $500;
       
   129     SDL_INPUTBUTTONDOWN   = $501;
       
   130     SDL_INPUTBUTTONUP     = $502;
       
   131     SDL_INPUTWHEEL        = $503;
       
   132     SDL_INPUTPROXIMITYIN  = $504;
       
   133     SDL_INPUTPROXIMITYOUT = $505;
       
   134     SDL_JOYAXISMOTION     = $600;
   139     SDL_JOYAXISMOTION     = $600;
   135     SDL_JOYBALLMOTION     = $601;
   140     SDL_JOYBALLMOTION     = $601;
   136     SDL_JOYHATMOTION      = $602;
   141     SDL_JOYHATMOTION      = $602;
   137     SDL_JOYBUTTONDOWN     = $603;
   142     SDL_JOYBUTTONDOWN     = $603;
   138     SDL_JOYBUTTONUP       = $604;
   143     SDL_JOYBUTTONUP       = $604;
       
   144     SDL_JOYDEVICEADDED    = $605;
       
   145     SDL_JOYDEVICEREMOVED  = $606;
       
   146     SDL_CONTROLLERAXISMOTION = $650;
       
   147     SDL_CONTROLLERBUTTONDOWN = $651;
       
   148     SDL_CONTROLLERBUTTONUP = $652;
       
   149     SDL_CONTROLLERDEVICEADDED = $653;
       
   150     SDL_CONTROLLERDEVICEREMOVED = $654;
       
   151     SDL_CONTROLLERDEVICEREMAPPED = $655;
   139     SDL_FINGERDOWN        = $700;
   152     SDL_FINGERDOWN        = $700;
   140     SDL_FINGERUP          = $701;
   153     SDL_FINGERUP          = $701;
   141     SDL_FINGERMOTION      = $702;
   154     SDL_FINGERMOTION      = $702;
   142     SDL_TOUCHBUTTONDOWN   = $703;
       
   143     SDL_TOUCHBUTTONUP     = $704;
       
   144     SDL_DOLLARGESTURE     = $800;
   155     SDL_DOLLARGESTURE     = $800;
   145     SDL_DOLLARRECORD      = $801;
   156     SDL_DOLLARRECORD      = $801;
   146     SDL_MULTIGESTURE      = $802;
   157     SDL_MULTIGESTURE      = $802;
   147     SDL_CLIPBOARDUPDATE   = $900;
   158     SDL_CLIPBOARDUPDATE   = $900;
   148     SDL_DROPFILE          = $1000;
   159     SDL_DROPFILE          = $1000;
   149     SDL_USEREVENT         = $8000;
   160     SDL_USEREVENT         = $8000;
   150     SDL_LASTEVENT         = $FFFF;
   161     SDL_LASTEVENT         = $FFFF;
   151     // no compatibility events $7000
       
   152 
   162 
   153     // SDL_Surface flags
   163     // SDL_Surface flags
   154     SDL_SWSURFACE   = $00000000;  //*< Not used */
   164     SDL_SWSURFACE   = $00000000;  //*< Not used */
   155     SDL_PREALLOC    = $00000001;  //*< Surface uses preallocated memory */
   165     SDL_PREALLOC    = $00000001;  //*< Surface uses preallocated memory */
   156     SDL_RLEACCEL    = $00000002;  //*< Surface is RLE encoded */
   166     SDL_RLEACCEL    = $00000002;  //*< Surface is RLE encoded */
   157     SDL_DONTFREE    = $00000004;  //*< Surface is referenced internally */
   167     SDL_DONTFREE    = $00000004;  //*< Surface is referenced internally */
   158     SDL_SRCALPHA    = $00010000;
   168     SDL_SRCCOLORKEY = $00020000;  // compatibility only
   159     SDL_SRCCOLORKEY = $00020000;
   169 
   160     SDL_ANYFORMAT   = $00100000;
   170     // SDL_RendererFlags
   161     SDL_HWPALETTE   = $00200000;
       
   162     SDL_DOUBLEBUF   = $00400000;
       
   163     SDL_FULLSCREEN  = $00800000;
       
   164     SDL_RESIZABLE   = $01000000;
       
   165     SDL_NOFRAME     = $02000000;
       
   166     SDL_OPENGL      = $04000000;
       
   167     SDL_HWSURFACE   = $08000001;  //*< Not used */
       
   168     SDL_ASYNCBLIT   = $08000000;  //*< Not used */
       
   169     SDL_RLEACCELOK  = $08000000;  //*< Not used */
       
   170     SDL_HWACCEL     = $08000000;  //*< Not used */
       
   171 
       
   172     // SDL_Renderer flags
       
   173     SDL_RENDERER_SOFTWARE     = $00000001;     //*< The renderer is a software fallback */
   171     SDL_RENDERER_SOFTWARE     = $00000001;     //*< The renderer is a software fallback */
   174     SDL_RENDERER_ACCELERATED  = $00000002;     //*< The renderer uses hardware acceleration */
   172     SDL_RENDERER_ACCELERATED  = $00000002;     //*< The renderer uses hardware acceleration */
   175     SDL_RENDERER_PRESENTVSYNC = $00000004;
   173     SDL_RENDERER_PRESENTVSYNC = $00000004;     //*< Present is synchronized with the refresh rate */
   176 
   174     SDL_RENDERER_TARGETTEXTURE = $00000008;    //*< The renderer supports rendering to texture */
   177     // SDL_WindowFlags (enum)
   175 
       
   176     // SDL_WindowFlags
   178     SDL_WINDOW_FULLSCREEN    = $00000001;      //*< fullscreen window, implies borderless */
   177     SDL_WINDOW_FULLSCREEN    = $00000001;      //*< fullscreen window, implies borderless */
   179     SDL_WINDOW_OPENGL        = $00000002;      //*< window usable with OpenGL context */
   178     SDL_WINDOW_OPENGL        = $00000002;      //*< window usable with OpenGL context */
   180     SDL_WINDOW_SHOWN         = $00000004;      //*< window is visible */
   179     SDL_WINDOW_SHOWN         = $00000004;      //*< window is visible */
   181     SDL_WINDOW_HIDDEN        = $00000008;      //*< window is not visible */
   180     SDL_WINDOW_HIDDEN        = $00000008;      //*< window is not visible */
   182     SDL_WINDOW_BORDERLESS    = $00000010;      //*< no window decoration */
   181     SDL_WINDOW_BORDERLESS    = $00000010;      //*< no window decoration */
   184     SDL_WINDOW_MINIMIZED     = $00000040;      //*< window is minimized */
   183     SDL_WINDOW_MINIMIZED     = $00000040;      //*< window is minimized */
   185     SDL_WINDOW_MAXIMIZED     = $00000080;      //*< window is maximized */
   184     SDL_WINDOW_MAXIMIZED     = $00000080;      //*< window is maximized */
   186     SDL_WINDOW_INPUT_GRABBED = $00000100;      //*< window has grabbed input focus */
   185     SDL_WINDOW_INPUT_GRABBED = $00000100;      //*< window has grabbed input focus */
   187     SDL_WINDOW_INPUT_FOCUS   = $00000200;      //*< window has input focus */
   186     SDL_WINDOW_INPUT_FOCUS   = $00000200;      //*< window has input focus */
   188     SDL_WINDOW_MOUSE_FOCUS   = $00000400;      //*< window has mouse focus */
   187     SDL_WINDOW_MOUSE_FOCUS   = $00000400;      //*< window has mouse focus */
       
   188     SDL_WINDOW_FULLSCREEN_DESKTOP = $00001001; //*< fullscreen as maximed window */
   189     SDL_WINDOW_FOREIGN       = $00000800;      //*< window not created by SDL */
   189     SDL_WINDOW_FOREIGN       = $00000800;      //*< window not created by SDL */
   190 
   190 
   191     SDL_WINDOWPOS_CENTERED_MASK = $2FFF0000;
   191     SDL_WINDOWPOS_CENTERED_MASK = $2FFF0000;
   192 
   192 
   193     // SDL_WindowEventID (enum)
   193     // SDL_WindowEventID
   194     SDL_WINDOWEVENT_NONE         = 0;    //*< Never used
   194     SDL_WINDOWEVENT_NONE         = 0;    //*< Never used
   195     SDL_WINDOWEVENT_SHOWN        = 1;    //*< Window has been shown
   195     SDL_WINDOWEVENT_SHOWN        = 1;    //*< Window has been shown
   196     SDL_WINDOWEVENT_HIDDEN       = 2;    //*< Window has been hidden
   196     SDL_WINDOWEVENT_HIDDEN       = 2;    //*< Window has been hidden
   197     SDL_WINDOWEVENT_EXPOSED      = 3;    //*< Window has been exposed and should be redrawn
   197     SDL_WINDOWEVENT_EXPOSED      = 3;    //*< Window has been exposed and should be redrawn
   198     SDL_WINDOWEVENT_MOVED        = 4;    //*< Window has been moved to data1, data2
   198     SDL_WINDOWEVENT_MOVED        = 4;    //*< Window has been moved to data1, data2
   334     PSDL_GLContext= Pointer;
   334     PSDL_GLContext= Pointer;
   335     TSDL_FingerId = Int64;
   335     TSDL_FingerId = Int64;
   336     TSDL_TouchId  = Int64;
   336     TSDL_TouchId  = Int64;
   337 {$ENDIF}
   337 {$ENDIF}
   338 
   338 
       
   339     TSDL_eventaction = (SDL_ADDEVENT, SDL_PEEPEVENT, SDL_GETEVENT);
       
   340 
   339     PSDL_Rect = ^TSDL_Rect;
   341     PSDL_Rect = ^TSDL_Rect;
   340     TSDL_Rect = record
   342     TSDL_Rect = record
   341 {$IFDEF SDL13}
   343 {$IFDEF SDL13}
   342         x, y, w, h: LongInt;
   344         x, y, w, h: LongInt;
   343 {$ELSE}
   345 {$ELSE}
   345         w, h: Word;
   347         w, h: Word;
   346 {$ENDIF}
   348 {$ENDIF}
   347         end;
   349         end;
   348 
   350 
   349     TPoint = record
   351     TPoint = record
   350         X, Y: LongInt;
   352         x, y: LongInt;
   351         end;
   353         end;
   352 
   354 
   353     PSDL_PixelFormat = ^TSDL_PixelFormat;
   355     PSDL_PixelFormat = ^TSDL_PixelFormat;
   354     TSDL_PixelFormat = record
   356     TSDL_PixelFormat = record
   355 {$IFDEF SDL13}
   357 {$IFDEF SDL13}
   391         colorkey: LongWord;
   393         colorkey: LongWord;
   392         alpha: Byte;
   394         alpha: Byte;
   393 {$ENDIF}
   395 {$ENDIF}
   394         end;
   396         end;
   395 
   397 
   396     TSDL_eventaction = (SDL_ADDEVENT, SDL_PEEPEVENT, SDL_GETEVENT);
       
   397 
       
   398     PSDL_Surface = ^TSDL_Surface;
   398     PSDL_Surface = ^TSDL_Surface;
   399     TSDL_Surface = record
   399     TSDL_Surface = record
   400         flags : LongWord;
   400         flags : LongWord;
   401         format: PSDL_PixelFormat;
   401         format: PSDL_PixelFormat;
   402         w, h  : LongInt;
   402         w, h  : LongInt;
   403         pitch : {$IFDEF SDL13}LongInt{$ELSE}Word{$ENDIF};
   403         pitch : {$IFDEF SDL13}LongInt{$ELSE}Word{$ENDIF};
   404         pixels: Pointer;
   404         pixels: Pointer;
   405         offset: LongInt;
       
   406 {$IFDEF SDL13}
   405 {$IFDEF SDL13}
   407         userdata: Pointer;
   406         userdata: Pointer;
   408         locked: LongInt;
   407         locked: LongInt;
   409         lock_data: Pointer;
   408         lock_data: Pointer;
   410         clip_rect: TSDL_Rect;
   409         clip_rect: TSDL_Rect;
   411         map: Pointer;
   410         map: Pointer;
   412         refcount: LongInt;
   411         refcount: LongInt;
       
   412 {$ELSE}
       
   413         offset: LongInt;
   413 {$ENDIF}
   414 {$ENDIF}
   414         end;
   415         end;
   415 
   416 
   416 
   417 
   417     PSDL_Color = ^TSDL_Color;
   418     PSDL_Color = ^TSDL_Color;
   418     TSDL_Color = record
   419     TSDL_Color = record
   419             r: Byte;
   420             r: Byte;
   420             g: Byte;
   421             g: Byte;
   421             b: Byte;
   422             b: Byte;
   422             unused: Byte;
   423             a: Byte; //sdl12 name is 'unused' but as long as size matches...
   423         end;
   424         end;
   424 
   425 
   425 
   426 
       
   427     (* SDL_RWops and friends *)
   426     PSDL_RWops = ^TSDL_RWops;
   428     PSDL_RWops = ^TSDL_RWops;
   427     TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
   429     TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
   428     TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
   430     TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
   429     TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
   431     TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
   430     TClose = function( context: PSDL_RWops ): LongInt; cdecl;
   432     TClose = function( context: PSDL_RWops ): LongInt; cdecl;
   440         stop: PByte;
   442         stop: PByte;
   441         end;
   443         end;
   442 
   444 
   443     TUnknown = record
   445     TUnknown = record
   444         data1: Pointer;
   446         data1: Pointer;
   445         end;
   447 {$IFDEF SDL13}
       
   448         data2: Pointer;
       
   449 {$ENDIF}
       
   450         end;
       
   451 
       
   452 {$IFDEF ANDROID}
       
   453     TAndroidio = record
       
   454         fileName, inputStream, readableByteChannel, readMethod, assetFileDescriptor : Pointer;
       
   455         position, size, offset: Int64;
       
   456         fd: LongInt;
       
   457         end;
       
   458 {$ELSE}
       
   459 {$IFDEF WIN32}
       
   460     TWinbuffer = record
       
   461         data = pointer;
       
   462         size, left : LongInt;
       
   463         end;
       
   464     TWindowsio = record
       
   465         append = {$IFDEF SDL13}Boolean{$ELSE}LongInt{$ENDIF};
       
   466         h = pointer;
       
   467         buffer = TWinbuffer;
       
   468         end;
       
   469 {$ENDIF}
       
   470 {$ENDIF}
   446 
   471 
   447     TSDL_RWops = record
   472     TSDL_RWops = record
   448         seek: TSeek;
   473         seek: TSeek;
   449         read: TRead;
   474         read: TRead;
   450         write: TWrite;
   475         write: TWrite;
   451         close: TClose;
   476         close: TClose;
   452         type_: LongWord;
   477         type_: LongWord;
   453         case Byte of
   478         case Byte of
   454             0: (stdio: TStdio);
   479 {$IFDEF ANDROID}
   455             1: (mem: TMem);
   480             0: (androidio: TAndroidio);
   456             2: (unknown: TUnknown);
   481 {$ELSE}
       
   482 {$IFDEF WIN32}
       
   483             0: (windowsio: TWindowsio);
       
   484 {$ENDIF}
       
   485 {$ENDIF}
       
   486             1: (stdio: TStdio);     // assumes HAVE_STDIO_H
       
   487             2: (mem: TMem);
       
   488             3: (unknown: TUnknown);
   457             end;
   489             end;
   458 
   490 
   459 
   491 
   460 {* SDL_Event type definition *}
   492 {* SDL_Event type definition *}
   461 
   493 
   462 {$IFDEF SDL13}
   494 {$IFDEF SDL13}
   463     TSDL_KeySym = record
   495     TSDL_Keysym = record
   464         scancode: LongInt;
   496         scancode: LongInt;
   465         sym: LongWord;
   497         sym: LongInt;
   466         modifier: Word;
   498         modifier: Word;
   467         unicode: LongWord;
   499         unused: LongWord;
   468         end;
   500         end;
   469 
   501 
   470     TSDL_WindowEvent = record
   502     TSDL_WindowEvent = record
   471         type_: LongWord;
   503         type_: LongWord;
   472         timestamp: LongWord;
   504         timestamp: LongWord;
   494         end;
   526         end;
   495 
   527 
   496     TSDL_TouchFingerEvent = record
   528     TSDL_TouchFingerEvent = record
   497         type_: LongWord;
   529         type_: LongWord;
   498         timestamp: LongWord;
   530         timestamp: LongWord;
   499         windowId: LongWord;
       
   500         touchId: TSDL_TouchId;
   531         touchId: TSDL_TouchId;
   501         fingerId: TSDL_FingerId;
   532         fingerId: TSDL_FingerId;
   502         state, padding1, padding2, padding3: Byte;
   533         x, y, dx, dy: Single;
   503         x, y: Word;
   534         pressure: Single;
   504         dx, dy: SmallInt;
       
   505         pressure: Word;
       
   506         end;
       
   507 
       
   508     TSDL_TouchButtonEvent = record
       
   509         type_: LongWord;
       
   510         timestamp: LongWord;
       
   511         windowId: LongWord;
       
   512         touchId: TSDL_TouchId;
       
   513         state, button, padding1, padding2: Byte;
       
   514         end;
   535         end;
   515 
   536 
   516     TSDL_MultiGestureEvent = record
   537     TSDL_MultiGestureEvent = record
   517         type_: LongWord;
   538         type_: LongWord;
   518         timestamp: LongWord;
   539         timestamp: LongWord;
   519         windowId: LongWord;
       
   520         touchId: TSDL_TouchId;
   540         touchId: TSDL_TouchId;
   521         dTheta, dDist, x, y: Single;
   541         dTheta, dDist, x, y: Single;
   522         numFingers, padding: Word;
   542         numFingers, padding: Word;
   523         end;
   543         end;
   524 
   544 
   525     TSDL_DollarGestureEvent = record
   545     TSDL_DollarGestureEvent = record
   526         type_: LongWord;
   546         type_: LongWord;
   527         timestamp: LongWord;
   547         timestamp: LongWord;
   528         windowId: LongWord;
       
   529         touchId: Int64;
   548         touchId: Int64;
   530         gesturedId: Int64;
   549         gesturedId: Int64;
   531         numFingers: LongWord;
   550         numFingers: LongWord;
   532         error: Single;
   551         error, x, y: Single;
   533         end;
   552         end;
   534 
   553 
   535     TSDL_DropEvent = record
   554     TSDL_DropEvent = record
   536         type_: LongWord;
   555         type_: LongWord;
   537         timestamp: LongWord;
   556         timestamp: LongWord;
   541     TSDL_SysWMEvent = record
   560     TSDL_SysWMEvent = record
   542         type_: LongWord;
   561         type_: LongWord;
   543         timestamp: LongWord;
   562         timestamp: LongWord;
   544         msg: Pointer;
   563         msg: Pointer;
   545         end;
   564         end;
       
   565 
       
   566     TSDL_ControllerAxisEvent = record
       
   567         type_: LongWord;
       
   568         timestamp: LongWord;
       
   569         which: LongInt;
       
   570         axis, padding1, padding2, padding3: Byte;
       
   571         value: SmallInt;
       
   572         padding4: Word;
       
   573         end;
       
   574 
       
   575     TSDL_ControllerButtonEvent = record
       
   576         type_: LongWord;
       
   577         timestamp: LongWord;
       
   578         which: LongInt;
       
   579         button, states, padding1, padding2: Byte;
       
   580         end;
       
   581 
       
   582     TSDL_ControllerDeviceEvent = record
       
   583         type_: LongWord;
       
   584         timestamp: LongWord;
       
   585         which: SmallInt;
       
   586         end;
       
   587 
       
   588     TSDL_JoyDeviceEvent = TSDL_ControllerDeviceEvent;
       
   589 
       
   590     TSDL_CommonEvent = record
       
   591         type_: LongWord;
       
   592         timestamp: LongWord;
       
   593         end;
       
   594 
       
   595     TSDL_OSEvent = TSDL_CommonEvent;
   546 {$ELSE}
   596 {$ELSE}
   547     TSDL_KeySym = record
   597     TSDL_KeySym = record
   548         scancode: Byte;
   598         scancode: Byte;
   549         sym: LongWord;
   599         sym: LongWord;
   550         modifier: LongWord;
   600         modifier: LongWord;
   564 {$ENDIF}
   614 {$ENDIF}
   565 
   615 
   566     TSDL_KeyboardEvent = record
   616     TSDL_KeyboardEvent = record
   567 {$IFDEF SDL13}
   617 {$IFDEF SDL13}
   568         type_: LongWord;
   618         type_: LongWord;
   569 //        timestamp: LongWord;
   619         timestamp: LongWord;
   570         windowID: LongWord;
   620         windowID: LongWord;
   571         state, repeat_ {*,padding2, padding3*}: Byte;
   621         state, repeat_, padding2, padding3: Byte;
   572 {$ELSE}
   622 {$ELSE}
   573         type_, which, state: Byte;
   623         type_, which, state: Byte;
   574 {$ENDIF}
   624 {$ENDIF}
   575         keysym: TSDL_KeySym;
   625         keysym: TSDL_Keysym;
   576         end;
   626         end;
   577 
   627 
   578     TSDL_MouseMotionEvent = record
   628     TSDL_MouseMotionEvent = record
   579 {$IFDEF SDL13}
   629 {$IFDEF SDL13}
   580         type_: LongWord;
   630         type_: LongWord;
   581         timestamp: LongWord;
   631         timestamp: LongWord;
   582         windowID: LongWord;
   632         windowID: LongWord;
   583         state, padding1, padding2, padding3: Byte;
   633         which, state: LongWord;
   584         x, y, z, xrel, yrel : LongInt;
   634         x, y, xrel, yrel: LongInt;
   585 {$ELSE}
   635 {$ELSE}
   586         type_, which, state: Byte;
   636         type_, which, state: Byte;
   587         x, y, xrel, yrel : Word;
   637         x, y, xrel, yrel: Word;
   588 {$ENDIF}
   638 {$ENDIF}
   589         end;
   639         end;
   590 
   640 
   591     TSDL_MouseButtonEvent = record
   641     TSDL_MouseButtonEvent = record
   592 {$IFDEF SDL13}
   642 {$IFDEF SDL13}
   593         type_: LongWord;
   643         type_: LongWord;
   594         timestamp: LongWord;
   644         timestamp: LongWord;
   595         windowID: LongWord;
   645         windowID: LongWord;
       
   646         which: LongWord;
   596         button, state, padding1, padding2: Byte;
   647         button, state, padding1, padding2: Byte;
   597         x, y: LongInt;
   648         x, y: LongInt;
   598 {$ELSE}
   649 {$ELSE}
   599         type_, which, button, state: Byte;
   650         type_, which, button, state: Byte;
   600         x, y: Word;
   651         x, y: Word;
   604     TSDL_MouseWheelEvent = record
   655     TSDL_MouseWheelEvent = record
   605         type_: LongWord;
   656         type_: LongWord;
   606 {$IFDEF SDL13}
   657 {$IFDEF SDL13}
   607         timestamp: LongWord;
   658         timestamp: LongWord;
   608         windowID: LongWord;
   659         windowID: LongWord;
       
   660         which: LongWord;
   609 {$ELSE}
   661 {$ELSE}
   610         which: Byte;
   662         which: Byte;
   611 {$ENDIF}
   663 {$ENDIF}
   612         x, y: LongInt;
   664         x, y: LongInt;
   613         end;
   665         end;
   614 
   666 
   615     TSDL_JoyAxisEvent = record
   667     TSDL_JoyAxisEvent = record
   616 {$IFDEF SDL13}
   668 {$IFDEF SDL13}
   617         type_: LongWord;
   669         type_: LongWord;
   618         timestamp: LongWord;
   670         timestamp: LongWord;
       
   671         which: LongWord;
   619 {$ELSE}
   672 {$ELSE}
   620         type_: Byte;
   673         type_: Byte;
   621 {$ENDIF}
       
   622         which: Byte;
   674         which: Byte;
       
   675 {$ENDIF}
   623         axis: Byte;
   676         axis: Byte;
   624 {$IFDEF SDL13}
   677 {$IFDEF SDL13}
   625         padding1, padding2: Byte;
   678         padding1, padding2, padding3: Byte;
   626         value: LongInt;
   679         value: LongInt;
       
   680         padding4: Word;
   627 {$ELSE}
   681 {$ELSE}
   628         value: SmallInt;
   682         value: SmallInt;
   629 {$ENDIF}
   683 {$ENDIF}
   630         end;
   684         end;
   631 
   685 
   632     TSDL_JoyBallEvent = record
   686     TSDL_JoyBallEvent = record
   633 {$IFDEF SDL13}
   687 {$IFDEF SDL13}
   634         type_: LongWord;
   688         type_: LongWord;
   635         timestamp: LongWord;
   689         timestamp: LongWord;
       
   690         which: LongWord;
   636 {$ELSE}
   691 {$ELSE}
   637         type_: Byte;
   692         type_: Byte;
   638 {$ENDIF}
       
   639         which: Byte;
   693         which: Byte;
       
   694 {$ENDIF}
   640         ball: Byte;
   695         ball: Byte;
   641 {$IFDEF SDL13}
   696 {$IFDEF SDL13}
   642         padding1, padding2: Byte;
   697         padding1, padding2, padding3: Byte;
   643         xrel, yrel: LongInt;
   698 {$ENDIF}
   644 {$ELSE}
       
   645         xrel, yrel: SmallInt;
   699         xrel, yrel: SmallInt;
   646 {$ENDIF}
       
   647         end;
   700         end;
   648 
   701 
   649     TSDL_JoyHatEvent = record
   702     TSDL_JoyHatEvent = record
   650 {$IFDEF SDL13}
   703 {$IFDEF SDL13}
   651         type_: LongWord;
   704         type_: LongWord;
   652         timestamp: LongWord;
   705         timestamp: LongWord;
       
   706         which: LongWord;
   653 {$ELSE}
   707 {$ELSE}
   654         type_: Byte;
   708         type_: Byte;
   655 {$ENDIF}
       
   656         which: Byte;
   709         which: Byte;
       
   710 {$ENDIF}
   657         hat: Byte;
   711         hat: Byte;
   658         value: Byte;
   712         value: Byte;
   659 {$IFDEF SDL13}
   713 {$IFDEF SDL13}
   660         padding1: Byte;
   714         padding1, padding2: Byte;
   661 {$ENDIF}
   715 {$ENDIF}
   662         end;
   716         end;
   663 
   717 
   664     TSDL_JoyButtonEvent = record
   718     TSDL_JoyButtonEvent = record
   665 {$IFDEF SDL13}
   719 {$IFDEF SDL13}
   699 
   753 
   700     PSDL_Event = ^TSDL_Event;
   754     PSDL_Event = ^TSDL_Event;
   701     TSDL_Event = record
   755     TSDL_Event = record
   702 {$IFDEF SDL13}
   756 {$IFDEF SDL13}
   703         case LongInt of
   757         case LongInt of
   704             SDL_FIRSTEVENT: (type_: LongInt);
   758             SDL_FIRSTEVENT: (type_: LongWord);
       
   759             SDL_COMMONDEVENT: (common: TSDL_CommonEvent);
   705             SDL_WINDOWEVENT: (window: TSDL_WindowEvent);
   760             SDL_WINDOWEVENT: (window: TSDL_WindowEvent);
   706             SDL_KEYDOWN,
   761             SDL_KEYDOWN,
   707             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   762             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   708             SDL_TEXTEDITING: (edit: TSDL_TextEditingEvent);
   763             SDL_TEXTEDITING: (edit: TSDL_TextEditingEvent);
   709             SDL_TEXTINPUT: (tedit: TSDL_TextInputEvent);
   764             SDL_TEXTINPUT: (tedit: TSDL_TextInputEvent);
   714             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   769             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   715             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   770             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   716             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   771             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   717             SDL_JOYBUTTONDOWN,
   772             SDL_JOYBUTTONDOWN,
   718             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   773             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
       
   774             SDL_JOYDEVICEADDED,
       
   775             SDL_JOYDEVICEREMOVED: (jdevice: TSDL_JoyDeviceEvent);
       
   776             SDL_CONTROLLERAXISMOTION: (caxis: TSDL_ControllerAxisEvent);
       
   777             SDL_CONTROLLERBUTTONUP,
       
   778             SDL_CONTROLLERBUTTONDOWN: (cbutton: TSDL_ControllerButtonEvent);
       
   779             SDL_CONTROLLERDEVICEADDED,
       
   780             SDL_CONTROLLERDEVICEREMAPPED,
       
   781             SDL_CONTROLLERDEVICEREMOVED: (cdevice: TSDL_ControllerDeviceEvent);
   719             SDL_QUITEV: (quit: TSDL_QuitEvent);
   782             SDL_QUITEV: (quit: TSDL_QuitEvent);
   720             SDL_USEREVENT: (user: TSDL_UserEvent);
   783             SDL_USEREVENT: (user: TSDL_UserEvent);
   721             SDL_SYSWMEVENT: (syswm: TSDL_SysWMEvent);
   784             SDL_SYSWMEVENT: (syswm: TSDL_SysWMEvent);
   722             SDL_FINGERDOWN,
   785             SDL_FINGERDOWN,
   723             SDL_FINGERUP,
   786             SDL_FINGERUP,
   724             SDL_FINGERMOTION: (tfinger: TSDL_TouchFingerEvent);
   787             SDL_FINGERMOTION: (tfinger: TSDL_TouchFingerEvent);
   725             SDL_TOUCHBUTTONUP,
       
   726             SDL_TOUCHBUTTONDOWN: (tbutton: TSDL_TouchButtonEvent);
       
   727             SDL_MULTIGESTURE: (mgesture: TSDL_MultiGestureEvent);
   788             SDL_MULTIGESTURE: (mgesture: TSDL_MultiGestureEvent);
   728             SDL_DOLLARGESTURE: (dgesture: TSDL_DollarGestureEvent);
   789             SDL_DOLLARGESTURE: (dgesture: TSDL_DollarGestureEvent);
   729             SDL_DROPFILE: (drop: TSDL_DropEvent);
   790             SDL_DROPFILE: (drop: TSDL_DropEvent);
   730             SDL_ALLEVENTS: (foo: shortstring);
   791             SDL_ALLEVENTS: (foo: shortstring);
   731 {$ELSE}
   792 {$ELSE}
   777         SDL_GL_MULTISAMPLESAMPLES,
   838         SDL_GL_MULTISAMPLESAMPLES,
   778         SDL_GL_ACCELERATED_VISUAL,
   839         SDL_GL_ACCELERATED_VISUAL,
   779 {$IFDEF SDL13}
   840 {$IFDEF SDL13}
   780         SDL_GL_RETAINED_BACKING,
   841         SDL_GL_RETAINED_BACKING,
   781         SDL_GL_CONTEXT_MAJOR_VERSION,
   842         SDL_GL_CONTEXT_MAJOR_VERSION,
   782         SDL_GL_CONTEXT_MINOR_VERSION
   843         SDL_GL_CONTEXT_MINOR_VERSION,
       
   844         SDL_GL_CONTEXT_EGL,
       
   845         SDL_GL_CONTEXT_FLAGS,
       
   846         SDL_GL_CONTEXT_PROFILE_MASK,
       
   847         SDL_GL_SHARE_WITH_CURRENT_CONTEXT
   783 {$ELSE}
   848 {$ELSE}
   784         SDL_GL_SWAP_CONTROL
   849         SDL_GL_SWAP_CONTROL
   785 {$ENDIF}
   850 {$ENDIF}
   786         );
   851         );
   787 
   852 
   795         SDL_ARRAYORDER_BGRA,
   860         SDL_ARRAYORDER_BGRA,
   796         SDL_ARRAYORDER_ABGR
   861         SDL_ARRAYORDER_ABGR
   797         );
   862         );
   798 {$ENDIF}
   863 {$ENDIF}
   799 
   864 
   800 // Joystick/Controller support
   865     // Joystick/Controller support
   801     PSDL_Joystick = ^TSDL_Joystick;
   866     PSDL_Joystick = ^TSDL_Joystick;
   802     TSDL_Joystick = record
   867     TSDL_Joystick = record
   803             end;
   868             end;
   804 
   869 
   805     {* SDL_TTF *}
   870     {* SDL_TTF *}
   962 procedure SDL_WaitThread(thread: PSDL_Thread; status: PLongInt); cdecl; external SDLLibName;
  1027 procedure SDL_WaitThread(thread: PSDL_Thread; status: PLongInt); cdecl; external SDLLibName;
   963 procedure SDL_KillThread(thread: PSDL_Thread); cdecl; external SDLLibName;
  1028 procedure SDL_KillThread(thread: PSDL_Thread); cdecl; external SDLLibName;
   964 
  1029 
   965 function  SDL_CreateMutex: PSDL_mutex; cdecl; external SDLLibName;
  1030 function  SDL_CreateMutex: PSDL_mutex; cdecl; external SDLLibName;
   966 procedure SDL_DestroyMutex(mutex: PSDL_mutex); cdecl; external SDLLibName;
  1031 procedure SDL_DestroyMutex(mutex: PSDL_mutex); cdecl; external SDLLibName;
   967 function  SDL_LockMutex(mutex: PSDL_mutex): LongInt; cdecl; external SDLLibName name 'SDL_mutexP';
  1032 function  SDL_LockMutex(mutex: PSDL_mutex): LongInt; cdecl; external SDLLibName {$IFNDEF SDL13}name 'SDL_mutexP'{$ENDIF};
   968 function  SDL_UnlockMutex(mutex: PSDL_mutex): LongInt; cdecl; external SDLLibName name 'SDL_mutexV';
  1033 function  SDL_UnlockMutex(mutex: PSDL_mutex): LongInt; cdecl; external SDLLibName {$IFNDEF SDL13}name 'SDL_mutexV'{$ENDIF};
   969 
  1034 
   970 function  SDL_GL_SetAttribute(attr: TSDL_GLattr; value: LongInt): LongInt; cdecl; external SDLLibName;
  1035 function  SDL_GL_SetAttribute(attr: TSDL_GLattr; value: LongInt): LongInt; cdecl; external SDLLibName;
   971 procedure SDL_GL_SwapBuffers; cdecl; external SDLLibName;
  1036 procedure SDL_GL_SwapBuffers; cdecl; external SDLLibName;
   972 
  1037 
   973 procedure SDL_LockAudio; cdecl; external SDLLibName;
  1038 procedure SDL_LockAudio; cdecl; external SDLLibName;