hedgewars/SDLh.pas
changeset 2591 c6597b65caea
parent 2590 e7e87e3c67db
child 2592 d86618629e20
equal deleted inserted replaced
2590:e7e87e3c67db 2591:c6597b65caea
    66 	SDL_INIT_VIDEO    = $00000020;
    66 	SDL_INIT_VIDEO    = $00000020;
    67 	SDL_INIT_AUDIO    = $00000010;
    67 	SDL_INIT_AUDIO    = $00000010;
    68 	SDL_INIT_JOYSTICK = $00000200;
    68 	SDL_INIT_JOYSTICK = $00000200;
    69 
    69 
    70 	SDL_APPINPUTFOCUS = 2;
    70 	SDL_APPINPUTFOCUS = 2;
    71 
    71 	SDL_BUTTON_WHEELDUP = 4;
       
    72 	SDL_BUTTON_WHEELDOWN = 5;
       
    73 		
       
    74 {*begin sdl_event binding*}
       
    75 	SDL_NOEVENT = 0;
       
    76 	SDL_KEYDOWN = 2;
       
    77 	SDL_KEYUP = 3;
       
    78 {$IFDEF SDL13}
       
    79         SDL_WINDOWEVENT = 1;
       
    80         SDL_TEXTINPUT = 4;
       
    81         SDL_TEXTEDITING = 5;
       
    82 	SDL_MOUSEMOTION  = 6;
       
    83         SDL_MOUSEBUTTONDOWN = 7;
       
    84 	SDL_MOUSEBUTTONUP   = 8;
       
    85         SDL_MOUSEWHEEL = 9;
       
    86 	SDL_JOYAXISMOTION = 10;
       
    87 	SDL_JOYBALLMOTION = 11;
       
    88 	SDL_JOYHATMOTION = 12;
       
    89 	SDL_JOYBUTTONDOWN = 13;
       
    90 	SDL_JOYBUTTONUP = 14;
       
    91 	SDL_QUITEV = 15;
       
    92 {$ELSE}
       
    93         SDL_ACTIVEEVENT = 1;
       
    94 	SDL_MOUSEMOTION  = 4;
       
    95        	SDL_MOUSEBUTTONDOWN = 5;
       
    96 	SDL_MOUSEBUTTONUP   = 6;
       
    97 	SDL_JOYAXISMOTION = 7;
       
    98 	SDL_JOYBALLMOTION = 8;
       
    99 	SDL_JOYHATMOTION = 9;
       
   100 	SDL_JOYBUTTONDOWN = 10;
       
   101 	SDL_JOYBUTTONUP = 11;
       
   102 	SDL_QUITEV = 12;
       
   103 	SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
       
   104 {$ENDIF}
       
   105 {*end sdl_event binding*}
       
   106 		
    72 {$IFDEF SDL13}
   107 {$IFDEF SDL13}
    73 	SDL_ASYNCBLIT   = $08000000;
   108 	SDL_ASYNCBLIT   = $08000000;
    74 	SDL_ANYFORMAT   = $10000000;
   109 	SDL_ANYFORMAT   = $10000000;
    75 	SDL_HWPALETTE   = $00200000;
   110 	SDL_HWPALETTE   = $00200000;
    76 	SDL_DOUBLEBUF   = $00400000;
   111 	SDL_DOUBLEBUF   = $00400000;
    92 	SDL_RLEACCEL    = $00004000;
   127 	SDL_RLEACCEL    = $00004000;
    93 	SDL_NOFRAME     = $00000020;
   128 	SDL_NOFRAME     = $00000020;
    94 	SDL_OPENGL      = $00000002;
   129 	SDL_OPENGL      = $00000002;
    95 	SDL_RESIZABLE   = $00000010;
   130 	SDL_RESIZABLE   = $00000010;
    96 {$ENDIF}
   131 {$ENDIF}
    97 
       
    98 {*begin sdl_event binding*}
       
    99 	SDL_NOEVENT = 0;
       
   100 	SDL_KEYDOWN = 2;
       
   101 	SDL_KEYUP = 3;
       
   102 	SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
       
   103 
       
   104 {$IFDEF SDL13}
       
   105         SDL_WINDOWEVENT = 1;
       
   106         SDL_TEXTINPUT = 4;
       
   107         SDL_TEXTEDITING = 5;
       
   108 	SDL_MOUSEMOTION  = 6;
       
   109         SDL_MOUSEBUTTONDOWN = 7;
       
   110 	SDL_MOUSEBUTTONUP   = 8;
       
   111         SDL_MOUSEWHEEL = 9;  //different handling, should create SDL_MouseWheelEvent type
       
   112 	SDL_JOYAXIS = 10;
       
   113 	SDL_JOYHAT = 12;
       
   114 	SDL_JOYBUTTONDOWN = 13;
       
   115 	SDL_JOYBUTTONUP = 14;
       
   116 	SDL_QUITEV = 15;
       
   117 {$ELSE}
       
   118         SDL_ACTIVEEVENT = 1;
       
   119        	SDL_MOUSEBUTTONDOWN = 5;
       
   120 	SDL_MOUSEBUTTONUP   = 6;
       
   121         SDL_BUTTON_WHEELDUP = 4;
       
   122 	SDL_BUTTON_WHEELDOWN = 5;
       
   123 	SDL_JOYAXIS = 7;
       
   124 	SDL_JOYHAT = 9;
       
   125 	SDL_JOYBUTTONDOWN = 10;
       
   126 	SDL_JOYBUTTONUP = 11;
       
   127 	SDL_QUITEV = 12;
       
   128 {$ENDIF}
       
   129 {*end sdl_event binding*}
       
   130 
   132 
   131 
   133 
   132 {$IFDEF ENDIAN_LITTLE}
   134 {$IFDEF ENDIAN_LITTLE}
   133 	RMask = $000000FF;
   135 	RMask = $000000FF;
   134 	GMask = $0000FF00;
   136 	GMask = $0000FF00;
   240 		sym: Longword;
   242 		sym: Longword;
   241 		modifier: Longword;
   243 		modifier: Longword;
   242 		unicode: Word;
   244 		unicode: Word;
   243 		end;
   245 		end;
   244 
   246 
       
   247 
       
   248 {* SDL_event type definition *}
       
   249 
       
   250 {$IFDEF SDL13}
       
   251 	TSDL_WindowID = LongInt;
       
   252 
       
   253 	TSDL_WindowEvent = record
       
   254 {$ELSE}
   245 	TSDL_ActiveEvent = record
   255 	TSDL_ActiveEvent = record
       
   256 {$ENDIF}
   246 		type_: byte;
   257 		type_: byte;
   247 		gain: byte;
   258 		gain: byte;
   248 		state: byte;
   259 		state: byte;
   249 		end;
   260 {$IFDEF SDL13}
       
   261 		windowID: TSDL_WindowID;
       
   262 		data1, data2: LongInt;
       
   263 {$ENDIF}
       
   264 		end;
       
   265 
       
   266 //SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
       
   267 
       
   268 	TSDL_MouseMotionEvent = record
       
   269                              type_: byte;
       
   270                              which: byte;
       
   271                              state: byte;
       
   272 {$IFDEF SDL13}
       
   273                              x, y, xrel, yrel : LongInt;
       
   274 			     pressure, pressure_max, pressure_min,
       
   275 			     rotation, tilt, cursor: LongInt; 
       
   276 {$ELSE}
       
   277                              x, y, xrel, yrel : word;
       
   278 {$ENDIF}
       
   279                              end;
   250 
   280 
   251 	TSDL_KeyboardEvent = record
   281 	TSDL_KeyboardEvent = record
   252 		type_: Byte;
   282 		type_: Byte;
       
   283 {$IFDEF SDL13}
       
   284 		windowID: TSDL_WindowID;
       
   285 {$ENDIF}
   253 		which: Byte;
   286 		which: Byte;
   254 		state: Byte;
   287 		state: Byte;
   255 		keysym: TSDL_KeySym;
   288 		keysym: TSDL_KeySym;
   256 		end;
   289 		end;
   257 
   290 
   258 	TSDL_MouseButtonEvent = record
   291 	TSDL_MouseButtonEvent = record
   259 		_type,
   292 		_type,
   260 		which,
   293 		which,
   261 		button,
   294 		button,
   262 		state: byte;
   295 		state: byte;
       
   296 {$IFDEF SDL13}
       
   297 		x, y: LongInt;
       
   298 {$ELSE}
   263 		x, y: word;
   299 		x, y: word;
   264 		end;
   300 {$ENDIF}
       
   301 		end;
       
   302 
       
   303 {$IFDEF SDL13}
       
   304 	TSDL_MouseWheelEvent = record
       
   305 		type_: Byte;
       
   306 		windowID: TSDL_WindowID;
       
   307 		which: Byte;
       
   308 		x, y: LongInt;
       
   309 		end;
       
   310 {$ENDIF}
       
   311 
       
   312      TSDL_JoyAxisEvent = record
       
   313 		type_: Byte;
       
   314 		which: Byte;
       
   315 		axis: Byte;
       
   316 {$IFDEF SDL13}
       
   317 		value: LongInt;
       
   318 {$ELSE}
       
   319 		value: word;
       
   320 {$ENDIF}	
       
   321 		end;
       
   322 			
       
   323      TSDL_JoyBallEvent = record
       
   324 		type_: Byte;
       
   325 		which: Byte;
       
   326 		ball: Byte;
       
   327 {$IFDEF SDL13}
       
   328 		xrel, yrel: LongInt;
       
   329 {$ELSE}
       
   330 		xrel, yrel: word;
       
   331 {$ENDIF}
       
   332 		end;
       
   333 
       
   334      TSDL_JoyHatEvent = record
       
   335 		type_: Byte;
       
   336 		which: Byte;
       
   337 		hat: Byte;
       
   338 		value: Byte;
       
   339 		end;
       
   340 	
       
   341      TSDL_JoyButtonEvent = record
       
   342 		type_: Byte;
       
   343 		which: Byte;
       
   344 		button: Byte;
       
   345 		state: Byte;
       
   346 		end;
       
   347 
       
   348      TSDL_QuitEvent = record
       
   349                 type_: Byte;
       
   350                 end;
       
   351 
       
   352 {$IFNDEF SDL13}
       
   353      TSDL_ResizeEvent = record
       
   354 		type_: Byte;
       
   355 		w, h: LongInt;
       
   356 		end;
       
   357 {$ENDIF}
       
   358 
       
   359 	PSDL_Event = ^TSDL_Event;
       
   360 	TSDL_Event = record
       
   361                   case Byte of
       
   362 	SDL_NOEVENT: (type_: byte);
       
   363 {$IFDEF SDL13}
       
   364 	SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
       
   365 	SDL_KEYDOWN,
       
   366         SDL_KEYUP: (key: TSDL_KeyboardEvent);
       
   367 	SDL_TEXTEDITING,
       
   368 	SDL_TEXTINPUT: (txtin: byte);
       
   369 	SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
       
   370 	SDL_MOUSEBUTTONDOWN,
       
   371 	SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
       
   372         SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
       
   373 	SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
       
   374 	SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
       
   375 	SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
       
   376 	SDL_JOYBUTTONDOWN,
       
   377 	SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
       
   378 	SDL_QUITEV: (quit: TSDL_QuitEvent);
       
   379 {$ELSE}
       
   380         SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
       
   381 	SDL_KEYDOWN,
       
   382         SDL_KEYUP: (key: TSDL_KeyboardEvent);
       
   383 	SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
       
   384 	SDL_MOUSEBUTTONDOWN,
       
   385 	SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
       
   386 	SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
       
   387 	SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
       
   388 	SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
       
   389 	SDL_JOYBUTTONDOWN,
       
   390 	SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
       
   391 	SDL_QUITEV: (quit: TSDL_QuitEvent);
       
   392 	//SDL_SYSWMEVENT,SDL_EVENT_RESERVEDA,SDL_EVENT_RESERVEDB
       
   393 	//SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
       
   394 {$ENDIF}
       
   395 		end;
       
   396 
       
   397      PByteArray = ^TByteArray;
       
   398      TByteArray = array[0..65535] of Byte;
       
   399      PLongWordArray = ^TLongWordArray;
       
   400      TLongWordArray = array[0..16383] of LongWord;
       
   401 
       
   402      PSDL_Thread = Pointer;
       
   403      PSDL_mutex = Pointer;
   265 
   404 
   266 	TSDL_GLattr = (
   405 	TSDL_GLattr = (
   267 		SDL_GL_RED_SIZE,
   406 		SDL_GL_RED_SIZE,
   268 		SDL_GL_GREEN_SIZE,
   407 		SDL_GL_GREEN_SIZE,
   269 		SDL_GL_BLUE_SIZE,
   408 		SDL_GL_BLUE_SIZE,
   282 		SDL_GL_ACCELERATED_VISUAL,
   421 		SDL_GL_ACCELERATED_VISUAL,
   283 		SDL_GL_RETAINED_BACKING,
   422 		SDL_GL_RETAINED_BACKING,
   284 		SDL_GL_CONTEXT_MAJOR_VERSION,
   423 		SDL_GL_CONTEXT_MAJOR_VERSION,
   285 		SDL_GL_CONTEXT_MINOR_VERSION
   424 		SDL_GL_CONTEXT_MINOR_VERSION
   286 		);
   425 		);
   287 	
       
   288 
   426 
   289 {$IFDEF SDL13}
   427 {$IFDEF SDL13}
   290 	TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
   428 	TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
   291 		SDL_ARRAYORDER_NONE,
   429 		SDL_ARRAYORDER_NONE,
   292 		SDL_ARRAYORDER_RGB,
   430 		SDL_ARRAYORDER_RGB,
   294 		SDL_ARRAYORDER_ARGB,
   432 		SDL_ARRAYORDER_ARGB,
   295 		SDL_ARRAYORDER_BGR,
   433 		SDL_ARRAYORDER_BGR,
   296 		SDL_ARRAYORDER_BGRA,
   434 		SDL_ARRAYORDER_BGRA,
   297 		SDL_ARRAYORDER_ABGR
   435 		SDL_ARRAYORDER_ABGR
   298 		);
   436 		);
   299 
   437 {$ENDIF}
   300 	TSDL_MouseMotionEvent = record
       
   301                              type_: byte;
       
   302                              which: byte;
       
   303                              state: byte;
       
   304                              x    : LongInt;
       
   305                              y    : LongInt;
       
   306                              xrel : LongInt;
       
   307                              yrel : LongInt;
       
   308                              end;
       
   309 {$ENDIF}
       
   310 
       
   311      TSDL_QuitEvent = record
       
   312                       type_: Byte;
       
   313                       end;
       
   314      TSDL_ResizeEvent = record
       
   315 			type_: Byte;
       
   316 			w, h: LongInt;
       
   317 			end;
       
   318 
       
   319      TSDL_JoyAxisEvent = record
       
   320 			type_: Byte;
       
   321 			which: Byte;
       
   322 			axis: Byte;
       
   323 			value: LongInt;
       
   324 			end;
       
   325 			
       
   326      TSDL_JoyHatEvent = record
       
   327 			type_: Byte;
       
   328 			which: Byte;
       
   329 			hat: Byte;
       
   330 			value: Byte;
       
   331 			end;
       
   332 	
       
   333      TSDL_JoyButtonEvent = record
       
   334 			type_: Byte;
       
   335 			which: Byte;
       
   336 			button: Byte;
       
   337 			state: Byte;
       
   338 			end;
       
   339 	 
       
   340 	PSDL_Event = ^TSDL_Event;
       
   341 	TSDL_Event = record
       
   342                   case Byte of
       
   343 {$IFDEF SDL13}
       
   344 			//doublecheck the type of WINDOWEVENT TEXTINPUT
       
   345 			SDL_NOEVENT: (type_: byte);
       
   346 			SDL_WINDOWEVENT: (active: TSDL_ActiveEvent);
       
   347 			SDL_KEYDOWN,
       
   348                         SDL_KEYUP: (key: TSDL_KeyboardEvent);
       
   349 			SDL_TEXTINPUT: (txtin: byte);
       
   350 			SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
       
   351 			SDL_MOUSEBUTTONDOWN,
       
   352 			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
       
   353 {$ELSE}
       
   354 			SDL_NOEVENT: (type_: byte);
       
   355 			SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
       
   356 			SDL_KEYDOWN,
       
   357 			SDL_KEYUP: (key: TSDL_KeyboardEvent);
       
   358 			SDL_QUITEV: (quit: TSDL_QuitEvent);
       
   359 			SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
       
   360 			SDL_MOUSEBUTTONDOWN,
       
   361 			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
       
   362 {$ENDIF}
       
   363 			SDL_JOYAXIS: (jaxis: TSDL_JoyAxisEvent);
       
   364 			SDL_JOYHAT: (jhat: TSDL_JoyHatEvent);
       
   365 			SDL_JOYBUTTONDOWN,
       
   366 			SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
       
   367      		 end;
       
   368 
       
   369      PByteArray = ^TByteArray;
       
   370      TByteArray = array[0..65535] of Byte;
       
   371      PLongWordArray = ^TLongWordArray;
       
   372      TLongWordArray = array[0..16383] of LongWord;
       
   373 
       
   374      PSDL_Thread = Pointer;
       
   375      PSDL_mutex = Pointer;
       
   376 
   438 
   377 function  SDL_Init(flags: Longword): LongInt; cdecl; external SDLLibName;
   439 function  SDL_Init(flags: Longword): LongInt; cdecl; external SDLLibName;
   378 procedure SDL_Quit; cdecl; external SDLLibName;
   440 procedure SDL_Quit; cdecl; external SDLLibName;
   379 function  SDL_VideoDriverName(var namebuf; maxlen: LongInt): PChar; cdecl; external SDLLibName;
   441 function  SDL_VideoDriverName(var namebuf; maxlen: LongInt): PChar; cdecl; external SDLLibName;
   380 procedure SDL_EnableUNICODE(enable: LongInt); cdecl; external SDLLibName;
   442 procedure SDL_EnableUNICODE(enable: LongInt); cdecl; external SDLLibName;
   451 {$ENDIF}
   513 {$ENDIF}
   452 
   514 
   453 
   515 
   454 
   516 
   455 // Joystick/Controller support
   517 // Joystick/Controller support
   456 type PSDLJoystick = ^TSDLJoystick;
   518 type PSDL_Joystick = ^TSDL_Joystick;
   457      TSDLJoystick = record
   519      TSDL_Joystick = record
   458 	                end;
   520 	                end;
   459 
   521 
   460 function SDL_NumJoysticks: LongInt; cdecl; external SDLLibName;
   522 const	SDL_HAT_CENTERED  = $00;
   461 function SDL_JoystickName(idx: LongInt): PChar; cdecl; external SDLLibName;
   523 	SDL_HAT_UP        = $01;
   462 function SDL_JoystickOpen(idx: LongInt): PSDLJoystick; cdecl; external SDLLibName;
   524 	SDL_HAT_RIGHT     = $02;
   463 function SDL_JoystickOpened(idx: LongInt): LongInt; cdecl; external SDLLibName;
   525 	SDL_HAT_DOWN      = $04;
   464 function SDL_JoystickIndex(joy: PSDLJoystick): LongInt; cdecl; external SDLLibName;
   526 	SDL_HAT_LEFT      = $08;
   465 function SDL_JoystickNumAxes(joy: PSDLJoystick): LongInt; cdecl; external SDLLibName;
   527 	SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
   466 function SDL_JoystickNumBalls(joy: PSDLJoystick): LongInt; cdecl; external SDLLibName;
   528 	SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
   467 function SDL_JoystickNumHats(joy: PSDLJoystick): LongInt; cdecl; external SDLLibName;
   529 	SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
   468 function SDL_JoystickNumButtons(joy: PSDLJoystick): LongInt; cdecl; external SDLLibName;
   530 	SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
       
   531 
       
   532 function  SDL_NumJoysticks: LongInt; cdecl; external SDLLibName;
       
   533 function  SDL_JoystickName(idx: LongInt): PChar; cdecl; external SDLLibName;
       
   534 function  SDL_JoystickOpen(idx: LongInt): PSDL_Joystick; cdecl; external SDLLibName;
       
   535 function  SDL_JoystickOpened(idx: LongInt): LongInt; cdecl; external SDLLibName;
       
   536 function  SDL_JoystickIndex(joy: PSDL_Joystick): LongInt; cdecl; external SDLLibName;
       
   537 function  SDL_JoystickNumAxes(joy: PSDL_Joystick): LongInt; cdecl; external SDLLibName;
       
   538 function  SDL_JoystickNumBalls(joy: PSDL_Joystick): LongInt; cdecl; external SDLLibName;
       
   539 function  SDL_JoystickNumHats(joy: PSDL_Joystick): LongInt; cdecl; external SDLLibName;
       
   540 function  SDL_JoystickNumButtons(joy: PSDL_Joystick): LongInt; cdecl; external SDLLibName;
   469 procedure SDL_JoystickUpdate; cdecl; external SDLLibName;
   541 procedure SDL_JoystickUpdate; cdecl; external SDLLibName;
   470 function SDL_JoystickEventState(state: LongInt): LongInt; cdecl; external SDLLibName;
   542 function  SDL_JoystickEventState(state: LongInt): LongInt; cdecl; external SDLLibName;
   471 function SDL_JoystickGetAxis(joy: PSDLJoystick; axis: LongInt): Word; cdecl; external SDLLibName;
   543 function  SDL_JoystickGetAxis(joy: PSDL_Joystick; axis: LongInt): LongInt; cdecl; external SDLLibName;
   472 const SDL_HAT_CENTERED  = $00;
   544 function  SDL_JoystickGetBall(joy: PSDL_Joystick; ball: LongInt; dx: PInteger; dy: PInteger): Word; cdecl; external SDLLibName;
   473       SDL_HAT_UP        = $01;
   545 function  SDL_JoystickGetHat(joy: PSDL_Joystick; hat: LongInt): Byte; cdecl; external SDLLibName;
   474 	  SDL_HAT_RIGHT     = $02;
   546 function  SDL_JoystickGetButton(joy: PSDL_Joystick; button: LongInt): Byte; cdecl; external SDLLibName;
   475 	  SDL_HAT_DOWN      = $04;
   547 procedure SDL_JoystickClose(joy: PSDL_Joystick); cdecl; external SDLLibName;
   476 	  SDL_HAT_LEFT      = $08;
       
   477 	  SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
       
   478 	  SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
       
   479 	  SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
       
   480 	  SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
       
   481 function SDL_JoystickGetBall(joy: PSDLJoystick; ball: LongInt; dx: PInteger; dy: PInteger): Word; cdecl; external SDLLibName;
       
   482 function SDL_JoystickGetHat(joy: PSDLJoystick; hat: LongInt): Byte; cdecl; external SDLLibName;
       
   483 function SDL_JoystickGetButton(joy: PSDLJoystick; button: LongInt): Byte; cdecl; external SDLLibName;
       
   484 procedure SDL_JoystickClose(joy: PSDLJoystick); cdecl; external SDLLibName;
       
   485 
   548 
   486 (*  TTF  *)
   549 (*  TTF  *)
   487 
   550 
   488 const {$IFDEF WIN32}
   551 const {$IFDEF WIN32}
   489       SDL_TTFLibName = 'SDL_ttf.dll';
   552       SDL_TTFLibName = 'SDL_ttf.dll';