hedgewars/SDLh.pas
changeset 3349 5571592f10a8
parent 3341 3de60a5986e9
child 3354 cb5d13ff4aae
equal deleted inserted replaced
3348:5f3b423babcb 3349:5571592f10a8
    25   {$DEFINE UNIX}
    25   {$DEFINE UNIX}
    26 {$ENDIF}
    26 {$ENDIF}
    27 {$IFDEF FREEBSD}
    27 {$IFDEF FREEBSD}
    28   {$DEFINE UNIX}
    28   {$DEFINE UNIX}
    29 {$ENDIF}
    29 {$ENDIF}
       
    30 // UNIX is already defined in Darwin
    30 
    31 
    31 {$IFDEF UNIX}
    32 {$IFDEF UNIX}
    32   {$IFNDEF DARWIN}
    33   {$IFNDEF DARWIN}
    33     {$linklib c}
    34     {$linklib c}
    34   {$ENDIF}
    35   {$ENDIF}
   102     SDL_APPINPUTFOCUS    = 2;
   103     SDL_APPINPUTFOCUS    = 2;
   103     SDL_BUTTON_WHEELUP   = 4;
   104     SDL_BUTTON_WHEELUP   = 4;
   104     SDL_BUTTON_WHEELDOWN = 5;
   105     SDL_BUTTON_WHEELDOWN = 5;
   105         
   106         
   106 {*begin SDL_Event binding*}
   107 {*begin SDL_Event binding*}
       
   108 
       
   109 {$IFDEF SDL13}
       
   110     SDL_FIRSTEVENT = 0;
       
   111     SDL_QUITEV = $100;
       
   112     SDL_WINDOWEVENT = $200;
       
   113     SDL_SYSWMEVENT = $201;
       
   114     SDL_KEYDOWN = $300;
       
   115     SDL_KEYUP = $301;
       
   116     SDL_TEXTEDITING = $302;
       
   117     SDL_TEXTINPUT = $303;
       
   118     SDL_MOUSEMOTION  = $400;
       
   119     SDL_MOUSEBUTTONDOWN = $401;
       
   120     SDL_MOUSEBUTTONUP = $402;
       
   121     SDL_MOUSEWHEEL = $403;
       
   122     SDL_PROXIMITYIN = $500;
       
   123     SDL_PROXIMITYOUT = $501;
       
   124     SDL_JOYAXISMOTION = $600;
       
   125     SDL_JOYBALLMOTION = $601;
       
   126     SDL_JOYHATMOTION = $602;
       
   127     SDL_JOYBUTTONDOWN = $603;
       
   128     SDL_JOYBUTTONUP = $604;
       
   129     SDL_USEREVENT = $8000;
       
   130     SDL_LASTEVENT = $FFFF;
       
   131 {$ELSE}
   107     SDL_NOEVENT = 0;
   132     SDL_NOEVENT = 0;
       
   133     SDL_ACTIVEEVENT = 1;
   108     SDL_KEYDOWN = 2;
   134     SDL_KEYDOWN = 2;
   109     SDL_KEYUP = 3;
   135     SDL_KEYUP = 3;
   110 {$IFDEF SDL13}
       
   111         SDL_WINDOWEVENT = 1;
       
   112         SDL_TEXTINPUT = 4;
       
   113         SDL_TEXTEDITING = 5;
       
   114     SDL_MOUSEMOTION  = 6;
       
   115         SDL_MOUSEBUTTONDOWN = 7;
       
   116     SDL_MOUSEBUTTONUP   = 8;
       
   117         SDL_MOUSEWHEEL = 9;
       
   118     SDL_JOYAXISMOTION = 10;
       
   119     SDL_JOYBALLMOTION = 11;
       
   120     SDL_JOYHATMOTION = 12;
       
   121     SDL_JOYBUTTONDOWN = 13;
       
   122     SDL_JOYBUTTONUP = 14;
       
   123     SDL_QUITEV = 15;
       
   124 {$ELSE}
       
   125         SDL_ACTIVEEVENT = 1;
       
   126     SDL_MOUSEMOTION  = 4;
   136     SDL_MOUSEMOTION  = 4;
   127         SDL_MOUSEBUTTONDOWN = 5;
   137     SDL_MOUSEBUTTONDOWN = 5;
   128     SDL_MOUSEBUTTONUP   = 6;
   138     SDL_MOUSEBUTTONUP   = 6;
   129     SDL_JOYAXISMOTION = 7;
   139     SDL_JOYAXISMOTION = 7;
   130     SDL_JOYBALLMOTION = 8;
   140     SDL_JOYBALLMOTION = 8;
   131     SDL_JOYHATMOTION = 9;
   141     SDL_JOYHATMOTION = 9;
   132     SDL_JOYBUTTONDOWN = 10;
   142     SDL_JOYBUTTONDOWN = 10;
   329 {$IFDEF SDL13}
   339 {$IFDEF SDL13}
   330     PSDL_Window = pointer;  
   340     PSDL_Window = pointer;  
   331     PSDL_Texture = pointer;
   341     PSDL_Texture = pointer;
   332     
   342     
   333     TSDL_WindowEvent = record
   343     TSDL_WindowEvent = record
   334         type_: byte;
   344         type_: LongInt;
   335         gain: byte;
       
   336         state: byte;
       
   337         windowID: LongInt;
   345         windowID: LongInt;
       
   346         event: byte;
       
   347         padding1, padding2, padding3: byte;
   338         data1, data2: LongInt;
   348         data1, data2: LongInt;
   339         end;
   349         end;
   340 
   350 
   341 // implement SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
   351 // implement SDL_TextEditingEvent + SDL_TextInputEvent for sdl13
   342 {$ELSE}
   352 {$ELSE}
   343     //these two are present in sdl1.3 but only for backward compatibility
   353     // these two are present in sdl1.3 but only for backward compatibility
       
   354     // and in 1.3 type_ is LongInt, not byte
   344     TSDL_ActiveEvent = record
   355     TSDL_ActiveEvent = record
   345         type_: byte;
   356         type_: byte;
   346         gain: byte;
   357         gain: byte;
   347         state: byte;
   358         state: byte;
   348         end;
   359         end;
   352         w, h: LongInt;
   363         w, h: LongInt;
   353         end;
   364         end;
   354 {$ENDIF}
   365 {$ENDIF}
   355 
   366 
   356     TSDL_MouseMotionEvent = record
   367     TSDL_MouseMotionEvent = record
   357         type_: byte;
       
   358         which: byte;
   368         which: byte;
   359         state: byte;
   369         state: byte;
   360 {$IFDEF SDL13}
   370 {$IFDEF SDL13}
       
   371         type_: LongInt;
   361         windowID: LongInt;
   372         windowID: LongInt;
   362         x, y, xrel, yrel : LongInt;
   373         padding1, padding2: byte;
       
   374         x, y, z, xrel, yrel : LongInt;
   363         pressure, pressure_max, pressure_min,
   375         pressure, pressure_max, pressure_min,
   364         rotation, tilt, cursor: LongInt; 
   376         rotation, tilt, cursor: LongInt; 
   365 {$ELSE}
   377 {$ELSE}
       
   378         type_: byte;
   366         x, y, xrel, yrel : word;
   379         x, y, xrel, yrel : word;
   367 {$ENDIF}
   380 {$ENDIF}
   368         end;
   381         end;
   369 
   382 
   370     TSDL_KeyboardEvent = record
   383     TSDL_KeyboardEvent = record
   371         type_: Byte;
   384 {$IFDEF SDL13}
   372 {$IFDEF SDL13}
   385         type_: LongInt;
   373         windowID: LongInt;
   386         windowID: LongInt;
   374 {$ENDIF}
   387         padding1, padding2: byte;
   375         which: Byte;
   388 {$ELSE}
   376         state: Byte;
   389         type_: byte;
       
   390 {$ENDIF}
       
   391         which: byte;
       
   392         state: byte;
   377         keysym: TSDL_KeySym;
   393         keysym: TSDL_KeySym;
   378         end;
   394         end;
   379 
   395 
   380     TSDL_MouseButtonEvent = record
   396     TSDL_MouseButtonEvent = record
   381         _type,
       
   382         which,
   397         which,
   383         button,
   398         button,
   384         state: byte;
   399         state: byte;
   385 {$IFDEF SDL13}
   400 {$IFDEF SDL13}
       
   401         _type: LongInt;
   386         windowID: LongInt;
   402         windowID: LongInt;
   387         x, y: LongInt;
   403         x, y: LongInt;
   388 {$ELSE}
   404         padding1: byte;
       
   405 {$ELSE}
       
   406         _type: byteM
   389         x, y: word;
   407         x, y: word;
   390 {$ENDIF}
   408 {$ENDIF}
   391         end;
   409         end;
   392 
   410 
   393 {$IFDEF SDL13}
   411 {$IFDEF SDL13}
   394     TSDL_MouseWheelEvent = record
   412     TSDL_MouseWheelEvent = record
   395         type_: Byte;
   413         type_: LongInt;
   396         windowID: LongInt;
   414         windowID: LongInt;
   397         which: Byte;
   415         which: Byte;
   398         x, y: LongInt;
   416         x, y: LongInt;
   399         end;
   417         padding1, padding2, padding3: byte;
       
   418         end;
       
   419         
       
   420     // implement SDL_ProximityEvent
   400 {$ENDIF}
   421 {$ENDIF}
   401 
   422 
   402     TSDL_JoyAxisEvent = record
   423     TSDL_JoyAxisEvent = record
   403         type_: Byte;
   424         type_: Byte;
   404         which: Byte;
   425         which: Byte;
   409         value: word;
   430         value: word;
   410 {$ENDIF}    
   431 {$ENDIF}    
   411         end;
   432         end;
   412             
   433             
   413     TSDL_JoyBallEvent = record
   434     TSDL_JoyBallEvent = record
   414         type_: Byte;
       
   415         which: Byte;
   435         which: Byte;
   416         ball: Byte;
   436         ball: Byte;
   417 {$IFDEF SDL13}
   437 {$IFDEF SDL13}
       
   438         type_: LongInt;
   418         xrel, yrel: LongInt;
   439         xrel, yrel: LongInt;
   419 {$ELSE}
   440 {$ELSE}
       
   441         type_: Byte;
   420         xrel, yrel: word;
   442         xrel, yrel: word;
   421 {$ENDIF}
   443 {$ENDIF}
   422         end;
   444         end;
   423 
   445 
   424     TSDL_JoyHatEvent = record
   446     TSDL_JoyHatEvent = record
       
   447 {$IFDEF SDL13}
       
   448         type_: LongInt;
       
   449 {$ELSE}
   425         type_: Byte;
   450         type_: Byte;
       
   451 {$ENDIF}
   426         which: Byte;
   452         which: Byte;
   427         hat: Byte;
   453         hat: Byte;
   428         value: Byte;
   454         value: Byte;
   429         end;
   455         end;
   430     
   456     
   431     TSDL_JoyButtonEvent = record
   457     TSDL_JoyButtonEvent = record
       
   458 {$IFDEF SDL13}
       
   459         type_: LongInt;
       
   460 {$ELSE}
   432         type_: Byte;
   461         type_: Byte;
       
   462 {$ENDIF}
   433         which: Byte;
   463         which: Byte;
   434         button: Byte;
   464         button: Byte;
   435         state: Byte;
   465         state: Byte;
   436         end;
   466         end;
   437 
   467 
   438     TSDL_QuitEvent = record
   468     TSDL_QuitEvent = record
   439                 type_: Byte;
   469 {$IFDEF SDL13}
   440                 end;
   470         type_: LongInt;
       
   471 {$ELSE}
       
   472         type_: Byte;
       
   473 {$ENDIF}
       
   474         end;
   441 
   475 
   442     PSDL_Event = ^TSDL_Event;
   476     PSDL_Event = ^TSDL_Event;
   443     TSDL_Event = record
   477     TSDL_Event = record
   444         case Byte of
   478         case Byte of
   445             SDL_NOEVENT: (type_: byte);
   479 {$IFDEF SDL13}
   446 {$IFDEF SDL13}
   480             SDL_FIRSTEVENT: (type_: byte);
       
   481             SDL_QUITEV: (quit: TSDL_QuitEvent);
   447             SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
   482             SDL_WINDOWEVENT: (active: TSDL_WindowEvent);
   448             SDL_KEYDOWN,
   483             SDL_KEYDOWN,
   449             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   484             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   450             SDL_TEXTEDITING,
   485             SDL_TEXTEDITING,
   451             SDL_TEXTINPUT: (txtin: byte);
   486             SDL_TEXTINPUT: (txtin: byte);
   456             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   491             SDL_JOYAXISMOTION: (jaxis: TSDL_JoyAxisEvent);
   457             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   492             SDL_JOYHATMOTION: (jhat: TSDL_JoyHatEvent);
   458             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   493             SDL_JOYBALLMOTION: (jball: TSDL_JoyBallEvent);
   459             SDL_JOYBUTTONDOWN,
   494             SDL_JOYBUTTONDOWN,
   460             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   495             SDL_JOYBUTTONUP: (jbutton: TSDL_JoyButtonEvent);
   461             SDL_QUITEV: (quit: TSDL_QuitEvent);
   496 {$ELSE}
   462 {$ELSE}
   497             SDL_NOEVENT: (type_: byte);
   463             SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
   498             SDL_ACTIVEEVENT: (active: TSDL_ActiveEvent);
   464             SDL_KEYDOWN,
   499             SDL_KEYDOWN,
   465             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   500             SDL_KEYUP: (key: TSDL_KeyboardEvent);
   466             SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   501             SDL_MOUSEMOTION: (motion: TSDL_MouseMotionEvent);
   467             SDL_MOUSEBUTTONDOWN,
   502             SDL_MOUSEBUTTONDOWN,