posix: add feature test macro _GNU_SOURCE for exp10(3) and exp10f(3)
[vala-gnome.git] / vapi / sdl.vapi
blobd510c7db77b37248929fd36bcba9671899e45c58
1 [CCode (cprefix="SDL_", cheader_filename="SDL.h")]
2 namespace SDL {
3         ///
4         /// Initialization
5         ///
6         [Flags, CCode (cname="int", cprefix="SDL_INIT_", has_type_id = false)]
7         public enum InitFlag {
8                 TIMER, AUDIO, VIDEO, CDROM, JOYSTICK,
9                 NOPARACHUTE, EVENTTHREAD, EVERYTHING
10         }// InitFlag
12         [CCode (cname="SDL_Init")]
13         public static int init(uint32 flags = SDL.InitFlag.EVERYTHING);
15         [CCode (cname="SDL_InitSubSystem")]
16         public static int init_subsystem(uint32 flags);
18         [CCode (cname="SDL_WasInit")]
19         public static uint32 get_initialized(uint32 flags);
21         [CCode (cname="SDL_Quit")]
22         public static void quit();
24         [CCode (cname="SDL_QuitSubSystem")]
25         public static void quit_subsystem(uint32 flags);
27         [CCode (type_id="SDL_version", cheader_filename="SDL_version.h", cname="SDL_version")]
28         public class Version {
29                 public uchar major;
30                 public uchar minor;
31                 public uchar patch;
33                 [CCode (cheader_filename="SDL_version.h", cname="SDL_Linked_Version")]
34                 public static unowned Version linked();
35         }// Version
38         ///
39         /// Error
40         ///
41         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
42         public enum Error {
43                 ENOMEM, EFREAD, EFWRITE, EFSEEK,
44                 UNSUPPORTED, LASTERROR
45         }// Error
47         [CCode (cname="SDL_SetError")]
48         public static void set_error(string format, ...);
50         [CCode (cname="SDL_GetError")]
51         public static unowned string get_error();
53         [CCode (cname="SDL_ClearError")]
54         public static void clear_error();
56         [CCode (cname="SDL_Error")]
57         public static void error(Error code);
60         ///
61         /// Video
62         ///
63         [CCode (cname="int", cprefix="SDL_ALPHA_", has_type_id = false)]
64         public enum Opacity {
65                 OPAQUE, TRANSPARENT
66         }// Opacity
68         [Compact]
69         public class Video {
70                 [CCode (cname="SDL_VideoDriverName")]
71                 public static unowned string? driver_name(string namebuf, int maxlen);
73                 [CCode (cname="SDL_SetGamma")]
74                 public static int set_gamma(float red, float green, float blue);
76                 [CCode (cname="SDL_SetGammaRamp")]
77                 public static int set_gamma_ramp(uint16* red, uint16* green, uint16* blue);
79                 [CCode (cname="SDL_GetGammaRamp")]
80                 public static int get_gamma_ramp(uint16* red, uint16* green, uint16* blue);
82                 [CCode (cname="SDL_ListModes")]
83                 public static void* _list_modes(PixelFormat? format, uint32 flags);
85                 [CCode (array_length = false, array_null_terminated = true)]
86                 public static unowned SDL.Rect*[]? list_modes(SDL.PixelFormat? format, uint32 flags, out bool any) {
87                         var p = SDL.Video._list_modes (format, flags);
88                         any = ((int) p == -1);
89                         return any ? null : (SDL.Rect*[]?) p;
90                 }
91         }// Video
93         [Flags, CCode (cname="int", cprefix="SDL_", has_type_id = false)]
94         public enum SurfaceFlag {
95                 SWSURFACE, HWSURFACE, ASYNCBLIT, ANYFORMAT, HWPALETTE, DOUBLEBUF,
96                 FULLSCREEN, OPENGL, OPENGLBLIT, RESIZABLE, NOFRAME, HWACCEL,
97                 SRCCOLORKEY, RLEACCEL, SRCALPHA
98         }// SurfaceFlag
100         [CCode (cname="SDL_Surface", free_function="SDL_FreeSurface", copy_function="SDL_DisplayFormat")]
101         [Compact]
102         public class Surface {
103                 public uint32 flags;
104                 public PixelFormat? format;
105                 public int w;
106                 public int h;
107                 public uint16 pitch;
108                 public void* pixels;
109                 public int ref_count;
111                 [CCode (cname="SDL_CreateRGBSurface")]
112                 public Surface.RGB(uint32 flags, int width, int height, int depth,
113                         uint32 rmask, uint32 gmask, uint32 bmask, uint32 amask);
115                 [CCode (cname="SDL_CreateRGBSurfaceFrom")]
116                 public Surface.from_RGB(void* pixels, int width, int height, int depth,
117                         int pitch, uint32 rmask, uint32 gmask, uint32 bmask, uint32 amask);
119                 [CCode (cname="SDL_LoadBMP_RW")]
120                 public static Surface.load(RWops src, int freesrc=0);
122                 // Instance methods
123                 [CCode (cname="SDL_UpdateRects")]
124                 public void update_rects ([CCode (array_length_pos=0.9)] Rect[] rects);
126                 [CCode (cname="SDL_UpdateRect")]
127                 public void update_rect (int32 x, int32 y, uint32 w, uint32 h);
129                 [CCode (cname="SDL_Flip")]
130                 public int flip();
132                 [CCode (cname="SDL_SetColors")]
133                 public int set_colors ([CCode (array_length_pos=-1)] Color[] colors, int firstcolor = 0);
135                 [CCode (cname="SDL_SetPalette")]
136                 public int set_palette (PaletteFlags flags, [CCode (array_length_pos=-1)] Color[] colors, int firstcolor = 0);
138                 [CCode (cname="SDL_LockSurface")]
139                 public int do_lock();
141                 [CCode (cname="SDL_UnlockSurface")]
142                 public void unlock();
144                 [CCode (cname="SDL_SaveBMP_RW")]
145                 public int save(RWops dst, int freedst=0);
147                 [CCode (cname="SDL_SetColorKey")]
148                 public int set_colorkey(uint32 flag, uint32 key);
150                 [CCode (cname="SDL_SetAlpha")]
151                 public int set_alpha(uint32 flag, uchar alpha);
153                 [CCode (cname="SDL_SetClipRect")]
154                 public bool set_cliprect(Rect? rect);
156                 [CCode (cname="SDL_GetClipRect")]
157                 public void get_cliprect(out Rect rect);
159                 [CCode (cname="SDL_ConvertSurface")]
160                 public Surface? convert(PixelFormat? fmt, uint32 flags);
162                 [CCode (cname="SDL_UpperBlit")]
163                 public int blit(Rect? srcrect, Surface dst, Rect? dstrect);
165                 [CCode (cname="SDL_FillRect")]
166                 public int fill(Rect? dst, uint32 color);
167         }// Surface
169         [CCode (cname="SDL_Surface")]
170         [Compact]
171         public class Screen : Surface {
172                 [CCode (cname="SDL_GetVideoSurface")]
173                 public static unowned Screen instance();
175                 [CCode (cname="SDL_SetVideoMode")]
176                 public static unowned Screen? set_video_mode(int width, int height, int bpp, uint32 flags);
178                 [CCode (cname="SDL_VideoModeOK")]
179                 public static int check_video_mode(int width, int height, int bpp, uint32 flags);
180         }// Screen
182         [CCode (cname="SDL_PixelFormat", has_copy_function = false, has_destroy_function = false, has_type_id = false)]
183         public struct PixelFormat {
184                 public Palette? palette;
185                 public uchar BitsPerPixel;
186                 public uchar BytesPerPixel;
187                 public uchar Rloss;
188                 public uchar Gloss;
189                 public uchar Bloss;
190                 public uchar Aloss;
191                 public uchar Rshift;
192                 public uchar Gshift;
193                 public uchar Bshift;
194                 public uchar Ashift;
195                 public uint32 Rmask;
196                 public uint32 Gmask;
197                 public uint32 Bmask;
198                 public uint32 Amask;
200                 public uint32 colorkey;
201                 public uchar alpha;
203                 [CCode (cname="SDL_MapRGB")]
204                 public uint32 map_rgb(uchar r, uchar g, uchar b);
206                 [CCode (cname="SDL_MapRGBA")]
207                 public uint32 map_rgba(uchar r, uchar g, uchar b, uchar a);
209                 [CCode (cname="SDL_GetRGB", instance_pos=1.2)]
210                 public void get_rgb (uint32 pixel, ref uchar r, ref uchar g, ref uchar b);
212                 [CCode (cname="SDL_GetRGBA", instance_pos=1.2)]
213                 public void get_rgba (uint32 pixel, ref uchar r, ref uchar g, ref uchar b, ref uchar a);
214         }// PixelFormat
216         [CCode (cname="SDL_Rect", has_type_id=false)]
217         public struct Rect {
218                 public int16 x;
219                 public int16 y;
220                 public uint16 w;
221                 public uint16 h;
222         }// Rect
224         [CCode (cname="SDL_Color", has_type_id=false)]
225         [SimpleType]
226         public struct Color {
227                 public uchar r;
228                 public uchar g;
229                 public uchar b;
230                 public uchar unused;
231         }// Color
233         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
234         public enum PaletteFlags {
235                 LOGPAL, PHYSPAL
236         }// PaletteFlags
238         [CCode (cname="SDL_Palette", has_copy_function = false, has_destroy_function = false, has_type_id = false)]
239         public struct Palette {
240                 [CCode (array_length_cname="ncolors")]
241                 public Color[] colors;
242         }// Palette
244         [CCode (cname="SDL_VideoInfo")]
245         [Compact]
246         public class VideoInfo {
247                 public uint32 hw_available      ;
248                 public uint32 wm_available      ;
249                 public uint32 UnusedBits1       ;
250                 public uint32 UnusedBits2       ;
251                 public uint32 blit_hw           ;
252                 public uint32 bliw_hw_CC        ;
253                 public uint32 blit_hw_A ;
254                 public uint32 blit_sw           ;
255                 public uint32 blit_sw_CC        ;
256                 public uint32 blit_sw_A ;
257                 public uint32 blit_fill ;
258                 public uint32 UnusedBits3       ;
260                 public uint32 video_mem;
261                 public PixelFormat? vfmt;
262                 public int      current_w;
263                 public int      current_h;
265                 [CCode (cname="SDL_GetVideoInfo")]
266                 public static unowned VideoInfo get();
267         }// VideoInfo
269         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
270         public enum OverlayFormat {
271                 YV12_OVERLAY, IYUV_OVERLAY, YUY2_OVERLAY,
272                 UYVY_OVERLAY, YVYU_OVERLAY
273         }// OverlayFormat
275         [CCode (cname="SDL_Overlay", free_function="SDL_FreeYUVOverlay")]
276         [Compact]
277         public class Overlay {
278                 public uint32 format;
279                 public int w;
280                 public int h;
281                 public int planes;
282                 uint16* pitches;
283                 uchar** pixels;
285                 uint32 hw_overlay;
286                 uint32 UnusedBits;
288                 [CCode (cname="SDL_CreateYUVOverlay")]
289                 public Overlay(int width, int height, OverlayFormat format, Surface display);
291                 [CCode (cname="SDL_LockYUVOverlay")]
292                 public int do_lock();
294                 [CCode (cname="SDL_UnlockYUVOverlay")]
295                 public void unlock();
297                 [CCode (cname="SDL_DisplayYUVOverlay")]
298                 public void display(Rect dst);
299         }// Overlay
302         ///
303         /// RWops
304         ///
305         [CCode (cname="SDL_RWops", free_function="SDL_FreeRW")]
306         [Compact]
307         public class RWops {
308                 [CCode (cname="SDL_RWFromFile")]
309                 public RWops.from_file(string file, string mode);
311                 [CCode (cname="SDL_RWFromMem")]
312                 public RWops.from_mem(void* mem, int size);
313         }// RWops
316         ///
317         /// OpenGL
318         ///
319         [CCode (cname="int", cprefix="SDL_GL_", has_type_id = false)]
320         public enum GLattr {
321                 RED_SIZE, GREEN_SIZE, BLUE_SIZE, ALPHA_SIZE,
322                 BUFFER_SIZE, DOUBLEBUFFER, DEPTH_SIZE, STENCIL_SIZE,
323                 ACCUM_RED_SIZE, ACCUM_GREEN_SIZE, ACCUM_BLUE_SIZE,
324                 ACCUM_ALPHA_SIZE, STEREO, MULTISAMPLEBUFFERS,
325                 MULTISAMPLESAMPLES, ACCELERATED_VISUAL, SWAP_CONTROL
326         }// GLattr
328         [CCode (cprefix="SDL_GL_", cheader_filename="SDL.h")]
329         [Compact]
330         public class GL {
331                 [CCode (cname="SDL_GL_LoadLibrary")]
332                 public static int load_library(string path);
334                 [CCode (cname="SDL_GL_GetProcAddress")]
335                 public static void* get_proc_address(string proc);
337                 [CCode (cname="SDL_GL_SetAttribute")]
338                 public static int set_attribute(GLattr attr, int val);
340                 [CCode (cname="SDL_GL_GetAttribute")]
341                 public static int get_attribute(GLattr attr, ref int val);
343                 [CCode (cname="SDL_GL_SwapBuffers")]
344                 public static void swap_buffers();
345         }// GL
348         ///
349         /// Window manager
350         ///
351         [CCode (cname="int", cprefix="SDL_GRAB_", has_type_id = false)]
352         public enum GrabMode {
353                 QUERY, OFF, ON
354         }// GrabMode
356         [CCode (cprefix="SDL_WM_", cheader_filename="SDL.h")]
357         [Compact]
358         public class WindowManager {
359                 [CCode (cname="SDL_WM_SetCaption")]
360                 public static void set_caption(string title, string icon);
362                 [CCode (cname="SDL_WM_GetCaption")]
363                public static void get_caption(out string title, out string icon);
365                 [CCode (cname="SDL_WM_SetIcon")]
366                 public static void set_icon(Surface icon, uchar* mask);
368                 [CCode (cname="SDL_WM_IconifyWindow")]
369                 public static int iconify();
371                 [CCode (cname="SDL_WM_ToggleFullScreen")]
372                 public static int toggle_fullscreen(Surface surface);
374                 [CCode (cname="SDL_WM_GrabInput")]
375                 public static GrabMode grab_input(GrabMode mode);
376         }// WindowManager
379         ///
380         /// Events
381         ///
382         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
383         public enum EventType {
384                 NOEVENT, ACTIVEEVENT, KEYDOWN, KEYUP, MOUSEMOTION,
385                 MOUSEBUTTONDOWN, MOUSEBUTTONUP, JOYAXISMOTION,
386                 JOYBALLMOTION, JOYHATMOTION, JOYBUTTONDOWN, JOYBUTTONUP,
387                 QUIT, SYSWMEVENT, VIDEORESIZE, VIDEOEXPOSE, USEREVENT,
388                 NUMEVENTS
389         }// EventType
391         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
392         public enum EventMask {
393                 ACTIVEEVENTMASK, KEYDOWNMASK, KEYUPMASK, KEYEVENTMASK,
394                 MOUSEMOTIONMASK, MOUSEBUTTONDOWNMASK, MOUSEBUTTONUPMASK,
395                 MOUSEEVENTMASK, JOYAXISMOTIONMASK, JOYBALLMOTIONMASK,
396                 JOYHATMOTIONMASK, JOYBUTTONDOWNMASK, JOYBUTTONUPMASK,
397                 JOYEVENTMASK, VIDEORESIZEMASK, VIDEOEXPOSEMASK, QUITMASK,
398                 SYSWMEVENTMASK
399         }// EventMask
401         [CCode (cname="SDL_MouseButtonEvent", has_type_id=false)]
402         public struct MouseButtonEvent {
403                 public uchar type;
404                 public uchar which;
405                 public uchar button;
406                 public uchar state;
407                 public uint16 x;
408                 public uint16 y;
409         }// MouseButtonEvent
411         [CCode (cheader_filename="SDL_active.h", cname="int", cprefix="SDL_APP", has_type_id = false)]
412         public enum ActiveState {
413                 MOUSEFOCUS,
414                 INPUTFOCUS,
415                 ACTIVE
416         }// ActiveState
418         [CCode (cname="SDL_ActiveEvent", has_type_id=false)]
419         public struct ActiveEvent {
420                 public uchar type;
421                 public uchar gain;
422                 public uchar state;
423         }// ActiveEvent
425         [CCode (cname="SDL_KeyboardEvent", has_type_id=false)]
426         public struct KeyboardEvent {
427                 public uchar type;
428                 public uchar which;
429                 public uchar state;
430                 public Key keysym;
431         }// KeyboardEvent
433         [CCode (cname="SDL_MouseMotionEvent", has_type_id=false)]
434         public struct MouseMotionEvent {
435                 public uchar type;
436                 public uchar which;
437                 public uchar state;
438                 public uint16 x;
439                 public uint16 y;
440                 public int16 xrel;
441                 public int16 yrel;
442         }// MouseMotionEvent
444         [CCode (cname="SDL_JoyAxisEvent", has_type_id=false)]
445         public struct JoyAxisEvent {
446                 public uchar type;
447                 public uchar which;
448                 public uchar axis;
449                 public uint16 @value;
450         }// JoyAxisEvent
452         [CCode (cname="SDL_JoyBallEvent", has_type_id=false)]
453         public struct JoyBallEvent {
454                 public uchar type;
455                 public uchar which;
456                 public uchar ball;
457                 public int16 xrel;
458                 public int16 yrel;
459         }// JoyBallEvent
461         [CCode (cname="SDL_JoyHatEvent", has_type_id=false)]
462         public struct JoyHatEvent {
463                 public uchar type;
464                 public uchar which;
465                 public uchar hat;
466                 public uchar @value;
467         }// JoyHatEvent
469         [CCode (cname="SDL_JoyButtonEvent", has_type_id=false)]
470         public struct JoyButtonEvent {
471                 public uchar type;
472                 public uchar which;
473                 public uchar button;
474                 public uchar state;
475         }// JoyButtonEvent
477         [CCode (cname="SDL_ResizeEvent", has_type_id=false)]
478         public struct ResizeEvent {
479                 public uchar type;
480                 public int w;
481                 public int h;
482         }// ResizeEvent
484         [CCode (cname="SDL_ExposeEvent", has_type_id=false)]
485         public struct ExposeEvent {
486                 public uchar type;
487         }// ExposeEvent
489         [CCode (cname="SDL_QuitEvent", has_type_id=false)]
490         public struct QuitEvent {
491                 public uchar type;
492         }// QuitEvent
494         [CCode (cname="SDL_UserEvent", has_type_id=false)]
495         public struct UserEvent {
496                 public uchar type;
497                 public int code;
498                 public void* data1;
499                 public void* data2;
500         }// UserEvent
502         [CCode (cname="SDL_SysWMEvent", has_type_id=false)]
503         public struct SysWMEvent {
504                 public uchar type;
505                 public weak SysWMmsg msg;
506         }// WMEvent
508         [CCode (cname="SDL_SysWMmsg", cheader_filename="SDL_syswm.h")]
509         public class SysWMmsg {
510         }// SysWMmsg
512         [CCode (cname="SDL_Event", has_type_id=false)]
513         public struct Event {
514                 public uchar type;
515                 public ActiveEvent active;
516                 public KeyboardEvent key;
517                 public MouseMotionEvent motion;
518                 public MouseButtonEvent button;
519                 public JoyAxisEvent jaxis;
520                 public JoyBallEvent jball;
521                 public JoyHatEvent jhat;
522                 public JoyButtonEvent jbutton;
523                 public ResizeEvent resize;
524                 public ExposeEvent expose;
525                 public QuitEvent quit;
526                 public UserEvent user;
527                 public SysWMEvent syswm;
529                 [CCode (cname="SDL_PumpEvents")]
530                 public static void pump();
532                 [CCode (cname="SDL_PeepEvents")]
533                 public static void peep(Event* events, int numevents,
534                         EventAction action, EventMask mask);
536                 [CCode (cname="SDL_PollEvent")]
537                 public static int poll(out Event ev);
539                 [CCode (cname="SDL_WaitEvent")]
540                 public static int wait(out Event ev);
542                 [CCode (cname="SDL_PushEvent")]
543                 public static int push(Event ev);
545                 [CCode (cname="SDL_EventState")]
546                 public static uchar state(uchar type, EventState state);
547         }// Event
549         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
550         public enum EventAction {
551                 ADDEVENT, PEEKEVENT, GETEVENT
552         }// EventAction
554         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
555         public enum EventState {
556                 QUERY, IGNORE, DISABLE, ENABLE
557         }// EventState
560         ///
561         /// Input
562         ///
563         [CCode (cname="int", cprefix="SDL_", has_type_id = false)]
564         public enum ButtonState {
565                 RELEASED, PRESSED
566         }// ButtonState
568         [CCode (cname="SDL_keysym", has_type_id=false)]
569         public struct Key {
570                 public uchar scancode;
571                 public KeySymbol sym;
572                 public KeyModifier mod;
573                 public uint16 unicode;
575                 [CCode (cname="SDL_EnableUNICODE")]
576                 public static int enable_unicode(int enable);
578                 [CCode (cname="SDL_EnableKeyRepeat")]
579                 public static int set_repeat(int delay, int interval);
581                 [CCode (cname="SDL_GetKeyRepeat")]
582                 public static void get_repeat(ref int delay, ref int interval);
584                 [CCode (cname="SDL_GetKeyState")]
585                 public static unowned uchar[] get_keys();
587                 [CCode (cname="SDL_GetModState")]
588                 public static KeyModifier get_modifiers();
590                 [CCode (cname="SDL_SetModState")]
591                 public static void set_modifiers(KeyModifier modstate);
593                 [CCode (cname="SDL_GetKeyName")]
594                 public static unowned string get_name(KeySymbol key);
595         }// Key
597         [CCode (cname="int", cprefix="SDLK_", cheader_filename="SDL_keysym.h", has_type_id = false)]
598         public enum KeySymbol {
599                 UNKNOWN,
600                 FIRST,
601                 BACKSPACE,
602                 TAB,
603                 CLEAR,
604                 RETURN,
605                 PAUSE,
606                 ESCAPE,
607                 SPACE,
608                 EXCLAIM,
609                 QUOTEDBL,
610                 HASH,
611                 DOLLAR,
612                 AMPERSAND,
613                 QUOTE,
614                 LEFTPAREN,
615                 RIGHTPAREN,
616                 ASTERISK,
617                 PLUS,
618                 COMMA,
619                 MINUS,
620                 PERIOD,
621                 SLASH,
622                 ZERO = 48,
623                 ONE = 49,
624                 TWO = 50,
625                 THREE = 51,
626                 FOUR = 52,
627                 FIVE = 53,
628                 SIX = 54,
629                 SEVEN = 55,
630                 EIGHT = 56,
631                 NINE = 57,
632                 COLON,
633                 SEMICOLON,
634                 LESS,
635                 EQUALS,
636                 GREATER,
637                 QUESTION,
638                 AT,
639                 /*
640                    Skip uppercase letters
641                  */
642                 LEFTBRACKET,
643                 BACKSLASH,
644                 RIGHTBRACKET,
645                 CARET,
646                 UNDERSCORE,
647                 BACKQUOTE,
648                 a,
649                 b,
650                 c,
651                 d,
652                 e,
653                 f,
654                 g,
655                 h,
656                 i,
657                 j,
658                 k,
659                 l,
660                 m,
661                 n,
662                 o,
663                 p,
664                 q,
665                 r,
666                 s,
667                 t,
668                 u,
669                 v,
670                 w,
671                 x,
672                 y,
673                 z,
674                 DELETE,
675                 /* End of ASCII mapped keysyms */
677                 /* International keyboard syms */
678                 WORLD_0,                /* 0xA0 */
679                 WORLD_1,
680                 WORLD_2,
681                 WORLD_3,
682                 WORLD_4,
683                 WORLD_5,
684                 WORLD_6,
685                 WORLD_7,
686                 WORLD_8,
687                 WORLD_9,
688                 WORLD_10,
689                 WORLD_11,
690                 WORLD_12,
691                 WORLD_13,
692                 WORLD_14,
693                 WORLD_15,
694                 WORLD_16,
695                 WORLD_17,
696                 WORLD_18,
697                 WORLD_19,
698                 WORLD_20,
699                 WORLD_21,
700                 WORLD_22,
701                 WORLD_23,
702                 WORLD_24,
703                 WORLD_25,
704                 WORLD_26,
705                 WORLD_27,
706                 WORLD_28,
707                 WORLD_29,
708                 WORLD_30,
709                 WORLD_31,
710                 WORLD_32,
711                 WORLD_33,
712                 WORLD_34,
713                 WORLD_35,
714                 WORLD_36,
715                 WORLD_37,
716                 WORLD_38,
717                 WORLD_39,
718                 WORLD_40,
719                 WORLD_41,
720                 WORLD_42,
721                 WORLD_43,
722                 WORLD_44,
723                 WORLD_45,
724                 WORLD_46,
725                 WORLD_47,
726                 WORLD_48,
727                 WORLD_49,
728                 WORLD_50,
729                 WORLD_51,
730                 WORLD_52,
731                 WORLD_53,
732                 WORLD_54,
733                 WORLD_55,
734                 WORLD_56,
735                 WORLD_57,
736                 WORLD_58,
737                 WORLD_59,
738                 WORLD_60,
739                 WORLD_61,
740                 WORLD_62,
741                 WORLD_63,
742                 WORLD_64,
743                 WORLD_65,
744                 WORLD_66,
745                 WORLD_67,
746                 WORLD_68,
747                 WORLD_69,
748                 WORLD_70,
749                 WORLD_71,
750                 WORLD_72,
751                 WORLD_73,
752                 WORLD_74,
753                 WORLD_75,
754                 WORLD_76,
755                 WORLD_77,
756                 WORLD_78,
757                 WORLD_79,
758                 WORLD_80,
759                 WORLD_81,
760                 WORLD_82,
761                 WORLD_83,
762                 WORLD_84,
763                 WORLD_85,
764                 WORLD_86,
765                 WORLD_87,
766                 WORLD_88,
767                 WORLD_89,
768                 WORLD_90,
769                 WORLD_91,
770                 WORLD_92,
771                 WORLD_93,
772                 WORLD_94,
773                 WORLD_95,               /* 0xFF */
775                 /* Numeric keypad */
776                 KP0,
777                 KP1,
778                 KP2,
779                 KP3,
780                 KP4,
781                 KP5,
782                 KP6,
783                 KP7,
784                 KP8,
785                 KP9,
786                 KP_PERIOD,
787                 KP_DIVIDE,
788                 KP_MULTIPLY,
789                 KP_MINUS,
790                 KP_PLUS,
791                 KP_ENTER,
792                 KP_EQUALS,
794                 /* Arrows + Home/End pad */
795                 UP,
796                 DOWN,
797                 RIGHT,
798                 LEFT,
799                 INSERT,
800                 HOME,
801                 END,
802                 PAGEUP,
803                 PAGEDOWN,
805                 /* Function keys */
806                 F1,
807                 F2,
808                 F3,
809                 F4,
810                 F5,
811                 F6,
812                 F7,
813                 F8,
814                 F9,
815                 F10,
816                 F11,
817                 F12,
818                 F13,
819                 F14,
820                 F15,
822                 /* Key state modifier keys */
823                 NUMLOCK,
824                 CAPSLOCK,
825                 SCROLLOCK,
826                 RSHIFT,
827                 LSHIFT,
828                 RCTRL,
829                 LCTRL,
830                 RALT,
831                 LALT,
832                 RMETA,
833                 LMETA,
834                 LSUPER,         /* Left "Windows" key */
835                 RSUPER,         /* Right "Windows" key */
836                 MODE,           /* "Alt Gr" key */
837                 COMPOSE,                /* Multi-key compose key */
839                 /* Miscellaneous function keys */
840                 HELP,
841                 PRINT,
842                 SYSREQ,
843                 BREAK,
844                 MENU,
845                 POWER,          /* Power Macintosh power key */
846                 EURO,           /* Some european keyboards */
847                 UNDO,           /* Atari keyboard has Undo */
849                 /* Add any other keys here */
851                 LAST
852         }// KeySymbol
854         [CCode (cname="int", cprefix="KMOD_", cheader_filename="SDL_keysym.h", has_type_id = false)]
855         public enum KeyModifier {
856                 NONE,
857                 LSHIFT,
858                 RSHIFT,
859                 LCTRL,
860                 RCTRL,
861                 LALT,
862                 RALT,
863                 LMETA,
864                 RMETA,
865                 NUM,
866                 CAPS,
867                 MODE,
868                 RESERVED,
869                 CTRL,
870                 SHIFT,
871                 ALT,
872                 META
873         }// KeyModifier
875         [CCode (cname="int", cprefix="SDL_BUTTON_", has_type_id = false)]
876         public enum MouseButton {
877                 LEFT, MIDDLE, RIGHT, WHEELUP, WHEELDOWN
878         }// Buttons
880         [CCode (cname="SDL_Cursor", free_function="SDL_FreeCursor")]
881         [Compact]
882         public class Cursor {
883                 public Rect area;
884                 public int16 hot_x;
885                 public int16 hot_y;
886                 public uchar* data;
887                 public uchar* mask;
888                 public uchar** save;
890                 [CCode (cname="SDL_GetMouseState")]
891                 public static uchar get_state(ref int x, ref int y);
893                 [CCode (cname="SDL_GetRelativeMouseState")]
894                 public static uchar get_relative_state(ref int x, ref int y);
896                 [CCode (cname="SDL_WarpMouse")]
897                 public static void warp(uint16 x, uint16 y);
899                 [CCode (cname="SDL_CreateCursor")]
900                 public Cursor(uchar* data, uchar* mask, int w, int h,
901                         int hot_x, int hot_y);
903                 [CCode (cname="SDL_GetCursor")]
904                 public static Cursor get();
906                 [CCode (cname="SDL_SetCursor")]
907                 public static void set(Cursor cursor);
909                 [CCode (cname="SDL_ShowCursor")]
910                 public static int show(int toggle);
911         }// Cursor
913         [CCode (cname="int", cprefix="SDL_HAT_", has_type_id = false)]
914         public enum HatValue {
915                 CENTERED, UP, RIGHT, DOWN, LEFT,
916                 RIGHTUP, RIGHTDOWN, LEFTUP, LEFTDOWN
917         }// HatValue
919         [CCode (cname="SDL_Joystick", free_function="SDL_JoystickClose")]
920         [Compact]
921         public class Joystick {
922                 [CCode (cname="SDL_JoystickName")]
923                 public static unowned string get_name(int device_index);
925                 [CCode (cname="SDL_JoystickOpened")]
926                 public static int is_open(int device_index);
928                 [CCode (cname="SDL_JoystickUpdate")]
929                 public static void update_all();
931                 [CCode (cname="SDL_JoystickEventState")]
932                 public static int event_state(EventState state);
934                 [CCode (cname="SDL_NumJoysticks")]
935                 public static int count();
937                 [CCode (cname="SDL_JoystickOpen")]
938                 public Joystick(int device_index);
940                 [CCode (cname="SDL_JoystickIndex")]
941                 public int index();
943                 [CCode (cname="SDL_JoystickNumAxes")]
944                 public int num_axes();
946                 [CCode (cname="SDL_JoystickNumBalls")]
947                 public int num_balls();
949                 [CCode (cname="SDL_JoystickNumHats")]
950                 public int num_hats();
952                 [CCode (cname="SDL_JoystickNumButtons")]
953                 public int num_buttons();
955                 [CCode (cname="SDL_JoystickGetAxis")]
956                 public int16 get_axis(int axis);
958                 [CCode (cname="SDL_JoystickGetHat")]
959                 public HatValue get_hat(int hat);
961                 [CCode (cname="SDL_JoystickGetBall")]
962                 public HatValue get_ball(int ball, ref int dx, ref int dy);
964                 [CCode (cname="SDL_JoystickGetButton")]
965                 public ButtonState get_button(int button);
966         }// Joystick
969         ///
970         /// Audio
971         ///
972         [CCode (cname="int", cprefix="AUDIO_", has_type_id = false)]
973         public enum AudioFormat {
974                 U8, S8, U16LSB, S16LSB, U16MSB, S16MSB, U16, S16,
975                 U16SYS, S16SYS
976         }// AudioFormat
978         [CCode (cname="int", cprefix="SDL_AUDIO_", has_type_id = false)]
979         public enum AudioStatus {
980                 STOPPED, PLAYING, PAUSED
981         }// AudioStatus
983         [CCode (instance_pos = 0.1)]
984         public delegate void AudioCallback(uint8[] stream);
986         [CCode (cname="SDL_AudioSpec", has_type_id = false)]
987         public struct AudioSpec {
988                 public int freq;
989                 public AudioFormat format;
990                 public uchar channels;
991                 public uchar silence;
992                 public uint16 samples;
993                 public uint16 padding;
994                 public uint32 size;
995                 [CCode (delegate_target_cname = "userdata")]
996                 public unowned AudioCallback callback;
997         }// AudioSpec
999         [CCode (cname="SDL_AudioCVT")]
1000         [Compact]
1001         public class AudioConverter {
1002                 public int needed;
1003                 public AudioFormat src_format;
1004                 public AudioFormat dst_format;
1005                 public double rate_incr;
1007                 public uchar* buf;
1008                 public int len;
1009                 public int len_cvt;
1010                 public int len_mult;
1011                 public double len_ratio;
1012                 public int filter_index;
1014                 [CCode (cname="SDL_BuildAudioCVT")]
1015                 public static int build(AudioConverter cvt, AudioFormat src_format,
1016                         uchar src_channels, int src_rate, AudioFormat dst_format,
1017                         uchar dst_channels, int dst_rate);
1019                 [CCode (cname="SDL_ConvertAudio")]
1020                 public int convert();
1021         }// AudioConverter
1023         [Compact]
1024         public class Audio {
1025                 [CCode (cname="SDL_MIX_MAXVOLUME")]
1026                 public const int MIX_MAXVOLUME;
1028                 [CCode (cname="SDL_AudioDriverName")]
1029                 public static unowned string driver_name(string namebuf, int maxlen);
1031                 [CCode (cname="SDL_OpenAudio")]
1032                 public static int open(AudioSpec desired, out AudioSpec obtained);
1034                 [CCode (cname="SDL_GetAudioStatus")]
1035                 public static AudioStatus status();
1037                 [CCode (cname="SDL_PauseAudio")]
1038                 public static void pause(int pause_on);
1040                 [CCode (cname="SDL_LoadWAV_RW")]
1041                 public static unowned AudioSpec? load(RWops src, int freesrc, ref AudioSpec spec, out uint8[] audio_buf);
1043                 [CCode (cname="SDL_FreeWAV")]
1044                 public static void free(uchar* audio_buf);
1046                 [CCode (cname="SDL_MixAudio")]
1047                 public static void mix([CCode (array_length = false)] uchar[] dst, [CCode (array_length = false)] uchar[] src, uint32 len, int volume);
1049                 [CCode (cname="SDL_LockAudio")]
1050                 public static void do_lock();
1052                 [CCode (cname="SDL_UnlockAudio")]
1053                 public static void unlock();
1055                 [CCode (cname="SDL_CloseAudio")]
1056                 public static void close();
1057         }// Audio
1060         ///
1061         /// Threading
1062         ///
1063         public delegate int ThreadFunc ();
1065         [CCode (cname="SDL_Thread", ref_function="", unref_function="")]
1066         [Compact]
1067         public class Thread {
1068                 [CCode (cname="SDL_ThreadID")]
1069                 public static uint32 id();
1071                 [CCode (cname="SDL_CreateThread")]
1072                 public Thread (ThreadFunc f);
1074                 [CCode (cname="SDL_WaitThread")]
1075                 public void wait (out int status = null);
1076         }// Thread
1078         [CCode (cname="SDL_mutex", free_function="SDL_DestroyMutex")]
1079         [Compact]
1080         public class Mutex {
1081                 [CCode (cname="SDL_CreateMutex")]
1082                 public Mutex();
1084                 [CCode (cname="SDL_mutexP")]
1085                 public int do_lock();
1087                 [CCode (cname="SDL_mutexV")]
1088                 public int unlock();
1089         }// Mutex
1091         [CCode (cname="SDL_sem", free_function="SDL_DestroySemaphore")]
1092         [Compact]
1093         public class Semaphore {
1094                 [CCode (cname="SDL_CreateSemaphore")]
1095                 public Semaphore(uint32 initial_value);
1097                 [CCode (cname="SDL_SemWait")]
1098                 public int wait();
1100                 [CCode (cname="SDL_SemTryWait")]
1101                 public int try_wait();
1103                 [CCode (cname="SDL_SemWaitTimeout")]
1104                 public int wait_timeout(uint32 ms);
1106                 [CCode (cname="SDL_SemPost")]
1107                 public int post();
1109                 [CCode (cname="SDL_SemValue")]
1110                 public uint32 count();
1111         }// Semaphore
1113         [CCode (cname="SDL_cond", free_function="SDL_DestroyCond")]
1114         [Compact]
1115         public class Condition {
1116                 [CCode (cname="SDL_CreateCond")]
1117                 public Condition();
1119                 [CCode (cname="SDL_CondSignal")]
1120                 public int @signal();
1122                 [CCode (cname="SDL_CondBroadcast")]
1123                 public int broadcast();
1125                 [CCode (cname="SDL_CondWait")]
1126                 public int wait(Mutex mut);
1128                 [CCode (cname="SDL_CondWaitTimeout")]
1129                 public int wait_timeout(Mutex mut, uint32 ms);
1130         }// Condition
1133         ///
1134         /// Timers
1135         ///
1136         public delegate uint32 TimerCallback (uint32 interval);
1138         [CCode (cname="struct _SDL_TimerID", ref_function="", unref_function="")]
1139         [Compact]
1140         public class Timer {
1141                 [CCode (cname="SDL_RemoveTimer")]
1142                 public bool remove ();
1144                 [CCode (cname="SDL_GetTicks")]
1145                 public static uint32 get_ticks();
1147                 [CCode (cname="SDL_Delay")]
1148                 public static void delay(uint32 ms);
1150                 [CCode (cname="SDL_AddTimer")]
1151                 public Timer (uint32 interval, TimerCallback callback);
1152         }// Timer
1153 }// SDL