diff -r 66fcb4d62a53 -r d62b1f224982 hedgewars/SDLh.pas --- a/hedgewars/SDLh.pas Thu Sep 10 15:35:34 2009 +0000 +++ b/hedgewars/SDLh.pas Thu Sep 10 18:50:53 2009 +0000 @@ -48,197 +48,211 @@ (* SDL *) const {$IFDEF WIN32} - SDLLibName = 'SDL.dll'; - {$ENDIF} - {$IFDEF UNIX} - {$IFDEF DARWIN} - SDLLibName = 'SDL'; - {$ELSE} - SDLLibName = 'libSDL.so'; - {$ENDIF} - {$ENDIF} - SDL_SWSURFACE = $00000000; - SDL_HWSURFACE = $00000001; - SDL_SRCALPHA = $00010000; - SDL_INIT_VIDEO = $00000020; - SDL_INIT_AUDIO = $00000010; + SDLLibName = 'SDL.dll'; + {$ENDIF} + {$IFDEF UNIX} + {$IFDEF DARWIN} + SDLLibName = 'SDL'; + {$ELSE} + SDLLibName = 'libSDL.so'; + {$ENDIF} + {$ENDIF} + SDL_SWSURFACE = $00000000; + SDL_HWSURFACE = $00000001; + SDL_SRCALPHA = $00010000; + SDL_INIT_VIDEO = $00000020; + SDL_INIT_AUDIO = $00000010; {$IFDEF SDL13} - SDL_ASYNCBLIT = $08000000; - SDL_ANYFORMAT = $10000000; - SDL_HWPALETTE = $00200000; - SDL_DOUBLEBUF = $00400000; - SDL_FULLSCREEN = $00800000; - SDL_HWACCEL = $08000000; - SDL_SRCCOLORKEY = $00020000; - SDL_RLEACCEL = $08000000; - SDL_NOFRAME = $02000000; - SDL_OPENGL = $04000000; - SDL_RESIZABLE = $01000000; + SDL_ASYNCBLIT = $08000000; + SDL_ANYFORMAT = $10000000; + SDL_HWPALETTE = $00200000; + SDL_DOUBLEBUF = $00400000; + SDL_FULLSCREEN = $00800000; + SDL_HWACCEL = $08000000; + SDL_SRCCOLORKEY = $00020000; + SDL_RLEACCEL = $08000000; + SDL_NOFRAME = $02000000; + SDL_OPENGL = $04000000; + SDL_RESIZABLE = $01000000; {$ELSE} - SDL_ASYNCBLIT = $00000004; - SDL_ANYFORMAT = $00100000; - SDL_HWPALETTE = $20000000; - SDL_DOUBLEBUF = $40000000; - SDL_FULLSCREEN = $80000000; - SDL_HWACCEL = $00000100; - SDL_SRCCOLORKEY = $00001000; - SDL_RLEACCEL = $00004000; - SDL_NOFRAME = $00000020; - SDL_OPENGL = $00000002; - SDL_RESIZABLE = $00000010; + SDL_ASYNCBLIT = $00000004; + SDL_ANYFORMAT = $00100000; + SDL_HWPALETTE = $20000000; + SDL_DOUBLEBUF = $40000000; + SDL_FULLSCREEN = $80000000; + SDL_HWACCEL = $00000100; + SDL_SRCCOLORKEY = $00001000; + SDL_RLEACCEL = $00004000; + SDL_NOFRAME = $00000020; + SDL_OPENGL = $00000002; + SDL_RESIZABLE = $00000010; {$ENDIF} - SDL_NOEVENT = 0; - SDL_ACTIVEEVENT = 1; - SDL_KEYDOWN = 2; - SDL_KEYUP = 3; - SDL_QUITEV = 12; - SDL_VIDEORESIZE = 16; + SDL_NOEVENT = 0; + SDL_ACTIVEEVENT = 1; + SDL_KEYDOWN = 2; + SDL_KEYUP = 3; + SDL_MOUSEBUTTONDOWN = 5; + SDL_MOUSEBUTTONUP = 6; + SDL_QUITEV = 12; + SDL_VIDEORESIZE = 16; {$IFDEF SDL13} - SDL_MOUSEMOTION = 5; + SDL_MOUSEMOTION = 5; {$ENDIF} - SDL_APPINPUTFOCUS = 2; + SDL_APPINPUTFOCUS = 2; + SDL_BUTTON_WHEELDUP = 4; + SDL_BUTTON_WHEELDOWN = 5; - RMask = $000000FF; - GMask = $0000FF00; - BMask = $00FF0000; - AMask = $FF000000; + RMask = $000000FF; + GMask = $0000FF00; + BMask = $00FF0000; + AMask = $FF000000; type PSDL_Rect = ^TSDL_Rect; - TSDL_Rect = record - {$IFDEF SDL13} - x, y, w, h: LongInt; - {$ELSE} - x, y: SmallInt; - w, h: Word; - {$ENDIF} - end; + TSDL_Rect = record + {$IFDEF SDL13} + x, y, w, h: LongInt; + {$ELSE} + x, y: SmallInt; + w, h: Word; + {$ENDIF} + end; - TPoint = record - X: LongInt; - Y: LongInt; - end; + TPoint = record + X: LongInt; + Y: LongInt; + end; - PSDL_PixelFormat = ^TSDL_PixelFormat; - TSDL_PixelFormat = record - palette: Pointer; - BitsPerPixel : Byte; - BytesPerPixel: Byte; - Rloss : Byte; - Gloss : Byte; - Bloss : Byte; - Aloss : Byte; - Rshift: Byte; - Gshift: Byte; - Bshift: Byte; - Ashift: Byte; - RMask : Longword; - GMask : Longword; - BMask : Longword; - AMask : Longword; - colorkey: Longword; - alpha : Byte; - end; + PSDL_PixelFormat = ^TSDL_PixelFormat; + TSDL_PixelFormat = record + palette: Pointer; + BitsPerPixel : Byte; + BytesPerPixel: Byte; + Rloss : Byte; + Gloss : Byte; + Bloss : Byte; + Aloss : Byte; + Rshift: Byte; + Gshift: Byte; + Bshift: Byte; + Ashift: Byte; + RMask : Longword; + GMask : Longword; + BMask : Longword; + AMask : Longword; + colorkey: Longword; + alpha : Byte; + end; - PSDL_Surface = ^TSDL_Surface; - TSDL_Surface = record - flags : Longword; - format: PSDL_PixelFormat; - w, h : LongInt; - pitch : Word; - pixels: Pointer; - offset: LongInt; - end; + PSDL_Surface = ^TSDL_Surface; + TSDL_Surface = record + flags : Longword; + format: PSDL_PixelFormat; + w, h : LongInt; + pitch : Word; + pixels: Pointer; + offset: LongInt; + end; - PSDL_Color = ^TSDL_Color; - TSDL_Color = record - case byte of - 0: (r: Byte; - g: Byte; - b: Byte; - unused: Byte; - ); - 1: (value: Longword); - end; + PSDL_Color = ^TSDL_Color; + TSDL_Color = record + case byte of + 0: (r: Byte; + g: Byte; + b: Byte; + unused: Byte; + ); + 1: (value: Longword); + end; - PSDL_RWops = ^TSDL_RWops; - TSeek = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl; - TRead = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt; cdecl; - TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl; - TClose = function( context: PSDL_RWops ): LongInt; cdecl; + PSDL_RWops = ^TSDL_RWops; + TSeek = function( context: PSDL_RWops; offset: LongInt; whence: LongInt ): LongInt; cdecl; + TRead = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; maxnum : LongInt ): LongInt; cdecl; + TWrite = function( context: PSDL_RWops; Ptr: Pointer; size: LongInt; num: LongInt ): LongInt; cdecl; + TClose = function( context: PSDL_RWops ): LongInt; cdecl; - TStdio = record - autoclose: LongInt; - fp: pointer; - end; + TStdio = record + autoclose: LongInt; + fp: pointer; + end; + + TMem = record + base: PByte; + here: PByte; + stop: PByte; + end; - TMem = record - base: PByte; - here: PByte; - stop: PByte; - end; - - TUnknown = record - data1: Pointer; - end; + TUnknown = record + data1: Pointer; + end; - TSDL_RWops = record - seek: TSeek; - read: TRead; - write: TWrite; - close: TClose; - type_: Longword; - case Byte of - 0: (stdio: TStdio); - 1: (mem: TMem); - 2: (unknown: TUnknown); - end; + TSDL_RWops = record + seek: TSeek; + read: TRead; + write: TWrite; + close: TClose; + type_: Longword; + case Byte of + 0: (stdio: TStdio); + 1: (mem: TMem); + 2: (unknown: TUnknown); + end; + + TSDL_KeySym = record + scancode: Byte; + sym: Longword; + modifier: Longword; + unicode: Word; + end; - TSDL_KeySym = record - scancode: Byte; - sym: Longword; - modifier: Longword; - unicode: Word; - end; + TSDL_ActiveEvent = record + type_: byte; + gain: byte; + state: byte; + end; - TSDL_ActiveEvent = record - type_: byte; - gain: byte; - state: byte; - end; + TSDL_KeyboardEvent = record + type_: Byte; + which: Byte; + state: Byte; + keysym: TSDL_KeySym; + end; - TSDL_KeyboardEvent = record - type_: Byte; - which: Byte; - state: Byte; - keysym: TSDL_KeySym; - end; + TSDL_MouseButtonEvent = record + _type, + which, + button, + state: byte; + x, y: word; + end; - TSDL_GLattr = ( SDL_GL_RED_SIZE, - SDL_GL_GREEN_SIZE, - SDL_GL_BLUE_SIZE, - SDL_GL_ALPHA_SIZE, - SDL_GL_BUFFER_SIZE, - SDL_GL_DOUBLEBUFFER, - SDL_GL_DEPTH_SIZE, - SDL_GL_STENCIL_SIZE, - SDL_GL_ACCUM_RED_SIZE, - SDL_GL_ACCUM_GREEN_SIZE, - SDL_GL_ACCUM_BLUE_SIZE, - SDL_GL_ACCUM_ALPHA_SIZE, - SDL_GL_STEREO, - SDL_GL_MULTISAMPLEBUFFERS, - SDL_GL_MULTISAMPLESAMPLES, - SDL_GL_ACCELERATED_VISUAL, - SDL_GL_RETAINED_BACKING, - SDL_GL_CONTEXT_MAJOR_VERSION, - SDL_GL_CONTEXT_MINOR_VERSION ); + TSDL_GLattr = ( + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION + ); {$IFDEF SDL13} TSDL_MouseMotionEvent = record @@ -268,6 +282,8 @@ SDL_KEYDOWN, SDL_KEYUP: (key: TSDL_KeyboardEvent); SDL_QUITEV: (quit: TSDL_QuitEvent); SDL_VIDEORESIZE: (resize: TSDL_ResizeEvent); + SDL_MOUSEBUTTONDOWN, + SDL_MOUSEBUTTONUP: (button: TSDL_MouseButtonEvent); {$IFDEF SDL13} SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent); {$ENDIF}