1 {$INCLUDE ../shared/a_modes.inc}
11 SDL_HAT_CENTERED
= $00;
16 SDL_HAT_RIGHTUP
= SDL_HAT_RIGHT
or SDL_HAT_UP
;
17 SDL_HAT_RIGHTDOWN
= SDL_HAT_RIGHT
or SDL_HAT_DOWN
;
18 SDL_HAT_LEFTUP
= SDL_HAT_LEFT
or SDL_HAT_UP
;
19 SDL_HAT_LEFTDOWN
= SDL_HAT_LEFT
or SDL_HAT_DOWN
;
28 AUDIO_U16
= AUDIO_U16LSB
;
29 AUDIO_S16
= AUDIO_S16LSB
;
32 SDL_TOUCH_MOUSEID
= UInt32(-1);
35 PSDL_Window
= ^TSDL_Window
;
36 TSDL_Window
= record end;
38 PSDL_Joystick
= Pointer;
39 TSDL_JoystickGUID
= record
40 data
: array[0..15] of UInt8
;
42 TSDL_JoystickID
= SInt32
;
44 PSDL_RWops
= ^TSDL_RWops
;
46 TSize
= function(context
: PSDL_RWops
): SInt64
; cdecl;
47 TSeek
= function(context
: PSDL_RWops
; offset
: SInt64
; whence
: SInt32
): SInt64
; cdecl;
48 TRead
= function(context
: PSDL_RWops
; ptr
: Pointer; size
: size_t
; maxnum
: size_t
): size_t
; cdecl;
49 TWrite
= function(context
: PSDL_RWops
; const ptr
: Pointer; size
: size_t
; num
: size_t
): size_t
; cdecl;
50 TClose
= function(context
: PSDL_RWops
): SInt32
; cdecl;
67 TSDL_RWops
= packed record
77 2: (unknown
: TUnknown
);
79 3: (androidio
: TAndroidIO
);
82 3: (windowsio
: TWindowsIO
);
86 PSDL_TouchID
= ^TSDL_TouchID
;
87 TSDL_TouchID
= SInt64
;
89 PSDL_FingerID
= ^TSDL_FingerID
;
90 TSDL_FingerID
= SInt64
;
95 SDL_FINGERDOWN
= $700;
97 SDL_FINGERMOTION
= $702;
100 TSDL_TouchFingerEvent
= record
103 touchId
: TSDL_TouchID
;
104 fingerId
: TSDL_FingerID
;
111 SDL_WINDOWPOS_CENTERED_MASK
= $2FFF0000;
112 SDL_WINDOWPOS_CENTERED
= SDL_WINDOWPOS_CENTERED_MASK
or 0;
115 PSDL_DisplayMode
= ^TSDL_DisplayMode
;
116 TSDL_DisplayMode
= record
120 refresh_rate
: SInt32
;
124 TSDL_GLContext
= Pointer;
127 SDL_WINDOW_FULLSCREEN
= $00000001;
128 SDL_WINDOW_OPENGL
= $00000002;
129 SDL_WINDOW_SHOWN
= $00000004;
130 SDL_WINDOW_HIDDEN
= $00000008;
131 SDL_WINDOW_BORDERLESS
= $00000010;
132 SDL_WINDOW_RESIZABLE
= $00000020;
133 SDL_WINDOW_MINIMIZED
= $00000040;
134 SDL_WINDOW_MAXIMIZED
= $00000080;
135 SDL_WINDOW_INPUT_GRABBED
= $00000100;
136 SDL_WINDOW_INPUT_FOCUS
= $00000200;
137 SDL_WINDOW_MOUSE_FOCUS
= $00000400;
138 SDL_WINDOW_FULLSCREEN_DESKTOP
= SDL_WINDOW_FULLSCREEN
or $00001000;
139 SDL_WINDOW_FOREIGN
= $00000800;
140 SDL_WINDOW_ALLOW_HIGHDPI
= $00002000;
142 SDL_WINDOWEVENT_EXPOSED
= 3;
143 SDL_WINDOWEVENT_MOVED
= 4;
144 SDL_WINDOWEVENT_RESIZED
= 5;
145 SDL_WINDOWEVENT_MINIMIZED
= 7;
146 SDL_WINDOWEVENT_MAXIMIZED
= 8;
147 SDL_WINDOWEVENT_RESTORED
= 9;
148 SDL_WINDOWEVENT_FOCUS_GAINED
= 12;
149 SDL_WINDOWEVENT_FOCUS_LOST
= 13;
154 SDL_TEXTINPUTEVENT_TEXT_SIZE
= 32;
159 SDL_WINDOWEVENT
= $200;
162 //SDL_TEXTEDITING = $302;
163 SDL_TEXTINPUT
= $303;
166 TSDL_WindowEvent
= record
167 type_
: UInt32
; // SDL_WINDOWEVENT
169 windowID
: UInt32
; // The associated window
170 event
: UInt8
; // SDL_WindowEventID
174 data1
: SInt32
; // event dependent data
175 data2
: SInt32
; // event dependent data
178 PSDL_Keysym
= ^TSDL_Keysym
;
180 scancode
: TSDL_ScanCode
; // SDL physical key code - see SDL_Scancode for details
181 sym
: TSDL_KeyCode
; // SDL virtual key code - see SDL_Keycode for details
182 _mod
: UInt16
; // current key modifiers
183 unicode
: UInt32
; // (deprecated) use SDL_TextInputEvent instead
186 TSDL_KeyboardEvent
= record
187 type_
: UInt32
; // SDL_KEYDOWN or SDL_KEYUP
189 windowID
: UInt32
; // The window with keyboard focus, if any
190 state
: UInt8
; // SDL_PRESSED or SDL_RELEASED
191 _repeat
: UInt8
; // Non-zero if this is a key repeat
194 keysym
: TSDL_KeySym
; // The key that was pressed or released
197 TSDL_TextInputEvent
= record
198 type_
: UInt32
; // SDL_TEXTINPUT
200 windowID
: UInt32
; // The window with keyboard focus, if any
201 text: array[0..SDL_TEXTINPUTEVENT_TEXT_SIZE
] of Char; // The input text
204 TSDL_QuitEvent
= record
205 type_
: UInt32
; // SDL_QUIT
209 PSDL_Event
= ^TSDL_Event
;
213 //SDL_COMMONEVENT: (common: TSDL_CommonEvent);
214 SDL_WINDOWEVENT
: (window
: TSDL_WindowEvent
);
216 SDL_KEYDOWN
: (key
: TSDL_KeyboardEvent
);
217 //SDL_TEXTEDITING: (edit: TSDL_TextEditingEvent);
218 SDL_TEXTINPUT
: (text: TSDL_TextInputEvent
);
219 //SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
221 //SDL_MOUSEBUTTONDOWN: (button: TSDL_MouseButtonEvent);
222 //SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
223 //SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
224 //SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
225 //SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
227 //SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
228 //SDL_JOYDEVICEADDED,
229 //SDL_JOYDEVICEREMOVED: (jdevice: TSDL_JoyDeviceEvent);
230 //SDL_CONTROLLERAXISMOTION: (caxis: TSDL_ControllerAxisEvent);
231 //SDL_CONTROLLERBUTTONUP,
232 //SDL_CONTROLLERBUTTONDOWN: (cbutton: TSDL_ControllerButtonEvent);
233 //SDL_CONTROLLERDEVICEADDED,
234 //SDL_CONTROLLERDEVICEREMOVED,
235 //SDL_CONTROLLERDEVICEREMAPPED: (cdevice: TSDL_ControllerDeviceEvent);
236 //SDL_AUDIODEVICEADDED,
237 //SDL_AUDIODEVICEREMOVED: (adevice: TSDL_AudioDeviceEvent);
238 SDL_QUITEV
: (quit
: TSDL_QuitEvent
);
239 //SDL_USEREVENT: (user: TSDL_UserEvent);
240 //SDL_SYSWMEVENT: (syswm: TSDL_SysWMEvent);
243 SDL_FINGERMOTION
: (tfinger
: TSDL_TouchFingerEvent
);
244 //SDL_MULTIGESTURE: (mgesture: TSDL_MultiGestureEvent);
245 //SDL_DOLLARGESTURE,SDL_DOLLARRECORD: (dgesture: TSDL_DollarGestureEvent);
246 //SDL_DROPFILE: (drop: TSDL_DropEvent);
251 SDL_GL_GREEN_SIZE
= 1;
252 SDL_GL_BLUE_SIZE
= 2;
253 SDL_GL_ALPHA_SIZE
= 3;
254 SDL_GL_BUFFER_SIZE
= 4;
255 SDL_GL_DOUBLEBUFFER
= 5;
256 SDL_GL_DEPTH_SIZE
= 6;
257 SDL_GL_STENCIL_SIZE
= 7;
258 SDL_GL_ACCUM_RED_SIZE
= 8;
259 SDL_GL_ACCUM_GREEN_SIZE
= 9;
260 SDL_GL_ACCUM_BLUE_SIZE
= 10;
261 SDL_GL_ACCUM_ALPHA_SIZE
= 11;
263 SDL_GL_MULTISAMPLEBUFFERS
= 13;
264 SDL_GL_MULTISAMPLESAMPLES
= 14;
265 SDL_GL_ACCELERATED_VISUAL
= 15;
266 SDL_GL_RETAINED_BACKING
= 16;
267 SDL_GL_CONTEXT_MAJOR_VERSION
= 17;
268 SDL_GL_CONTEXT_MINOR_VERSION
= 18;
269 SDL_GL_CONTEXT_EGL
= 19;
270 SDL_GL_CONTEXT_FLAGS
= 20;
271 SDL_GL_CONTEXT_PROFILE_MASK
= 21;
272 SDL_GL_SHARE_WITH_CURRENT_CONTEXT
= 22;
273 SDL_GL_FRAMEBUFFER_SRGB_CAPABLE
= 23;
279 SDL_INIT_TIMER
= $00000001;
280 SDL_INIT_AUDIO
= $00000010;
281 SDL_INIT_VIDEO
= $00000020;
282 SDL_INIT_JOYSTICK
= $00000200;
283 SDL_INIT_HAPTIC
= $00001000;
284 SDL_INIT_GAMECONTROLLER
= $00002000; //turn on game controller also implicitly does JOYSTICK
285 SDL_INIT_NOPARACHUTE
= $00100000; //Don't catch fatal signals
286 SDL_INIT_EVERYTHING
= SDL_INIT_TIMER
or SDL_INIT_AUDIO
or
287 SDL_INIT_VIDEO
or SDL_INIT_JOYSTICK
or
288 SDL_INIT_HAPTIC
or SDL_INIT_GAMECONTROLLER
;
290 SDL_HINT_ACCELEROMETER_AS_JOYSTICK
= 'SDL_ACCELEROMETER_AS_JOYSTICK';
293 function SDL_BITSPERPIXEL(X
: Cardinal): Cardinal;
297 function SDL_SetWindowGammaRamp(window
: PSDL_Window
; const red
: PUInt16
; const green
: PUInt16
; const blue
: PUInt16
): SInt32
;
298 function SDL_GetWindowGammaRamp(window
: PSDL_Window
; red
: PUInt16
; green
: PUInt16
; blue
: PUInt16
): SInt32
;
300 function SDL_NumJoysticks
: SInt32
;
301 function SDL_JoystickOpen(device_index
: SInt32
): PSDL_Joystick
;
302 function SDL_JoystickName(joystick
: PSDL_Joystick
): PAnsiChar;
303 function SDL_JoystickNumAxes(joystick
: PSDL_Joystick
): SInt32
;
304 function SDL_JoystickNumButtons(joystick
: PSDL_Joystick
): SInt32
;
305 function SDL_JoystickNumHats(joystick
: PSDL_Joystick
): SInt32
;
306 procedure SDL_JoystickClose(joystick
: PSDL_Joystick
);
307 procedure SDL_JoystickUpdate
;
308 function SDL_JoystickGetButton(joystick
: PSDL_Joystick
; button
: SInt32
): UInt8
;
309 function SDL_JoystickGetAxis(joystick
: PSDL_Joystick
; axis
: SInt32
): SInt16
;
310 function SDL_JoystickGetHat(joystick
: PSDL_Joystick
; hat
: SInt32
): UInt8
;
312 function SDL_GetScancodeName(scancode
: TSDL_ScanCode
): PAnsiChar;
314 function SDL_GetPerformanceCounter
: UInt64;
315 function SDL_GetPerformanceFrequency
: UInt64;
317 function SDL_RWFromFile(const _file
: PAnsiChar; const mode
: PAnsiChar): PSDL_RWops
;
318 function SDL_RWFromConstMem(const mem
: Pointer; size
: SInt32
): PSDL_RWops
;
320 function SDL_GetDisplayDPI(displayIndex
: SInt32
; ddpi
, hdpi
, vdpi
: PFloat
): SInt32
;
321 function SDL_IsTextInputActive
: TSDL_Bool
;
322 procedure SDL_StartTextInput
;
323 procedure SDL_StopTextInput
;
324 function SDL_GetNumTouchDevices
: SInt32
;
326 function SDL_GetDesktopDisplayMode(displayIndex
: SInt32
; mode
: PSDL_DisplayMode
): SInt32
;
327 function SDL_GetClosestDisplayMode(displayIndex
: SInt32
; const mode
: PSDL_DisplayMode
; closest
: PSDL_DisplayMode
): PSDL_DisplayMode
;
329 procedure SDL_DestroyWindow(window
: PSDL_Window
);
330 procedure SDL_GL_DeleteContext(context
: TSDL_GLContext
);
331 procedure SDL_RestoreWindow(window
: PSDL_Window
);
332 procedure SDL_SetWindowSize(window
: PSDL_Window
; w
: SInt32
; h
: SInt32
);
333 function SDL_CreateWindow(const title
: PAnsiChar; x
: SInt32
; y
: SInt32
; w
: SInt32
; h
: SInt32
; flags
: UInt32
): PSDL_Window
;
334 function SDL_SetWindowFullscreen(window
: PSDL_Window
; flags
: UInt32
): SInt32
;
335 function SDL_GL_MakeCurrent(window
: PSDL_Window
; context
: TSDL_GLContext
): SInt32
;
336 procedure SDL_GetWindowSize(window
: PSDL_Window
; w
: PInt
; h
: PInt
);
337 function SDL_GetNumDisplayModes(displayIndex
: SInt32
): SInt32
;
338 function SDL_GetDisplayMode(displayIndex
: SInt32
; modeIndex
: SInt32
; mode
: PSDL_DisplayMode
): SInt32
;
340 function SDL_ShowCursor(toggle
: SInt32
): SInt32
;
341 procedure SDL_Delay(ms
: UInt32
);
342 procedure SDL_GL_SwapWindow(window
: PSDL_Window
);
344 function SDL_GL_CreateContext(window
: PSDL_Window
): TSDL_GLContext
;
345 function SDL_GetTicks
: UInt32
;
347 function SDL_PushEvent(event
: PSDL_Event
): SInt32
;
348 function SDL_PollEvent(event
: PSDL_Event
): SInt32
;
349 function SDL_GL_SetSwapInterval(interval
: SInt32
): SInt32
;
350 function SDL_GL_SetAttribute(attr
: TSDL_GLattr
; value
: SInt32
): SInt32
;
351 function SDL_GL_GetAttribute(attr
: TSDL_GLattr
; value
: PInt
): SInt32
;
353 function SDL_GetError
: PAnsiChar;
355 function SDL_Init(flags
: UInt32
): SInt32
;
356 procedure SDL_Quit();
357 function SDL_SetHint( const name
: PChar; const value
: PChar) : boolean;
362 function SDL_BITSPERPIXEL(X
: Cardinal): Cardinal;
364 Result
:= (X
shr 8) and $FF;
369 function SDL_SetWindowGammaRamp(window
: PSDL_Window
; const red
: PUInt16
; const green
: PUInt16
; const blue
: PUInt16
): SInt32
;
374 function SDL_GetWindowGammaRamp(window
: PSDL_Window
; red
: PUInt16
; green
: PUInt16
; blue
: PUInt16
): SInt32
;
380 function SDL_NumJoysticks
: SInt32
;
385 function SDL_JoystickOpen(device_index
: SInt32
): PSDL_Joystick
;
390 function SDL_JoystickName(joystick
: PSDL_Joystick
): PAnsiChar;
395 function SDL_JoystickNumAxes(joystick
: PSDL_Joystick
): SInt32
;
400 function SDL_JoystickNumButtons(joystick
: PSDL_Joystick
): SInt32
;
405 function SDL_JoystickNumHats(joystick
: PSDL_Joystick
): SInt32
;
410 procedure SDL_JoystickClose(joystick
: PSDL_Joystick
);
414 procedure SDL_JoystickUpdate
;
418 function SDL_JoystickGetButton(joystick
: PSDL_Joystick
; button
: SInt32
): UInt8
;
423 function SDL_JoystickGetAxis(joystick
: PSDL_Joystick
; axis
: SInt32
): SInt16
;
428 function SDL_JoystickGetHat(joystick
: PSDL_Joystick
; hat
: SInt32
): UInt8
;
436 function SDL_GetScancodeName(scancode
: TSDL_ScanCode
): PAnsiChar;
444 function SDL_GetPerformanceCounter
: UInt64;
449 function SDL_GetPerformanceFrequency
: UInt64;
456 function SDL_RWFromFile(const _file
: PAnsiChar; const mode
: PAnsiChar): PSDL_RWops
;
461 function SDL_RWFromConstMem(const mem
: Pointer; size
: SInt32
): PSDL_RWops
;
469 function SDL_GetDisplayDPI(displayIndex
: SInt32
; ddpi
, hdpi
, vdpi
: PFloat
): SInt32
;
474 function SDL_IsTextInputActive
: TSDL_Bool
;
479 procedure SDL_StartTextInput
;
483 procedure SDL_StopTextInput
;
487 function SDL_GetNumTouchDevices
: SInt32
;
494 function SDL_GetDesktopDisplayMode(displayIndex
: SInt32
; mode
: PSDL_DisplayMode
): SInt32
;
499 function SDL_GetClosestDisplayMode(displayIndex
: SInt32
; const mode
: PSDL_DisplayMode
; closest
: PSDL_DisplayMode
): PSDL_DisplayMode
;
504 procedure SDL_DestroyWindow(window
: PSDL_Window
);
508 procedure SDL_GL_DeleteContext(context
: TSDL_GLContext
);
512 procedure SDL_RestoreWindow(window
: PSDL_Window
);
516 procedure SDL_SetWindowSize(window
: PSDL_Window
; w
: SInt32
; h
: SInt32
);
520 function SDL_CreateWindow(const title
: PAnsiChar; x
: SInt32
; y
: SInt32
; w
: SInt32
; h
: SInt32
; flags
: UInt32
): PSDL_Window
;
525 function SDL_SetWindowFullscreen(window
: PSDL_Window
; flags
: UInt32
): SInt32
;
530 function SDL_GL_MakeCurrent(window
: PSDL_Window
; context
: TSDL_GLContext
): SInt32
;
535 procedure SDL_GetWindowSize(window
: PSDL_Window
; w
: PInt
; h
: PInt
);
539 function SDL_GetNumDisplayModes(displayIndex
: SInt32
): SInt32
;
544 function SDL_GetDisplayMode(displayIndex
: SInt32
; modeIndex
: SInt32
; mode
: PSDL_DisplayMode
): SInt32
;
549 function SDL_ShowCursor(toggle
: SInt32
): SInt32
;
554 procedure SDL_Delay(ms
: UInt32
);
558 procedure SDL_GL_SwapWindow(window
: PSDL_Window
);
562 function SDL_GL_CreateContext(window
: PSDL_Window
): TSDL_GLContext
;
567 function SDL_GetTicks
: UInt32
;
572 function SDL_PushEvent(event
: PSDL_Event
): SInt32
;
577 function SDL_PollEvent(event
: PSDL_Event
): SInt32
;
582 function SDL_GL_SetSwapInterval(interval
: SInt32
): SInt32
;
587 function SDL_GL_SetAttribute(attr
: TSDL_GLattr
; value
: SInt32
): SInt32
;
592 function SDL_GL_GetAttribute(attr
: TSDL_GLattr
; value
: PInt
): SInt32
;
597 function SDL_GetError
: PAnsiChar;
602 function SDL_Init(flags
: UInt32
): SInt32
;
607 procedure SDL_Quit();
611 function SDL_SetHint( const name
: PChar; const value
: PChar) : boolean;