hedgewars/SDLh.pas
changeset 2948 3f21a9dc93d0
parent 2800 f286d91157b8
child 3153 adfe8a91658f
equal deleted inserted replaced
2947:803b277e4894 2948:3f21a9dc93d0
    55 
    55 
    56 
    56 
    57 (*  SDL  *)
    57 (*  SDL  *)
    58 const
    58 const
    59 {$IFDEF WIN32}
    59 {$IFDEF WIN32}
    60 	SDLLibName = 'SDL.dll';
    60     SDLLibName = 'SDL.dll';
    61 	SDL_TTFLibName = 'SDL_ttf.dll';
    61     SDL_TTFLibName = 'SDL_ttf.dll';
    62 	SDL_MixerLibName = 'SDL_mixer.dll';
    62     SDL_MixerLibName = 'SDL_mixer.dll';
    63 	SDL_ImageLibName = 'SDL_image.dll';
    63     SDL_ImageLibName = 'SDL_image.dll';
    64 	SDL_NetLibName = 'SDL_net.dll';
    64     SDL_NetLibName = 'SDL_net.dll';
    65 {$ELSE}
    65 {$ELSE}
    66   {$IFDEF DARWIN}
    66   {$IFDEF DARWIN}
    67 	SDLLibName = 'SDL';
    67     SDLLibName = 'SDL';
    68 	SDL_TTFLibName = 'SDL_ttf';
    68     SDL_TTFLibName = 'SDL_ttf';
    69 	SDL_MixerLibName = 'SDL_mixer';
    69     SDL_MixerLibName = 'SDL_mixer';
    70 	SDL_ImageLibName = 'SDL_image';
    70     SDL_ImageLibName = 'SDL_image';
    71 	SDL_NetLibName = 'SDL_net';
    71     SDL_NetLibName = 'SDL_net';
    72   {$ELSE}
    72   {$ELSE}
    73 	SDLLibName = 'libSDL.so';
    73     SDLLibName = 'libSDL.so';
    74 	SDL_TTFLibName = 'libSDL_ttf.so';
    74     SDL_TTFLibName = 'libSDL_ttf.so';
    75 	SDL_MixerLibName = 'libSDL_mixer.so';
    75     SDL_MixerLibName = 'libSDL_mixer.so';
    76 	SDL_ImageLibName = 'libSDL_image.so';
    76     SDL_ImageLibName = 'libSDL_image.so';
    77 	SDL_NetLibName = 'libSDL_net.so';
    77     SDL_NetLibName = 'libSDL_net.so';
    78   {$ENDIF}
    78   {$ENDIF}
    79 {$ENDIF}
    79 {$ENDIF}
    80 
    80 
    81 /////////////////////////////////////////////////////////////////
    81 /////////////////////////////////////////////////////////////////
    82 /////////////////////  CONSTANT DEFINITIONS /////////////////////
    82 /////////////////////  CONSTANT DEFINITIONS /////////////////////
    83 /////////////////////////////////////////////////////////////////
    83 /////////////////////////////////////////////////////////////////
    84 
    84 
    85 	SDL_SWSURFACE     = $00000000;
    85     SDL_SWSURFACE     = $00000000;
    86 	SDL_HWSURFACE     = $00000001;
    86     SDL_HWSURFACE     = $00000001;
    87 	SDL_SRCALPHA      = $00010000;
    87     SDL_SRCALPHA      = $00010000;
    88 	
    88     
    89 	SDL_INIT_TIMER    = $00000001;
    89     SDL_INIT_TIMER    = $00000001;
    90 	SDL_INIT_AUDIO    = $00000010;
    90     SDL_INIT_AUDIO    = $00000010;
    91 	SDL_INIT_VIDEO    = $00000020;
    91     SDL_INIT_VIDEO    = $00000020;
    92 	SDL_INIT_JOYSTICK = $00000200;
    92     SDL_INIT_JOYSTICK = $00000200;
    93 {$IFDEF SDL13}
    93 {$IFDEF SDL13}
    94 	SDL_INIT_HAPTIC   = $00001000;
    94     SDL_INIT_HAPTIC   = $00001000;
    95 {$ELSE}
    95 {$ELSE}
    96 	SDL_INIT_CDROM	  = $00000100;
    96     SDL_INIT_CDROM    = $00000100;
    97 {$ENDIF}
    97 {$ENDIF}
    98 	SDL_INIT_NOPARACHUTE = $00100000;
    98     SDL_INIT_NOPARACHUTE = $00100000;
    99 	SDL_INIT_EVENTTHREAD = $01000000;
    99     SDL_INIT_EVENTTHREAD = $01000000;
   100 	SDL_INIT_EVERYTHING  = $0000FFFF;
   100     SDL_INIT_EVERYTHING  = $0000FFFF;
   101 
   101 
   102 	SDL_APPINPUTFOCUS    = 2;
   102     SDL_APPINPUTFOCUS    = 2;
   103 	SDL_BUTTON_WHEELUP   = 4;
   103     SDL_BUTTON_WHEELUP   = 4;
   104 	SDL_BUTTON_WHEELDOWN = 5;
   104     SDL_BUTTON_WHEELDOWN = 5;
   105 		
   105         
   106 {*begin SDL_Event binding*}
   106 {*begin SDL_Event binding*}
   107 	SDL_NOEVENT = 0;
   107     SDL_NOEVENT = 0;
   108 	SDL_KEYDOWN = 2;
   108     SDL_KEYDOWN = 2;
   109 	SDL_KEYUP = 3;
   109     SDL_KEYUP = 3;
   110 {$IFDEF SDL13}
   110 {$IFDEF SDL13}
   111         SDL_WINDOWEVENT = 1;
   111         SDL_WINDOWEVENT = 1;
   112         SDL_TEXTINPUT = 4;
   112         SDL_TEXTINPUT = 4;
   113         SDL_TEXTEDITING = 5;
   113         SDL_TEXTEDITING = 5;
   114 	SDL_MOUSEMOTION  = 6;
   114     SDL_MOUSEMOTION  = 6;
   115         SDL_MOUSEBUTTONDOWN = 7;
   115         SDL_MOUSEBUTTONDOWN = 7;
   116 	SDL_MOUSEBUTTONUP   = 8;
   116     SDL_MOUSEBUTTONUP   = 8;
   117         SDL_MOUSEWHEEL = 9;
   117         SDL_MOUSEWHEEL = 9;
   118 	SDL_JOYAXISMOTION = 10;
   118     SDL_JOYAXISMOTION = 10;
   119 	SDL_JOYBALLMOTION = 11;
   119     SDL_JOYBALLMOTION = 11;
   120 	SDL_JOYHATMOTION = 12;
   120     SDL_JOYHATMOTION = 12;
   121 	SDL_JOYBUTTONDOWN = 13;
   121     SDL_JOYBUTTONDOWN = 13;
   122 	SDL_JOYBUTTONUP = 14;
   122     SDL_JOYBUTTONUP = 14;
   123 	SDL_QUITEV = 15;
   123     SDL_QUITEV = 15;
   124 {$ELSE}
   124 {$ELSE}
   125         SDL_ACTIVEEVENT = 1;
   125         SDL_ACTIVEEVENT = 1;
   126 	SDL_MOUSEMOTION  = 4;
   126     SDL_MOUSEMOTION  = 4;
   127        	SDL_MOUSEBUTTONDOWN = 5;
   127         SDL_MOUSEBUTTONDOWN = 5;
   128 	SDL_MOUSEBUTTONUP   = 6;
   128     SDL_MOUSEBUTTONUP   = 6;
   129 	SDL_JOYAXISMOTION = 7;
   129     SDL_JOYAXISMOTION = 7;
   130 	SDL_JOYBALLMOTION = 8;
   130     SDL_JOYBALLMOTION = 8;
   131 	SDL_JOYHATMOTION = 9;
   131     SDL_JOYHATMOTION = 9;
   132 	SDL_JOYBUTTONDOWN = 10;
   132     SDL_JOYBUTTONDOWN = 10;
   133 	SDL_JOYBUTTONUP = 11;
   133     SDL_JOYBUTTONUP = 11;
   134 	SDL_QUITEV = 12;
   134     SDL_QUITEV = 12;
   135 	SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
   135     SDL_VIDEORESIZE = 16; // TODO: outdated? no longer in SDL 1.3?
   136 {$ENDIF}
   136 {$ENDIF}
   137 {*end SDL_Event binding*}
   137 {*end SDL_Event binding*}
   138 		
   138         
   139 {$IFDEF SDL13}
   139 {$IFDEF SDL13}
   140 	SDL_ASYNCBLIT   = $08000000;
   140     SDL_ASYNCBLIT   = $08000000;
   141 	SDL_ANYFORMAT   = $10000000;
   141     SDL_ANYFORMAT   = $10000000;
   142 	SDL_HWPALETTE   = $00200000;
   142     SDL_HWPALETTE   = $00200000;
   143 	SDL_DOUBLEBUF   = $00400000;
   143     SDL_DOUBLEBUF   = $00400000;
   144 	SDL_FULLSCREEN  = $00800000;
   144     SDL_FULLSCREEN  = $00800000;
   145 	SDL_HWACCEL     = $08000000;
   145     SDL_HWACCEL     = $08000000;
   146 	SDL_SRCCOLORKEY = $00020000;
   146     SDL_SRCCOLORKEY = $00020000;
   147 	SDL_RLEACCEL    = $08000000;
   147     SDL_RLEACCEL    = $08000000;
   148 	SDL_NOFRAME     = $02000000;
   148     SDL_NOFRAME     = $02000000;
   149 	SDL_OPENGL      = $04000000;
   149     SDL_OPENGL      = $04000000;
   150 	SDL_RESIZABLE   = $01000000;
   150     SDL_RESIZABLE   = $01000000;
   151 {$ELSE}
   151 {$ELSE}
   152 	SDL_ASYNCBLIT   = $00000004;
   152     SDL_ASYNCBLIT   = $00000004;
   153 	SDL_ANYFORMAT   = $00100000;
   153     SDL_ANYFORMAT   = $00100000;
   154 	SDL_HWPALETTE   = $20000000;
   154     SDL_HWPALETTE   = $20000000;
   155 	SDL_DOUBLEBUF   = $40000000;
   155     SDL_DOUBLEBUF   = $40000000;
   156 	SDL_FULLSCREEN  = $80000000;
   156     SDL_FULLSCREEN  = $80000000;
   157 	SDL_HWACCEL     = $00000100;
   157     SDL_HWACCEL     = $00000100;
   158 	SDL_SRCCOLORKEY = $00001000;
   158     SDL_SRCCOLORKEY = $00001000;
   159 	SDL_RLEACCEL    = $00004000;
   159     SDL_RLEACCEL    = $00004000;
   160 	SDL_NOFRAME     = $00000020;
   160     SDL_NOFRAME     = $00000020;
   161 	SDL_OPENGL      = $00000002;
   161     SDL_OPENGL      = $00000002;
   162 	SDL_RESIZABLE   = $00000010;
   162     SDL_RESIZABLE   = $00000010;
   163 {$ENDIF}
   163 {$ENDIF}
   164 
   164 
   165 
   165 
   166 {$IFDEF ENDIAN_LITTLE}
   166 {$IFDEF ENDIAN_LITTLE}
   167 	RMask = $000000FF;
   167     RMask = $000000FF;
   168 	GMask = $0000FF00;
   168     GMask = $0000FF00;
   169 	BMask = $00FF0000;
   169     BMask = $00FF0000;
   170 	AMask = $FF000000;
   170     AMask = $FF000000;
   171 {$ELSE}
   171 {$ELSE}
   172 	RMask = $FF000000;
   172     RMask = $FF000000;
   173 	GMask = $00FF0000;
   173     GMask = $00FF0000;
   174 	BMask = $0000FF00;
   174     BMask = $0000FF00;
   175 	AMask = $000000FF;
   175     AMask = $000000FF;
   176 {$ENDIF}
   176 {$ENDIF}
   177 
   177 
   178 {$IFDEF SDL13}
   178 {$IFDEF SDL13}
   179 // SDL_WindowFlags (enum)
   179 // SDL_WindowFlags (enum)
   180     SDL_WINDOW_FULLSCREEN = $00000001;         //*< fullscreen window, implies borderless */
   180     SDL_WINDOW_FULLSCREEN = $00000001;         //*< fullscreen window, implies borderless */
   188     SDL_WINDOW_INPUT_FOCUS = $00000200;        //*< window has input focus */
   188     SDL_WINDOW_INPUT_FOCUS = $00000200;        //*< window has input focus */
   189     SDL_WINDOW_MOUSE_FOCUS = $00000400;        //*< window has mouse focus */
   189     SDL_WINDOW_MOUSE_FOCUS = $00000400;        //*< window has mouse focus */
   190     SDL_WINDOW_FOREIGN = $00000800;            //*< window not created by SDL */
   190     SDL_WINDOW_FOREIGN = $00000800;            //*< window not created by SDL */
   191 {$ENDIF}
   191 {$ENDIF}
   192 
   192 
   193 	{* SDL_mixer *}
   193     {* SDL_mixer *}
   194 	MIX_MAX_VOLUME = 128;
   194     MIX_MAX_VOLUME = 128;
   195 	MIX_INIT_FLAC = $00000001;
   195     MIX_INIT_FLAC = $00000001;
   196 	MIX_INIT_MOD  = $00000002;
   196     MIX_INIT_MOD  = $00000002;
   197 	MIX_INIT_MP3  = $00000004;
   197     MIX_INIT_MP3  = $00000004;
   198 	MIX_INIT_OGG  = $00000008;
   198     MIX_INIT_OGG  = $00000008;
   199 	
   199     
   200 	{* SDL_TTF *}
   200     {* SDL_TTF *}
   201 	TTF_STYLE_NORMAL = 0;
   201     TTF_STYLE_NORMAL = 0;
   202 	TTF_STYLE_BOLD   = 1;
   202     TTF_STYLE_BOLD   = 1;
   203 	TTF_STYLE_ITALIC = 2;
   203     TTF_STYLE_ITALIC = 2;
   204 
   204 
   205 	{* SDL Joystick *}
   205     {* SDL Joystick *}
   206 	SDL_HAT_CENTERED  = $00;
   206     SDL_HAT_CENTERED  = $00;
   207 	SDL_HAT_UP        = $01;
   207     SDL_HAT_UP        = $01;
   208 	SDL_HAT_RIGHT     = $02;
   208     SDL_HAT_RIGHT     = $02;
   209 	SDL_HAT_DOWN      = $04;
   209     SDL_HAT_DOWN      = $04;
   210 	SDL_HAT_LEFT      = $08;
   210     SDL_HAT_LEFT      = $08;
   211 	SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
   211     SDL_HAT_RIGHTUP   = SDL_HAT_RIGHT or SDL_HAT_UP;
   212 	SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
   212     SDL_HAT_RIGHTDOWN = SDL_HAT_RIGHT or SDL_HAT_DOWN;
   213 	SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
   213     SDL_HAT_LEFTUP    = SDL_HAT_LEFT or SDL_HAT_UP;
   214 	SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
   214     SDL_HAT_LEFTDOWN  = SDL_HAT_LEFT or SDL_HAT_DOWN;
   215 
   215 
   216 	{* SDL_image *}
   216     {* SDL_image *}
   217 	IMG_INIT_JPG = $00000001;
   217     IMG_INIT_JPG = $00000001;
   218 	IMG_INIT_PNG = $00000002;
   218     IMG_INIT_PNG = $00000002;
   219 	IMG_INIT_TIF = $00000004;
   219     IMG_INIT_TIF = $00000004;
   220 
   220 
   221 /////////////////////////////////////////////////////////////////
   221 /////////////////////////////////////////////////////////////////
   222 ///////////////////////  TYPE DEFINITIONS ///////////////////////
   222 ///////////////////////  TYPE DEFINITIONS ///////////////////////
   223 /////////////////////////////////////////////////////////////////
   223 /////////////////////////////////////////////////////////////////
   224 
   224 
   225 type 
   225 type 
   226 	PSDL_Rect = ^TSDL_Rect;
   226     PSDL_Rect = ^TSDL_Rect;
   227 	TSDL_Rect = record
   227     TSDL_Rect = record
   228 {$IFDEF SDL13}
   228 {$IFDEF SDL13}
   229 		x, y, w, h: LongInt;
   229         x, y, w, h: LongInt;
   230 {$ELSE}
   230 {$ELSE}
   231 		x, y: SmallInt;
   231         x, y: SmallInt;
   232 		w, h: Word;
   232         w, h: Word;
   233 {$ENDIF}
   233 {$ENDIF}
   234 		end;
   234         end;
   235 
   235 
   236 	TPoint = record
   236     TPoint = record
   237 		X: LongInt;
   237         X: LongInt;
   238 		Y: LongInt;
   238         Y: LongInt;
   239 		end;
   239         end;
   240 
   240 
   241 	PSDL_PixelFormat = ^TSDL_PixelFormat;
   241     PSDL_PixelFormat = ^TSDL_PixelFormat;
   242 	TSDL_PixelFormat = record
   242     TSDL_PixelFormat = record
   243 		palette: Pointer;
   243         palette: Pointer;
   244 		BitsPerPixel : Byte;
   244         BitsPerPixel : Byte;
   245 		BytesPerPixel: Byte;
   245         BytesPerPixel: Byte;
   246 		Rloss : Byte;
   246         Rloss : Byte;
   247 		Gloss : Byte;
   247         Gloss : Byte;
   248 		Bloss : Byte;
   248         Bloss : Byte;
   249 		Aloss : Byte;
   249         Aloss : Byte;
   250 		Rshift: Byte;
   250         Rshift: Byte;
   251 		Gshift: Byte;
   251         Gshift: Byte;
   252 		Bshift: Byte;
   252         Bshift: Byte;
   253 		Ashift: Byte;
   253         Ashift: Byte;
   254 		RMask : Longword;
   254         RMask : Longword;
   255 		GMask : Longword;
   255         GMask : Longword;
   256 		BMask : Longword;
   256         BMask : Longword;
   257 		AMask : Longword;
   257         AMask : Longword;
   258 		colorkey: Longword;
   258         colorkey: Longword;
   259 		alpha : Byte;
   259         alpha : Byte;
   260 		end;
   260         end;
   261 
   261 
   262 
   262 
   263 	PSDL_Surface = ^TSDL_Surface;
   263     PSDL_Surface = ^TSDL_Surface;
   264 	TSDL_Surface = record
   264     TSDL_Surface = record
   265 		flags : Longword;
   265         flags : Longword;
   266 		format: PSDL_PixelFormat;
   266         format: PSDL_PixelFormat;
   267 		w, h  : LongInt;
   267         w, h  : LongInt;
   268 		pitch : Word;
   268         pitch : Word;
   269 		pixels: Pointer;
   269         pixels: Pointer;
   270 		offset: LongInt;
   270         offset: LongInt;
   271 		end;
   271         end;
   272 
   272 
   273 
   273 
   274 	PSDL_Color = ^TSDL_Color;
   274     PSDL_Color = ^TSDL_Color;
   275 	TSDL_Color = record
   275     TSDL_Color = record
   276 		case byte of
   276         case byte of
   277 			0: (	r: Byte;
   277             0: (    r: Byte;
   278 				g: Byte;
   278                 g: Byte;
   279 				b: Byte;
   279                 b: Byte;
   280 				unused: Byte;
   280                 unused: Byte;
   281 			   );
   281                );
   282 			1: (	value: Longword);
   282             1: (    value: Longword);
   283 		end;
   283         end;
   284 
   284 
   285 
   285 
   286 	PSDL_RWops = ^TSDL_RWops;
   286     PSDL_RWops = ^TSDL_RWops;
   287 	TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
   287     TSeek  = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl;
   288 	TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
   288     TRead  = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt;  cdecl;
   289 	TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
   289     TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl;
   290 	TClose = function( context: PSDL_RWops ): LongInt; cdecl;
   290     TClose = function( context: PSDL_RWops ): LongInt; cdecl;
   291 
   291 
   292 	TStdio = record
   292     TStdio = record
   293 		autoclose: LongInt;
   293         autoclose: LongInt;
   294 		fp: pointer;
   294         fp: pointer;
   295 		end;
   295         end;
   296 
   296 
   297 	TMem = record
   297     TMem = record
   298 		base: PByte;
   298         base: PByte;
   299 		here: PByte;
   299         here: PByte;
   300 		stop: PByte;
   300         stop: PByte;
   301 		end;
   301         end;
   302 
   302 
   303 	TUnknown = record
   303     TUnknown = record
   304 		data1: Pointer;
   304         data1: Pointer;
   305 		end;
   305         end;
   306 
   306 
   307 	TSDL_RWops = record
   307     TSDL_RWops = record
   308 		seek: TSeek;
   308         seek: TSeek;
   309 		read: TRead;
   309         read: TRead;
   310 		write: TWrite;
   310         write: TWrite;
   311 		close: TClose;
   311         close: TClose;
   312 		type_: Longword;
   312         type_: Longword;
   313 		case Byte of
   313         case Byte of
   314 			0: (stdio: TStdio);
   314             0: (stdio: TStdio);
   315 			1: (mem: TMem);
   315             1: (mem: TMem);
   316 			2: (unknown: TUnknown);
   316             2: (unknown: TUnknown);
   317 			end;
   317             end;
   318 
   318 
   319 	TSDL_KeySym = record
   319     TSDL_KeySym = record
   320 		scancode: Byte;
   320         scancode: Byte;
   321 		sym: Longword;
   321         sym: Longword;
   322 		modifier: Longword;
   322         modifier: Longword;
   323 		unicode: Word;
   323         unicode: Word;
   324 		end;
   324         end;
   325 
   325 
   326 
   326 
   327 {* SDL_Event type definition *}
   327 {* SDL_Event type definition *}
   328 
   328 
   329 {$IFDEF SDL13}
   329 {$IFDEF SDL13}
   330 	PSDL_Window = pointer;	
   330     PSDL_Window = pointer;  
   331 	PSDL_Texture = pointer;
   331     PSDL_Texture = pointer;
   332 	
   332     
   333 	TSDL_WindowEvent = record
   333     TSDL_WindowEvent = record
   334 		type_: byte;
   334         type_: byte;
   335 		gain: byte;
   335         gain: byte;
   336 		state: byte;
   336         state: byte;
   337 		windowID: LongInt;
   337         windowID: LongInt;
   338 		data1, data2: LongInt;
   338         data1, data2: LongInt;
   339 		end;
   339         end;
   340 
   340 
   341 // implement SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
   341 // implement SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
   342 {$ELSE}
   342 {$ELSE}
   343 	//these two are present in sdl1.3 but only for backward compatibility
   343     //these two are present in sdl1.3 but only for backward compatibility
   344 	TSDL_ActiveEvent = record
   344     TSDL_ActiveEvent = record
   345 		type_: byte;
   345         type_: byte;
   346 		gain: byte;
   346         gain: byte;
   347 		state: byte;
   347         state: byte;
   348 		end;
   348         end;
   349 
   349 
   350 	TSDL_ResizeEvent = record
   350     TSDL_ResizeEvent = record
   351 		type_: Byte;
   351         type_: Byte;
   352 		w, h: LongInt;
   352         w, h: LongInt;
   353 		end;
   353         end;
   354 {$ENDIF}
   354 {$ENDIF}
   355 
   355 
   356 	TSDL_MouseMotionEvent = record
   356     TSDL_MouseMotionEvent = record
   357 		type_: byte;
   357         type_: byte;
   358 		which: byte;
   358         which: byte;
   359 		state: byte;
   359         state: byte;
   360 {$IFDEF SDL13}
   360 {$IFDEF SDL13}
   361 		windowID: LongInt;
   361         windowID: LongInt;
   362 		x, y, xrel, yrel : LongInt;
   362         x, y, xrel, yrel : LongInt;
   363 		pressure, pressure_max, pressure_min,
   363         pressure, pressure_max, pressure_min,
   364 		rotation, tilt, cursor: LongInt; 
   364         rotation, tilt, cursor: LongInt; 
   365 {$ELSE}
   365 {$ELSE}
   366 		x, y, xrel, yrel : word;
   366         x, y, xrel, yrel : word;
   367 {$ENDIF}
   367 {$ENDIF}
   368 		end;
   368         end;
   369 
   369 
   370 	TSDL_KeyboardEvent = record
   370     TSDL_KeyboardEvent = record
   371 		type_: Byte;
   371         type_: Byte;
   372 {$IFDEF SDL13}
   372 {$IFDEF SDL13}
   373 		windowID: LongInt;
   373         windowID: LongInt;
   374 {$ENDIF}
   374 {$ENDIF}
   375 		which: Byte;
   375         which: Byte;
   376 		state: Byte;
   376         state: Byte;
   377 		keysym: TSDL_KeySym;
   377         keysym: TSDL_KeySym;
   378 		end;
   378         end;
   379 
   379 
   380 	TSDL_MouseButtonEvent = record
   380     TSDL_MouseButtonEvent = record
   381 		_type,
   381         _type,
   382 		which,
   382         which,
   383 		button,
   383         button,
   384 		state: byte;
   384         state: byte;
   385 {$IFDEF SDL13}
   385 {$IFDEF SDL13}
   386 		windowID: LongInt;
   386         windowID: LongInt;
   387 		x, y: LongInt;
   387         x, y: LongInt;
   388 {$ELSE}
   388 {$ELSE}
   389 		x, y: word;
   389         x, y: word;
   390 {$ENDIF}
   390 {$ENDIF}
   391 		end;
   391         end;
   392 
   392 
   393 {$IFDEF SDL13}
   393 {$IFDEF SDL13}
   394 	TSDL_MouseWheelEvent = record
   394     TSDL_MouseWheelEvent = record
   395 		type_: Byte;
   395         type_: Byte;
   396 		windowID: LongInt;
   396         windowID: LongInt;
   397 		which: Byte;
   397         which: Byte;
   398 		x, y: LongInt;
   398         x, y: LongInt;
   399 		end;
   399         end;
   400 {$ENDIF}
   400 {$ENDIF}
   401 
   401 
   402 	TSDL_JoyAxisEvent = record
   402     TSDL_JoyAxisEvent = record
   403 		type_: Byte;
   403         type_: Byte;
   404 		which: Byte;
   404         which: Byte;
   405 		axis: Byte;
   405         axis: Byte;
   406 {$IFDEF SDL13}
   406 {$IFDEF SDL13}
   407 		value: LongInt;
   407         value: LongInt;
   408 {$ELSE}
   408 {$ELSE}
   409 		value: word;
   409         value: word;
   410 {$ENDIF}	
   410 {$ENDIF}    
   411 		end;
   411         end;
   412 			
   412             
   413 	TSDL_JoyBallEvent = record
   413     TSDL_JoyBallEvent = record
   414 		type_: Byte;
   414         type_: Byte;
   415 		which: Byte;
   415         which: Byte;
   416 		ball: Byte;
   416         ball: Byte;
   417 {$IFDEF SDL13}
   417 {$IFDEF SDL13}
   418 		xrel, yrel: LongInt;
   418         xrel, yrel: LongInt;
   419 {$ELSE}
   419 {$ELSE}
   420 		xrel, yrel: word;
   420         xrel, yrel: word;
   421 {$ENDIF}
   421 {$ENDIF}
   422 		end;
   422         end;
   423 
   423 
   424 	TSDL_JoyHatEvent = record
   424     TSDL_JoyHatEvent = record
   425 		type_: Byte;
   425         type_: Byte;
   426 		which: Byte;
   426         which: Byte;
   427 		hat: Byte;
   427         hat: Byte;
   428 		value: Byte;
   428         value: Byte;
   429 		end;
   429         end;
   430 	
   430     
   431 	TSDL_JoyButtonEvent = record
   431     TSDL_JoyButtonEvent = record
   432 		type_: Byte;
   432         type_: Byte;
   433 		which: Byte;
   433         which: Byte;
   434 		button: Byte;
   434         button: Byte;
   435 		state: Byte;
   435         state: Byte;
   436 		end;
   436         end;
   437 
   437 
   438 	TSDL_QuitEvent = record
   438     TSDL_QuitEvent = record
   439                 type_: Byte;
   439                 type_: Byte;
   440                 end;
   440                 end;
   441 
   441 
   442 	PSDL_Event = ^TSDL_Event;
   442     PSDL_Event = ^TSDL_Event;
   443 	TSDL_Event = record
   443     TSDL_Event = record
   444 		case Byte of
   444         case Byte of
   445 			SDL_NOEVENT: (type_: byte);
   445             SDL_NOEVENT: (type_: byte);
   446 {$IFDEF SDL13}
   446 {$IFDEF SDL13}
   447 			SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
   447             SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
   448 			SDL_KEYDOWN,
   448             SDL_KEYDOWN,
   449 			SDL_KEYUP: (key: TSDL_KeyboardEvent);
   449             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   450 			SDL_TEXTEDITING,
   450             SDL_TEXTEDITING,
   451 			SDL_TEXTINPUT: (txtin: byte);
   451             SDL_TEXTINPUT: (txtin: byte);
   452 			SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   452             SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   453 			SDL_MOUSEBUTTONDOWN,
   453             SDL_MOUSEBUTTONDOWN,
   454 			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
   454             SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
   455 			SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
   455             SDL_MOUSEWHEEL: (wheel: TSDL_MouseWheelEvent);
   456 			SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   456             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   457 			SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   457             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   458 			SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   458             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   459 			SDL_JOYBUTTONDOWN,
   459             SDL_JOYBUTTONDOWN,
   460 			SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   460             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   461 			SDL_QUITEV: (quit: TSDL_QuitEvent);
   461             SDL_QUITEV: (quit: TSDL_QuitEvent);
   462 {$ELSE}
   462 {$ELSE}
   463 			SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
   463             SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
   464 			SDL_KEYDOWN,
   464             SDL_KEYDOWN,
   465 			SDL_KEYUP: (key: TSDL_KeyboardEvent);
   465             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   466 			SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   466             SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   467 			SDL_MOUSEBUTTONDOWN,
   467             SDL_MOUSEBUTTONDOWN,
   468 			SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
   468             SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent);
   469 			SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   469             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   470 			SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   470             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   471 			SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   471             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   472 			SDL_JOYBUTTONDOWN,
   472             SDL_JOYBUTTONDOWN,
   473 			SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   473             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   474 			SDL_QUITEV: (quit: TSDL_QuitEvent);
   474             SDL_QUITEV: (quit: TSDL_QuitEvent);
   475 			//SDL_SYSWMEVENT,SDL_EVENT_RESERVEDA,SDL_EVENT_RESERVEDB
   475             //SDL_SYSWMEVENT,SDL_EVENT_RESERVEDA,SDL_EVENT_RESERVEDB
   476 			//SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
   476             //SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent);
   477 {$ENDIF}
   477 {$ENDIF}
   478 		end;
   478         end;
   479 
   479 
   480 	PByteArray = ^TByteArray;
   480     PByteArray = ^TByteArray;
   481 	TByteArray = array[0..65535] of Byte;
   481     TByteArray = array[0..65535] of Byte;
   482 	PLongWordArray = ^TLongWordArray;
   482     PLongWordArray = ^TLongWordArray;
   483 	TLongWordArray = array[0..16383] of LongWord;
   483     TLongWordArray = array[0..16383] of LongWord;
   484 
   484 
   485 	PSDL_Thread = Pointer;
   485     PSDL_Thread = Pointer;
   486 	PSDL_mutex = Pointer;
   486     PSDL_mutex = Pointer;
   487 
   487 
   488 	TSDL_GLattr = (
   488     TSDL_GLattr = (
   489 		SDL_GL_RED_SIZE,
   489         SDL_GL_RED_SIZE,
   490 		SDL_GL_GREEN_SIZE,
   490         SDL_GL_GREEN_SIZE,
   491 		SDL_GL_BLUE_SIZE,
   491         SDL_GL_BLUE_SIZE,
   492 		SDL_GL_ALPHA_SIZE,
   492         SDL_GL_ALPHA_SIZE,
   493 		SDL_GL_BUFFER_SIZE,
   493         SDL_GL_BUFFER_SIZE,
   494 		SDL_GL_DOUBLEBUFFER,
   494         SDL_GL_DOUBLEBUFFER,
   495 		SDL_GL_DEPTH_SIZE,
   495         SDL_GL_DEPTH_SIZE,
   496 		SDL_GL_STENCIL_SIZE,
   496         SDL_GL_STENCIL_SIZE,
   497 		SDL_GL_ACCUM_RED_SIZE,
   497         SDL_GL_ACCUM_RED_SIZE,
   498 		SDL_GL_ACCUM_GREEN_SIZE,
   498         SDL_GL_ACCUM_GREEN_SIZE,
   499 		SDL_GL_ACCUM_BLUE_SIZE,
   499         SDL_GL_ACCUM_BLUE_SIZE,
   500 		SDL_GL_ACCUM_ALPHA_SIZE,
   500         SDL_GL_ACCUM_ALPHA_SIZE,
   501 		SDL_GL_STEREO,
   501         SDL_GL_STEREO,
   502 		SDL_GL_MULTISAMPLEBUFFERS,
   502         SDL_GL_MULTISAMPLEBUFFERS,
   503 		SDL_GL_MULTISAMPLESAMPLES,
   503         SDL_GL_MULTISAMPLESAMPLES,
   504 		SDL_GL_ACCELERATED_VISUAL,
   504         SDL_GL_ACCELERATED_VISUAL,
   505 {$IFDEF SDL13}
   505 {$IFDEF SDL13}
   506 		SDL_GL_RETAINED_BACKING,
   506         SDL_GL_RETAINED_BACKING,
   507 		SDL_GL_CONTEXT_MAJOR_VERSION,
   507         SDL_GL_CONTEXT_MAJOR_VERSION,
   508 		SDL_GL_CONTEXT_MINOR_VERSION
   508         SDL_GL_CONTEXT_MINOR_VERSION
   509 {$ELSE}
   509 {$ELSE}
   510 		SDL_GL_SWAP_CONTROL
   510         SDL_GL_SWAP_CONTROL
   511 {$ENDIF}
   511 {$ENDIF}
   512 		);
   512         );
   513 
   513 
   514 {$IFDEF SDL13}
   514 {$IFDEF SDL13}
   515 	TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
   515     TSDL_ArrayByteOrder = (  // array component order, low byte -> high byte 
   516 		SDL_ARRAYORDER_NONE,
   516         SDL_ARRAYORDER_NONE,
   517 		SDL_ARRAYORDER_RGB,
   517         SDL_ARRAYORDER_RGB,
   518 		SDL_ARRAYORDER_RGBA,
   518         SDL_ARRAYORDER_RGBA,
   519 		SDL_ARRAYORDER_ARGB,
   519         SDL_ARRAYORDER_ARGB,
   520 		SDL_ARRAYORDER_BGR,
   520         SDL_ARRAYORDER_BGR,
   521 		SDL_ARRAYORDER_BGRA,
   521         SDL_ARRAYORDER_BGRA,
   522 		SDL_ARRAYORDER_ABGR
   522         SDL_ARRAYORDER_ABGR
   523 		);
   523         );
   524 {$ENDIF}
   524 {$ENDIF}
   525 
   525 
   526 // Joystick/Controller support
   526 // Joystick/Controller support
   527 	PSDL_Joystick = ^TSDL_Joystick;
   527     PSDL_Joystick = ^TSDL_Joystick;
   528 	TSDL_Joystick = record
   528     TSDL_Joystick = record
   529 			end;
   529             end;
   530 
   530 
   531 	{* SDL_TTF *}
   531     {* SDL_TTF *}
   532 	PTTF_Font = ^TTTF_font;
   532     PTTF_Font = ^TTTF_font;
   533 	TTTF_Font = record
   533     TTTF_Font = record
   534 		    end;
   534             end;
   535 
   535 
   536 	{* SDL_mixer *}
   536     {* SDL_mixer *}
   537 	PMixChunk = ^TMixChunk;
   537     PMixChunk = ^TMixChunk;
   538 	TMixChunk = record
   538     TMixChunk = record
   539 		allocated: Longword;
   539         allocated: Longword;
   540 		abuf     : PByte;
   540         abuf     : PByte;
   541 		alen     : Longword;
   541         alen     : Longword;
   542 		volume   : PByte;
   542         volume   : PByte;
   543 		end;
   543         end;
   544 	TMusic = (MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3);
   544     TMusic = (MUS_CMD, MUS_WAV, MUS_MOD, MUS_MID, MUS_OGG, MUS_MP3);
   545 	TMix_Fading = (MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN);
   545     TMix_Fading = (MIX_NO_FADING, MIX_FADING_OUT, MIX_FADING_IN);
   546 
   546 
   547 	TMidiSong = record
   547     TMidiSong = record
   548                samples : LongInt;
   548                samples : LongInt;
   549                events  : pointer;
   549                events  : pointer;
   550                end;
   550                end;
   551 
   551 
   552 	TMusicUnion = record
   552     TMusicUnion = record
   553 		case Byte of
   553         case Byte of
   554 		     0: ( midi : TMidiSong );
   554              0: ( midi : TMidiSong );
   555 		     1: ( ogg  : pointer);
   555              1: ( ogg  : pointer);
   556 		     end;
   556              end;
   557 
   557 
   558 	PMixMusic = ^TMixMusic;
   558     PMixMusic = ^TMixMusic;
   559 	TMixMusic = record
   559     TMixMusic = record
   560                  end;
   560                  end;
   561 
   561 
   562 	{* SDL_net *}
   562     {* SDL_net *}
   563 	TIPAddress = record
   563     TIPAddress = record
   564                   host: Longword;
   564                   host: Longword;
   565                   port: Word;
   565                   port: Word;
   566                   end;
   566                   end;
   567 
   567 
   568 	PTCPSocket = ^TTCPSocket;
   568     PTCPSocket = ^TTCPSocket;
   569 	TTCPSocket = record
   569     TTCPSocket = record
   570                   ready: LongInt;
   570                   ready: LongInt;
   571                   channel: LongInt;
   571                   channel: LongInt;
   572                   remoteAddress: TIPaddress;
   572                   remoteAddress: TIPaddress;
   573                   localAddress: TIPaddress;
   573                   localAddress: TIPaddress;
   574                   sflag: LongInt;
   574                   sflag: LongInt;
   575                   end;
   575                   end;
   576 	PSDLNet_SocketSet = ^TSDLNet_SocketSet;
   576     PSDLNet_SocketSet = ^TSDLNet_SocketSet;
   577 	TSDLNet_SocketSet = record
   577     TSDLNet_SocketSet = record
   578                          numsockets,
   578                          numsockets,
   579                          maxsockets: LongInt;
   579                          maxsockets: LongInt;
   580                          sockets: PTCPSocket;
   580                          sockets: PTCPSocket;
   581                          end;
   581                          end;
   582 
   582 
   625 
   625 
   626 function  SDL_RWFromFile(filename, mode: PChar): PSDL_RWops; cdecl; external SDLLibName;
   626 function  SDL_RWFromFile(filename, mode: PChar): PSDL_RWops; cdecl; external SDLLibName;
   627 function  SDL_SaveBMP_RW(surface: PSDL_Surface; dst: PSDL_RWops; freedst: LongInt): LongInt; cdecl; external SDLLibName;
   627 function  SDL_SaveBMP_RW(surface: PSDL_Surface; dst: PSDL_RWops; freedst: LongInt): LongInt; cdecl; external SDLLibName;
   628 
   628 
   629 {$IFDEF SDL13}
   629 {$IFDEF SDL13}
   630 function  SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName; 	 
   630 function  SDL_CreateWindow(title: PChar; x,y,w,h, flags: LongInt): PSDL_Window; cdecl; external SDLLibName;      
   631 function  SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): LongInt; cdecl; external SDLLibName; 	 
   631 function  SDL_CreateRenderer(window: PSDL_Window; index, flags: LongInt): LongInt; cdecl; external SDLLibName;   
   632 function  SDL_SetRenderDrawColor(r,g,b,a: byte): LongInt; cdecl; external SDLLibName;
   632 function  SDL_SetRenderDrawColor(r,g,b,a: byte): LongInt; cdecl; external SDLLibName;
   633 
   633 
   634 function  SDL_RenderFill(rect: PSDL_Rect): LongInt;
   634 function  SDL_RenderFill(rect: PSDL_Rect): LongInt;
   635 function  SDL_RenderFillRect(rect: PSDL_Rect): LongInt; cdecl; external SDLLibName;
   635 function  SDL_RenderFillRect(rect: PSDL_Rect): LongInt; cdecl; external SDLLibName;
   636 function  SDL_RenderClear: LongInt; cdecl; external SDLLibName;
   636 function  SDL_RenderClear: LongInt; cdecl; external SDLLibName;
   756 function  SDLNet_Read32(buf: pointer): LongWord;
   756 function  SDLNet_Read32(buf: pointer): LongWord;
   757 implementation
   757 implementation
   758 
   758 
   759 function SDL_MustLock(Surface: PSDL_Surface): Boolean;
   759 function SDL_MustLock(Surface: PSDL_Surface): Boolean;
   760 begin
   760 begin
   761 	SDL_MustLock:= ( surface^.offset <> 0 ) or (( surface^.flags and (SDL_HWSURFACE or SDL_ASYNCBLIT or SDL_RLEACCEL)) <> 0)
   761     SDL_MustLock:= ( surface^.offset <> 0 ) or (( surface^.flags and (SDL_HWSURFACE or SDL_ASYNCBLIT or SDL_RLEACCEL)) <> 0)
   762 end;
   762 end;
   763 
   763 
   764 procedure SDLNet_Write16(value: Word; buf: pointer);
   764 procedure SDLNet_Write16(value: Word; buf: pointer);
   765 begin
   765 begin
   766 	PByteArray(buf)^[1]:= value;
   766     PByteArray(buf)^[1]:= value;
   767 	PByteArray(buf)^[0]:= value shr 8
   767     PByteArray(buf)^[0]:= value shr 8
   768 end;
   768 end;
   769 
   769 
   770 procedure SDLNet_Write32(value: LongWord; buf: pointer);
   770 procedure SDLNet_Write32(value: LongWord; buf: pointer);
   771 begin
   771 begin
   772 	PByteArray(buf)^[3]:= value;
   772     PByteArray(buf)^[3]:= value;
   773 	PByteArray(buf)^[2]:= value shr  8;
   773     PByteArray(buf)^[2]:= value shr  8;
   774 	PByteArray(buf)^[1]:= value shr 16;
   774     PByteArray(buf)^[1]:= value shr 16;
   775 	PByteArray(buf)^[0]:= value shr 24
   775     PByteArray(buf)^[0]:= value shr 24
   776 end;
   776 end;
   777 
   777 
   778 function SDLNet_Read16(buf: pointer): Word;
   778 function SDLNet_Read16(buf: pointer): Word;
   779 begin
   779 begin
   780 	SDLNet_Read16:= PByteArray(buf)^[1] or
   780     SDLNet_Read16:= PByteArray(buf)^[1] or
   781                  (PByteArray(buf)^[0] shl 8)
   781                  (PByteArray(buf)^[0] shl 8)
   782 end;
   782 end;
   783 
   783 
   784 function SDLNet_Read32(buf: pointer): LongWord;
   784 function SDLNet_Read32(buf: pointer): LongWord;
   785 begin
   785 begin
   786 	SDLNet_Read32:=  PByteArray(buf)^[3] or
   786     SDLNet_Read32:=  PByteArray(buf)^[3] or
   787                   (PByteArray(buf)^[2] shl  8) or
   787                   (PByteArray(buf)^[2] shl  8) or
   788                   (PByteArray(buf)^[1] shl 16) or
   788                   (PByteArray(buf)^[1] shl 16) or
   789                   (PByteArray(buf)^[0] shl 24)
   789                   (PByteArray(buf)^[0] shl 24)
   790 end;
   790 end;
   791 
   791 
   792 {$IFDEF SDL13}
   792 {$IFDEF SDL13}
   793 function SDL_RenderFill(rect: PSDL_Rect): LongInt;
   793 function SDL_RenderFill(rect: PSDL_Rect): LongInt;
   794 var res: LongInt;
   794 var res: LongInt;
   795 begin
   795 begin
   796 	if (rect <> nil) then res:= SDL_RenderFillRect(rect)
   796     if (rect <> nil) then res:= SDL_RenderFillRect(rect)
   797 	else res:= SDL_RenderClear();
   797     else res:= SDL_RenderClear();
   798 	exit(res);
   798     exit(res);
   799 end;
   799 end;
   800 {$ENDIF}
   800 {$ENDIF}
   801 
   801 
   802 end.
   802 end.
   803 
   803