Files
MementoMori/kivy/lib/sdl2.pxi
thatscringebro abd15f28b6 Ajout du GUI
2022-08-08 16:31:52 -04:00

1077 lines
42 KiB
Cython

#Copyright (c) 2010-2012, Gabriel Jacobo
#All rights reserved.
#Permission to use this file is granted under the conditions of the Ignifuga Game Engine License
#whose terms are available in the LICENSE file or at http://www.ignifuga.org/license
include "../include/config.pxi"
cdef extern from "SDL_joystick.h":
cdef struct SDL_Joystick
cdef int SDL_HAT_CENTERED = 0x00
cdef int SDL_HAT_UP = 0x01
cdef int SDL_HAT_RIGHT = 0x02
cdef int SDL_HAT_DOWN = 0x04
cdef int SDL_HAT_LEFT = 0x08
cdef extern from "SDL.h":
ctypedef unsigned char Uint8
ctypedef unsigned long Uint32
ctypedef signed long Sint32
ctypedef unsigned long long Uint64
ctypedef signed long long Sint64
ctypedef signed short Sint16
ctypedef unsigned short Uint16
ctypedef void *SDL_GLContext
ctypedef Uint32 SDL_Keycode
ctypedef Sint32 SDL_JoystickID
int SDL_WINDOWPOS_UNDEFINED
ctypedef enum:
SDL_PIXELFORMAT_BGRA8888
SDL_PIXELFORMAT_ARGB8888
SDL_PIXELFORMAT_RGBA8888
SDL_PIXELFORMAT_ABGR8888
SDL_PIXELFORMAT_RGB24
SDL_PIXELFORMAT_BGR24
ctypedef enum SDL_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
SDL_GL_CONTEXT_EGL
SDL_GL_CONTEXT_FLAGS
SDL_GL_CONTEXT_PROFILE_MASK
ctypedef enum SDL_SystemCursor:
SDL_SYSTEM_CURSOR_ARROW
SDL_SYSTEM_CURSOR_IBEAM
SDL_SYSTEM_CURSOR_WAIT
SDL_SYSTEM_CURSOR_CROSSHAIR
SDL_SYSTEM_CURSOR_WAITARROW
SDL_SYSTEM_CURSOR_SIZENWSE
SDL_SYSTEM_CURSOR_SIZENESW
SDL_SYSTEM_CURSOR_SIZEWE
SDL_SYSTEM_CURSOR_SIZENS
SDL_SYSTEM_CURSOR_SIZEALL
SDL_SYSTEM_CURSOR_NO
SDL_SYSTEM_CURSOR_HAND
ctypedef enum SDL_BlendMode:
SDL_BLENDMODE_NONE = 0x00000000
SDL_BLENDMODE_BLEND = 0x00000001
SDL_BLENDMODE_ADD = 0x00000002
SDL_BLENDMODE_MOD = 0x00000004
ctypedef enum SDL_TextureAccess:
SDL_TEXTUREACCESS_STATIC
SDL_TEXTUREACCESS_STREAMING
SDL_TEXTUREACCESS_TARGET
ctypedef enum SDL_RendererFlags:
SDL_RENDERER_SOFTWARE = 0x00000001
SDL_RENDERER_ACCELERATED = 0x00000002
SDL_RENDERER_PRESENTVSYNC = 0x00000004
ctypedef enum SDL_bool:
SDL_FALSE = 0
SDL_TRUE = 1
cdef struct SDL_version:
Uint8 major
Uint8 minor
Uint8 patch
cdef struct SDL_Rect:
int x, y
int w, h
ctypedef struct SDL_Point:
int x, y
cdef struct SDL_Color:
Uint8 r
Uint8 g
Uint8 b
Uint8 a
cdef struct SDL_Palette:
int ncolors
SDL_Color *colors
Uint32 version
int refcount
cdef struct SDL_PixelFormat:
Uint32 format
SDL_Palette *palette
Uint8 BitsPerPixel
Uint8 BytesPerPixel
Uint8 padding[2]
Uint32 Rmask
Uint32 Gmask
Uint32 Bmask
Uint32 Amask
Uint8 Rloss
Uint8 Gloss
Uint8 Bloss
Uint8 Aloss
Uint8 Rshift
Uint8 Gshift
Uint8 Bshift
Uint8 Ashift
int refcount
SDL_PixelFormat *next
cdef struct SDL_BlitMap
cdef struct SDL_Cursor
cdef struct SDL_Surface:
Uint32 flags
SDL_PixelFormat *format
int w, h
int pitch
void *pixels
void *userdata
int locked
void *lock_data
SDL_Rect clip_rect
SDL_BlitMap *map
int refcount
ctypedef enum SDL_EventType:
SDL_FIRSTEVENT = 0,
SDL_DROPFILE = 0x1000,
SDL_DROPTEXT
SDL_DROPBEGIN
SDL_DROPCOMPLETE
SDL_QUIT = 0x100
SDL_WINDOWEVENT = 0x200
SDL_SYSWMEVENT
SDL_KEYDOWN = 0x300
SDL_KEYUP
SDL_TEXTEDITING
SDL_TEXTINPUT
SDL_MOUSEMOTION = 0x400
SDL_MOUSEBUTTONDOWN = 0x401
SDL_MOUSEBUTTONUP = 0x402
SDL_MOUSEWHEEL = 0x403
SDL_INPUTMOTION = 0x500
SDL_INPUTBUTTONDOWN
SDL_INPUTBUTTONUP
SDL_INPUTWHEEL
SDL_INPUTPROXIMITYIN
SDL_INPUTPROXIMITYOUT
SDL_JOYAXISMOTION = 0x600
SDL_JOYBALLMOTION
SDL_JOYHATMOTION
SDL_JOYBUTTONDOWN
SDL_JOYBUTTONUP
SDL_FINGERDOWN = 0x700
SDL_FINGERUP
SDL_FINGERMOTION
SDL_TOUCHBUTTONDOWN
SDL_TOUCHBUTTONUP
SDL_DOLLARGESTURE = 0x800
SDL_DOLLARRECORD
SDL_MULTIGESTURE
SDL_CLIPBOARDUPDATE = 0x900
SDL_EVENT_COMPAT1 = 0x7000
SDL_EVENT_COMPAT2
SDL_EVENT_COMPAT3
SDL_USEREVENT = 0x8000
SDL_LASTEVENT = 0xFFFF
SDL_APP_TERMINATING
SDL_APP_LOWMEMORY
SDL_APP_WILLENTERBACKGROUND
SDL_APP_DIDENTERBACKGROUND
SDL_APP_WILLENTERFOREGROUND
SDL_APP_DIDENTERFOREGROUND
ctypedef enum SDL_WindowEventID:
SDL_WINDOWEVENT_NONE #< Never used */
SDL_WINDOWEVENT_SHOWN #< Window has been shown */
SDL_WINDOWEVENT_HIDDEN #< Window has been hidden */
SDL_WINDOWEVENT_EXPOSED #< Window has been exposed and should be
# redrawn */
SDL_WINDOWEVENT_MOVED #< Window has been moved to data1, data2
# */
SDL_WINDOWEVENT_RESIZED #< Window has been resized to data1xdata2 */
SDL_WINDOWEVENT_SIZE_CHANGED #< The window size has changed, either as a result of an API call or through the system or user changing the window size. */
SDL_WINDOWEVENT_MINIMIZED #< Window has been minimized */
SDL_WINDOWEVENT_MAXIMIZED #< Window has been maximized */
SDL_WINDOWEVENT_RESTORED #< Window has been restored to normal size
# and position */
SDL_WINDOWEVENT_ENTER #< Window has gained mouse focus */
SDL_WINDOWEVENT_LEAVE #< Window has lost mouse focus */
SDL_WINDOWEVENT_FOCUS_GAINED #< Window has gained keyboard focus */
SDL_WINDOWEVENT_FOCUS_LOST #< Window has lost keyboard focus */
SDL_WINDOWEVENT_CLOSE #< The window manager requests that the
# window be closed */
ctypedef enum SDL_HintPriority:
SDL_HINT_DEFAULT
SDL_HINT_NORMAL
SDL_HINT_OVERRIDE
ctypedef enum SDL_RendererFlip:
SDL_FLIP_NONE = 0x00000000
SDL_FLIP_HORIZONTAL = 0x00000001
SDL_FLIP_VERTICAL = 0x00000002
ctypedef enum SDL_WindowFlags:
SDL_WINDOW_FULLSCREEN = 0x00000001 #, /**< fullscreen window */
SDL_WINDOW_OPENGL = 0x00000002 #, /**< window usable with OpenGL context */
SDL_WINDOW_SHOWN = 0x00000004 #, /**< window is visible */
SDL_WINDOW_HIDDEN = 0x00000008 #, /**< window is not visible */
SDL_WINDOW_BORDERLESS = 0x00000010 #, /**< no window decoration */
SDL_WINDOW_RESIZABLE = 0x00000020 #, /**< window can be resized */
SDL_WINDOW_MINIMIZED = 0x00000040 #, /**< window is minimized */
SDL_WINDOW_MAXIMIZED = 0x00000080 #, /**< window is maximized */
SDL_WINDOW_INPUT_GRABBED = 0x00000100 #, /**< window has grabbed input focus */
SDL_WINDOW_INPUT_FOCUS = 0x00000200 #, /**< window has input focus */
SDL_WINDOW_MOUSE_FOCUS = 0x00000400 #, /**< window has mouse focus */
SDL_WINDOW_FOREIGN = 0x00000800 # /**< window not created by SDL */
SDL_WINDOW_FULLSCREEN_DESKTOP
SDL_WINDOW_ALLOW_HIGHDPI
ctypedef enum SDL_HitTestResult:
SDL_HITTEST_NORMAL
SDL_HITTEST_DRAGGABLE
SDL_HITTEST_RESIZE_TOPLEFT
SDL_HITTEST_RESIZE_TOP
SDL_HITTEST_RESIZE_TOPRIGHT
SDL_HITTEST_RESIZE_RIGHT
SDL_HITTEST_RESIZE_BOTTOMRIGHT
SDL_HITTEST_RESIZE_BOTTOM
SDL_HITTEST_RESIZE_BOTTOMLEFT
SDL_HITTEST_RESIZE_LEFT
cdef struct SDL_DropEvent:
Uint32 type
Uint32 timestamp
char* file
cdef struct SDL_MouseMotionEvent:
Uint32 type
Uint32 timestamp
Uint32 windowID
Uint32 which
Uint32 state
Sint32 x
Sint32 y
Sint32 xrel
Sint32 yrel
cdef struct SDL_MouseButtonEvent:
Uint32 type
Uint32 timestamp
Uint32 windowID
Uint32 which
Uint8 button
Uint8 state
Uint8 clicks
Sint32 x
Sint32 y
cdef struct SDL_WindowEvent:
Uint32 type
Uint32 timestamp
Uint32 windowID
Uint8 event
Sint32 data1
Sint32 data2
ctypedef Sint64 SDL_TouchID
ctypedef Sint64 SDL_FingerID
cdef struct SDL_TouchFingerEvent:
Uint32 type
Uint32 windowID
SDL_TouchID touchId
SDL_FingerID fingerId
float x
float y
float dx
float dy
float pressure
cdef struct SDL_Keysym:
SDL_Scancode scancode # SDL physical key code - see ::SDL_Scancode for details */
SDL_Keycode sym # SDL virtual key code - see ::SDL_Keycode for details */
Uint16 mod # current key modifiers */
Uint32 unused
cdef struct SDL_KeyboardEvent:
Uint32 type # ::SDL_KEYDOWN or ::SDL_KEYUP
Uint32 timestamp
Uint32 windowID # The window with keyboard focus, if any
Uint8 state # ::SDL_PRESSED or ::SDL_RELEASED
Uint8 repeat # Non-zero if this is a key repeat
SDL_Keysym keysym # The key that was pressed or released
cdef struct SDL_TextEditingEvent:
Uint32 type # ::SDL_TEXTEDITING */
Uint32 timestamp
Uint32 windowID # The window with keyboard focus, if any */
char *text # The editing text */
Sint32 start # The start cursor of selected editing text */
Sint32 length # The length of selected editing text */
cdef struct SDL_TextInputEvent:
Uint32 type # ::SDL_TEXTINPUT */
Uint32 timestamp
Uint32 windowID # The window with keyboard focus, if any */
char *text # The input text */
cdef struct SDL_MouseWheelEvent:
Uint32 type
Uint32 windowID
int x
int y
cdef struct SDL_JoyAxisEvent:
Uint32 type
Uint32 timestamp
SDL_JoystickID which
Uint8 axis
Sint16 value
cdef struct SDL_JoyBallEvent:
Uint32 type
Uint32 timestamp
SDL_JoystickID which
Uint8 ball
Sint16 xrel
Sint16 yrel
cdef struct SDL_JoyHatEvent:
Uint32 type
Uint32 timestamp
SDL_JoystickID which
Uint8 hat
Uint8 value
cdef struct SDL_JoyButtonEvent:
Uint32 type
Uint32 timestamp
SDL_JoystickID which
Uint8 button
Uint8 state
cdef struct SDL_QuitEvent:
pass
cdef struct SDL_UserEvent:
Uint32 type
Uint32 timestamp
Uint32 windowID
int code
void *data1
void *data2
cdef struct SDL_SysWMEvent:
pass
cdef struct SDL_TouchButtonEvent:
pass
cdef struct SDL_MultiGestureEvent:
pass
cdef struct SDL_DollarGestureEvent:
pass
cdef union SDL_Event:
Uint32 type
SDL_WindowEvent window
SDL_KeyboardEvent key
SDL_TextEditingEvent edit
SDL_TextInputEvent text
SDL_MouseMotionEvent motion
SDL_MouseButtonEvent button
SDL_DropEvent drop
SDL_MouseWheelEvent wheel
SDL_JoyAxisEvent jaxis
SDL_JoyBallEvent jball
SDL_JoyHatEvent jhat
SDL_JoyButtonEvent jbutton
SDL_QuitEvent quit
SDL_UserEvent user
SDL_SysWMEvent syswm
SDL_TouchFingerEvent tfinger
SDL_TouchButtonEvent tbutton
SDL_MultiGestureEvent mgesture
SDL_DollarGestureEvent dgesture
cdef struct SDL_RendererInfo:
char *name
Uint32 flags
Uint32 num_texture_formats
Uint32 texture_formats[16]
int max_texture_width
int max_texture_height
ctypedef struct SDL_Texture
ctypedef struct SDL_Renderer
ctypedef struct SDL_Window
ctypedef struct SDL_DisplayMode:
Uint32 format
int w
int h
int refresh_rate
void *driverdata
cdef struct SDL_RWops_union_unknown:
void *data1
cdef union SDL_RWops_union:
SDL_RWops_union_unknown unknown
cdef struct SDL_RWops:
Sint64 (* seek) (SDL_RWops * context, Sint64 offset,int whence)
size_t(* read) ( SDL_RWops * context, void *ptr, size_t size, size_t maxnum)
size_t(* write) (SDL_RWops * context, void *ptr,size_t size, size_t num)
int (* close) (SDL_RWops * context)
int type
SDL_RWops_union hidden
cdef enum SDL_Keymod:
KMOD_NONE
KMOD_LSHIFT
KMOD_RSHIFT
KMOD_LCTRL
KMOD_RCTRL
KMOD_LALT
KMOD_RALT
KMOD_LGUI
KMOD_RGUI
KMOD_NUM
KMOD_CAPS
KMOD_MODE
KMOD_RESERVED
ctypedef enum SDL_Scancode:
pass
ctypedef int SDL_EventFilter(void* userdata, SDL_Event* event)
# for windows only see
# https://github.com/LuaDist/sdl/blob/master/include/begin_code.h#L68
IF UNAME_SYSNAME == 'Windows':
ctypedef SDL_HitTestResult (__cdecl *SDL_HitTest) (SDL_Window *win, const SDL_Point *area, void *data)
ELSE:
ctypedef SDL_HitTestResult (*SDL_HitTest)(SDL_Window *win, const SDL_Point *area, void *data)
cdef char *SDL_HINT_ORIENTATIONS
cdef char *SDL_HINT_VIDEO_WIN_D3DCOMPILER
cdef char *SDL_HINT_ACCELEROMETER_AS_JOYSTICK
cdef char *SDL_HINT_ANDROID_TRAP_BACK_BUTTON
cdef int SDL_QUERY = -1
cdef int SDL_IGNORE = 0
cdef int SDL_DISABLE = 0
cdef int SDL_ENABLE = 1
cdef int SDL_INIT_TIMER = 0x00000001
cdef int SDL_INIT_AUDIO = 0x00000010
cdef int SDL_INIT_VIDEO = 0x00000020 # SDL_INIT_VIDEO implies SDL_INIT_EVENTS */
cdef int SDL_INIT_JOYSTICK = 0x00000200 # SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */
cdef int SDL_INIT_HAPTIC = 0x00001000
cdef int SDL_INIT_GAMECONTROLLER = 0x00002000 # SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */
cdef int SDL_INIT_EVENTS = 0x00004000
cdef int SDL_INIT_NOPARACHUTE = 0x00100000 # Don't catch fatal signals */
cdef void SDL_GetVersion(SDL_version * ver)
cdef SDL_Renderer * SDL_CreateRenderer(SDL_Window * window, int index, Uint32 flags)
cdef void SDL_DestroyRenderer (SDL_Renderer * renderer)
cdef SDL_Texture * SDL_CreateTexture(SDL_Renderer * renderer, Uint32 format, int access, int w, int h)
cdef SDL_Texture * SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
cdef SDL_Surface * SDL_CreateRGBSurface(Uint32 flags, int width, int height, int depth, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask) nogil
cdef int SDL_RenderCopy(SDL_Renderer * renderer, SDL_Texture * texture, SDL_Rect * srcrect, SDL_Rect * dstrect)
cdef int SDL_RenderCopyEx(SDL_Renderer * renderer, SDL_Texture * texture, SDL_Rect * srcrect, SDL_Rect * dstrect, double angle, SDL_Point *center, SDL_RendererFlip flip)
cdef void SDL_RenderPresent(SDL_Renderer * renderer)
cdef SDL_bool SDL_RenderTargetSupported(SDL_Renderer *renderer)
cdef int SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture)
cdef void SDL_DestroyTexture(SDL_Texture * texture)
cdef void SDL_FreeSurface(SDL_Surface * surface) nogil
cdef int SDL_SetSurfaceBlendMode(SDL_Surface * surface, int blendMode)
cdef int SDL_SetSurfaceAlphaMod(SDL_Surface * surface, char alpha)
cdef int SDL_UpperBlit (SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect)
cdef int SDL_BlitSurface(SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect)
cdef int SDL_LockTexture(SDL_Texture * texture, SDL_Rect * rect, void **pixels, int *pitch)
cdef void SDL_UnlockTexture(SDL_Texture * texture)
cdef void SDL_GetWindowSize(SDL_Window * window, int *w, int *h)
cdef Uint32 SDL_GetWindowFlags(SDL_Window * window)
cdef SDL_Window * SDL_CreateWindow(char *title, int x, int y, int w, int h, Uint32 flags)
cdef void SDL_DestroyWindow (SDL_Window * window)
cdef int SDL_SetRenderDrawColor(SDL_Renderer * renderer, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
cdef int SDL_RenderClear(SDL_Renderer * renderer)
cdef int SDL_SetTextureBlendMode(SDL_Texture * texture, SDL_BlendMode blendMode)
cdef int SDL_GetTextureBlendMode(SDL_Texture * texture, SDL_BlendMode *blendMode)
cdef SDL_Surface * SDL_CreateRGBSurfaceFrom(void *pixels, int width, int height, int depth, int pitch, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
cdef SDL_Surface* SDL_ConvertSurfaceFormat(SDL_Surface* src, Uint32 pixel_format, Uint32 flags) nogil
cdef const char* SDL_GetPixelFormatName(Uint32 format)
cdef int SDL_GetColorKey(SDL_Surface *surface, Uint32 *key)
cdef int SDL_Init(Uint32 flags)
cdef void SDL_Quit()
cdef int SDL_EnableUNICODE(int enable)
cdef Uint32 SDL_GetTicks()
cdef void SDL_Delay(Uint32 ms) nogil
cdef Uint8 SDL_EventState(Uint32 type, int state)
cdef int SDL_PollEvent(SDL_Event * event) nogil
cdef void SDL_SetEventFilter(SDL_EventFilter *filter, void* userdata)
cdef SDL_RWops * SDL_RWFromFile(char *file, char *mode)
cdef SDL_RWops * SDL_RWFromMem(void *mem, int size)
cdef SDL_RWops * SDL_RWFromConstMem(void *mem, int size)
cdef SDL_RWops * SDL_AllocRW()
cdef void SDL_FreeRW(SDL_RWops *area)
cdef int SDL_GetRendererInfo(SDL_Renderer *renderer, SDL_RendererInfo *info)
cdef int SDL_RenderSetViewport(SDL_Renderer * renderer, SDL_Rect * rect)
cdef int SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode)
cdef int SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode)
cdef int SDL_SetTextureColorMod(SDL_Texture * texture, Uint8 r, Uint8 g, Uint8 b)
cdef int SDL_SetTextureAlphaMod(SDL_Texture * texture, Uint8 alpha)
cdef char * SDL_GetError()
cdef SDL_bool SDL_SetHint(char *name, char *value)
cdef SDL_bool SDL_SetHintWithPriority(char *name, char *value, SDL_HintPriority priority)
cdef Uint32 SDL_GetMouseState(int* x,int* y)
cdef Uint32 SDL_GetGlobalMouseState(int *x, int *y)
cdef SDL_GLContext SDL_GL_CreateContext(SDL_Window* window)
cdef int SDL_GetNumVideoDisplays()
cdef int SDL_GetNumDisplayModes(int displayIndex)
cdef int SDL_GetDisplayMode(int displayIndex, int index, SDL_DisplayMode * mode)
cdef SDL_bool SDL_HasIntersection(SDL_Rect * A, SDL_Rect * B) nogil
cdef SDL_bool SDL_IntersectRect(SDL_Rect * A, SDL_Rect * B, SDL_Rect * result) nogil
cdef void SDL_UnionRect(SDL_Rect * A, SDL_Rect * B, SDL_Rect * result) nogil
cdef Uint64 SDL_GetPerformanceCounter() nogil
cdef Uint64 SDL_GetPerformanceFrequency() nogil
cdef int SDL_GL_SetAttribute(SDL_GLattr attr, int value)
cdef int SDL_GetNumRenderDrivers()
cdef int SDL_GetRenderDriverInfo(int index, SDL_RendererInfo* info)
cdef int SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh)
cdef int SDL_GL_UnbindTexture(SDL_Texture *texture)
cdef int SDL_RenderReadPixels(SDL_Renderer * renderer, SDL_Rect * rect, Uint32 format, void *pixels, int pitch) nogil
cdef int SDL_PushEvent(SDL_Event * event) nogil
cdef int SDL_WaitEvent(SDL_Event * event) nogil
cdef void SDL_SetClipboardText(char * text)
cdef const char * SDL_GetClipboardText()
cdef SDL_bool SDL_HasClipboardText()
cdef int SDL_GetNumVideoDrivers()
cdef const char *SDL_GetVideoDriver(int index)
cdef int SDL_VideoInit(const char *driver_name)
cdef void SDL_VideoQuit()
cdef const char *SDL_GetCurrentVideoDriver()
cdef int SDL_GetNumVideoDisplays()
cdef const char * SDL_GetDisplayName(int displayIndex)
cdef int SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect)
cdef int SDL_GetNumDisplayModes(int displayIndex)
cdef int SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode)
cdef int SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode)
cdef SDL_DisplayMode * SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest)
cdef int SDL_SetWindowDisplayMode(SDL_Window * window, SDL_DisplayMode * mode)
cdef int SDL_GetWindowDisplayMode(SDL_Window * window, SDL_DisplayMode * mode)
cdef int SDL_GetWindowDisplayIndex(SDL_Window * window)
cdef Uint32 SDL_GetWindowPixelFormat(SDL_Window * window)
cdef SDL_Window * SDL_CreateWindowFrom(const void *data)
cdef Uint32 SDL_GetWindowID(SDL_Window * window)
cdef SDL_Window * SDL_GetWindowFromID(Uint32 id)
cdef Uint32 SDL_GetWindowFlags(SDL_Window * window)
cdef void SDL_SetWindowTitle(SDL_Window * window, char *title)
cdef const char *SDL_GetWindowTitle(SDL_Window * window)
cdef void SDL_SetWindowIcon(SDL_Window * window, SDL_Surface *icon)
cdef void* SDL_SetWindowData(SDL_Window * window, char *name, void *data)
cdef void *SDL_GetWindowData(SDL_Window * window, char *name)
cdef void SDL_SetWindowPosition(SDL_Window * window, int x, int y)
cdef void SDL_GetWindowPosition(SDL_Window * window, int *x, int *y)
cdef void SDL_SetWindowSize(SDL_Window * window, int w, int h)
cdef void SDL_GetWindowSize(SDL_Window * window, int *w, int *h)
cdef void SDL_SetWindowMinimumSize(SDL_Window * window, int min_w, int min_h)
cdef void SDL_SetWindowBordered(SDL_Window * window, SDL_bool bordered)
cdef void SDL_ShowWindow(SDL_Window * window)
cdef int SDL_ShowCursor(int toggle)
cdef void SDL_SetCursor(SDL_Cursor * cursor)
cdef SDL_Cursor* SDL_CreateSystemCursor(SDL_SystemCursor id)
cdef void SDL_HideWindow(SDL_Window * window)
cdef void SDL_RaiseWindow(SDL_Window * window)
cdef void SDL_MaximizeWindow(SDL_Window * window)
cdef void SDL_MinimizeWindow(SDL_Window * window)
cdef void SDL_RestoreWindow(SDL_Window * window)
cdef int SDL_SetWindowFullscreen(SDL_Window * window, SDL_bool fullscreen)
cdef SDL_Surface * SDL_GetWindowSurface(SDL_Window * window)
cdef int SDL_UpdateWindowSurface(SDL_Window * window)
cdef void SDL_SetWindowGrab(SDL_Window * window, SDL_bool grabbed)
cdef SDL_bool SDL_GetWindowGrab(SDL_Window * window)
cdef int SDL_SetWindowBrightness(SDL_Window * window, float brightness)
cdef float SDL_GetWindowBrightness(SDL_Window * window)
cdef void SDL_DestroyWindow(SDL_Window * window)
cdef SDL_bool SDL_IsScreenSaverEnabled()
cdef void SDL_EnableScreenSaver()
cdef void SDL_DisableScreenSaver()
cdef int SDL_GL_LoadLibrary(const char *path)
cdef void *SDL_GL_GetProcAddress(const char *proc)
cdef void SDL_GL_UnloadLibrary()
cdef int SDL_GL_SetAttribute(SDL_GLattr attr, int value)
cdef int SDL_GL_GetAttribute(SDL_GLattr attr, int *value)
cdef int SDL_GL_MakeCurrent(SDL_Window * window, SDL_GLContext context)
cdef SDL_Window* SDL_GL_GetCurrentWindow()
cdef SDL_GLContext SDL_GL_GetCurrentContext()
cdef int SDL_GL_SetSwapInterval(int interval)
cdef int SDL_GL_GetSwapInterval()
cdef void SDL_GL_SwapWindow(SDL_Window * window)
cdef void SDL_GL_DeleteContext(SDL_GLContext context)
cdef int SDL_NumJoysticks()
cdef SDL_Joystick * SDL_JoystickOpen(int index)
cdef SDL_Window * SDL_GetKeyboardFocus()
cdef Uint8 *SDL_GetKeyboardState(int *numkeys)
cdef SDL_Keymod SDL_GetModState()
cdef void SDL_SetModState(SDL_Keymod modstate)
cdef SDL_Keycode SDL_GetKeyFromScancode(SDL_Scancode scancode)
cdef SDL_Scancode SDL_GetScancodeFromKey(SDL_Keycode key)
cdef char *SDL_GetScancodeName(SDL_Scancode scancode)
cdef SDL_Scancode SDL_GetScancodeFromName(char *name)
cdef char *SDL_GetKeyName(SDL_Keycode key)
cdef SDL_Keycode SDL_GetKeyFromName(char *name)
cdef void SDL_StartTextInput()
cdef SDL_bool SDL_IsTextInputActive()
cdef void SDL_StopTextInput()
cdef void SDL_SetTextInputRect(SDL_Rect *rect)
cdef SDL_bool SDL_HasScreenKeyboardSupport()
cdef SDL_bool SDL_IsScreenKeyboardShown(SDL_Window *window)
cdef void SDL_GL_GetDrawableSize(SDL_Window *window, int *w, int *h)
cdef int SDL_SetWindowHitTest(SDL_Window *window, SDL_HitTest callback, void *callback_data)
# Sound audio formats
Uint16 AUDIO_U8 #0x0008 /**< Unsigned 8-bit samples */
Uint16 AUDIO_S8 #0x8008 /**< Signed 8-bit samples */
Uint16 AUDIO_U16LSB #0x0010 /**< Unsigned 16-bit samples */
Uint16 AUDIO_S16LSB #0x8010 /**< Signed 16-bit samples */
Uint16 AUDIO_U16MSB #0x1010 /**< As above, but big-endian byte order */
Uint16 AUDIO_S16MSB #0x9010 /**< As above, but big-endian byte order */
Uint16 AUDIO_U16 #AUDIO_U16LSB
Uint16 AUDIO_S16 #AUDIO_S16LSB
Uint16 AUDIO_S32LSB #0x8020 /**< 32-bit Uint16eger samples */
Uint16 AUDIO_S32MSB #0x9020 /**< As above, but big-endian byte order */
Uint16 AUDIO_S32 #AUDIO_S32LSB
Uint16 AUDIO_F32LSB #0x8120 /**< 32-bit floating point samples */
Uint16 AUDIO_F32MSB #0x9120 /**< As above, but big-endian byte order */
Uint16 AUDIO_F32 #AUDIO_F32LSB
# Endianness
Uint16 SDL_BYTEORDER
Uint16 SDL_LIL_ENDIAN
Uint16 SDL_BIG_ENDIAN
cdef extern from "SDL_shape.h":
cdef SDL_Window * SDL_CreateShapedWindow(
char *title,
unsigned int x,
unsigned int y,
unsigned int w,
unsigned int h,
Uint32 flags
)
# properties, flags, etc
ctypedef enum WindowShapeMode:
ShapeModeDefault
ShapeModeBinarizeAlpha
ShapeModeReverseBinarizeAlpha
ShapeModeColorKey
ctypedef union SDL_WindowShapeParams:
Uint8 binarizationCutoff
SDL_Color colorKey
ctypedef struct SDL_WindowShapeMode:
WindowShapeMode mode
SDL_WindowShapeParams parameters
int SDL_NONSHAPEABLE_WINDOW
int SDL_INVALID_SHAPE_ARGUMENT
int SDL_WINDOW_LACKS_SHAPE
# set & get
cdef SDL_bool SDL_IsShapedWindow(SDL_Window * window)
int SDL_SetWindowShape(
SDL_Window * window,
SDL_Surface * shape,
SDL_WindowShapeMode * shape_mode
)
int SDL_GetShapedWindowMode(
SDL_Window * window,
SDL_WindowShapeMode * shape_mode
)
cdef extern from "SDL_image.h":
ctypedef enum IMG_InitFlags:
IMG_INIT_JPG
IMG_INIT_PNG
IMG_INIT_TIF
IMG_INIT_WEBP
cdef int IMG_Init(IMG_InitFlags flags)
cdef char *IMG_GetError()
cdef SDL_Surface *IMG_Load(char *file)
cdef SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc)
cdef SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type)
cdef int IMG_SavePNG(SDL_Surface *src, char *file)
cdef int IMG_SavePNG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst)
cdef int IMG_SaveJPG(SDL_Surface *surface, const char *file, int quality)
cdef int IMG_SaveJPG_RW(SDL_Surface *surface, SDL_RWops *dst, int freedst, int quality)
cdef extern from "SDL_ttf.h":
ctypedef struct TTF_Font
cdef int TTF_Init()
cdef TTF_Font * TTF_OpenFont( char *file, int ptsize)
cdef TTF_Font * TTF_OpenFontIndex( char *file, int ptsize, long index)
cdef TTF_Font * TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize)
cdef TTF_Font * TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index)
#Set and retrieve the font style
##define TTF_STYLE_NORMAL 0x00
##define TTF_STYLE_BOLD 0x01
##define TTF_STYLE_ITALIC 0x02
##define TTF_STYLE_UNDERLINE 0x04
##define TTF_STYLE_STRIKETHROUGH 0x08
cdef int TTF_STYLE_NORMAL
cdef int TTF_STYLE_BOLD
cdef int TTF_STYLE_ITALIC
cdef int TTF_STYLE_UNDERLINE
cdef int TTF_STYLE_STRIKETHROUGH
cdef int TTF_GetFontStyle( TTF_Font *font)
cdef void TTF_SetFontStyle(TTF_Font *font, int style)
cdef int TTF_GetFontOutline( TTF_Font *font)
cdef void TTF_SetFontOutline(TTF_Font *font, int outline)
#Set and retrieve FreeType hinter settings */
##define TTF_HINTING_NORMAL 0
##define TTF_HINTING_LIGHT 1
##define TTF_HINTING_MONO 2
##define TTF_HINTING_NONE 3
cdef int TTF_HINTING_NORMAL
cdef int TTF_HINTING_LIGHT
cdef int TTF_HINTING_MONO
cdef int TTF_HINTING_NONE
cdef int TTF_GetFontHinting( TTF_Font *font)
cdef void TTF_SetFontHinting(TTF_Font *font, int hinting)
#Get the total height of the font - usually equal to point size
cdef int TTF_FontHeight( TTF_Font *font)
## Get the offset from the baseline to the top of the font
#This is a positive value, relative to the baseline.
#*/
cdef int TTF_FontAscent( TTF_Font *font)
## Get the offset from the baseline to the bottom of the font
# This is a negative value, relative to the baseline.
# */
cdef int TTF_FontDescent( TTF_Font *font)
## Get the recommended spacing between lines of text for this font */
cdef int TTF_FontLineSkip( TTF_Font *font)
## Get/Set whether or not kerning is allowed for this font */
cdef int TTF_GetFontKerning( TTF_Font *font)
cdef void TTF_SetFontKerning(TTF_Font *font, int allowed)
## Get the number of faces of the font */
cdef long TTF_FontFaces( TTF_Font *font)
## Get the font face attributes, if any */
cdef int TTF_FontFaceIsFixedWidth( TTF_Font *font)
cdef char * TTF_FontFaceFamilyName( TTF_Font *font)
cdef char * TTF_FontFaceStyleName( TTF_Font *font)
## Check whether a glyph is provided by the font or not */
cdef int TTF_GlyphIsProvided( TTF_Font *font, Uint16 ch)
## Get the metrics (dimensions) of a glyph
# To understand what these metrics mean, here is a useful link:
# http://freetype.sourceforge.net/freetype2/docs/tutorial/step2.html
# */
cdef int TTF_GlyphMetrics(TTF_Font *font, Uint16 ch,int *minx, int *maxx, int *miny, int *maxy, int *advance)
## Get the dimensions of a rendered string of text */
cdef int TTF_SizeText(TTF_Font *font, char *text, int *w, int *h)
cdef int TTF_SizeUTF8(TTF_Font *font, char *text, int *w, int *h)
cdef int TTF_SizeUNICODE(TTF_Font *font, Uint16 *text, int *w, int *h)
# Create an 8-bit palettized surface and render the given text at
# fast quality with the given font and color. The 0 pixel is the
# colorkey, giving a transparent background, and the 1 pixel is set
# to the text color.
# This function returns the new surface, or NULL if there was an error.
#*/
cdef SDL_Surface * TTF_RenderText_Solid(TTF_Font *font, char *text, SDL_Color fg)
cdef SDL_Surface * TTF_RenderUTF8_Solid(TTF_Font *font, char *text, SDL_Color fg)
cdef SDL_Surface * TTF_RenderUNICODE_Solid(TTF_Font *font, Uint16 *text, SDL_Color fg)
# Create an 8-bit palettized surface and render the given glyph at
# fast quality with the given font and color. The 0 pixel is the
# colorkey, giving a transparent background, and the 1 pixel is set
# to the text color. The glyph is rendered without any padding or
# centering in the X direction, and aligned normally in the Y direction.
# This function returns the new surface, or NULL if there was an error.
#*/
cdef SDL_Surface * TTF_RenderGlyph_Solid(TTF_Font *font, Uint16 ch, SDL_Color fg)
# Create an 8-bit palettized surface and render the given text at
# high quality with the given font and colors. The 0 pixel is background,
# while other pixels have varying degrees of the foreground color.
# This function returns the new surface, or NULL if there was an error.
#*/
cdef SDL_Surface * TTF_RenderText_Shaded(TTF_Font *font, char *text, SDL_Color fg, SDL_Color bg)
cdef SDL_Surface * TTF_RenderUTF8_Shaded(TTF_Font *font, char *text, SDL_Color fg, SDL_Color bg)
cdef SDL_Surface * TTF_RenderUNICODE_Shaded(TTF_Font *font, Uint16 *text, SDL_Color fg, SDL_Color bg)
# Create an 8-bit palettized surface and render the given glyph at
# high quality with the given font and colors. The 0 pixel is background,
# while other pixels have varying degrees of the foreground color.
# The glyph is rendered without any padding or centering in the X
# direction, and aligned normally in the Y direction.
# This function returns the new surface, or NULL if there was an error.
#
cdef SDL_Surface * TTF_RenderGlyph_Shaded(TTF_Font *font,
Uint16 ch, SDL_Color fg, SDL_Color bg)
# Create a 32-bit ARGB surface and render the given text at high quality,
# using alpha blending to dither the font with the given color.
# This function returns the new surface, or NULL if there was an error.
#*/
cdef SDL_Surface * TTF_RenderText_Blended(TTF_Font *font,
char *text, SDL_Color fg)
cdef SDL_Surface * TTF_RenderUTF8_Blended(TTF_Font *font,
char *text, SDL_Color fg)
cdef SDL_Surface * TTF_RenderUNICODE_Blended(TTF_Font *font,
Uint16 *text, SDL_Color fg)
# Create a 32-bit ARGB surface and render the given glyph at high quality,
# using alpha blending to dither the font with the given color.
# The glyph is rendered without any padding or centering in the X
# direction, and aligned normally in the Y direction.
# This function returns the new surface, or NULL if there was an error.
#*/
cdef SDL_Surface * TTF_RenderGlyph_Blended(TTF_Font *font,
Uint16 ch, SDL_Color fg)
# For compatibility with previous versions, here are the old functions */
##define TTF_RenderText(font, text, fg, bg) \
# TTF_RenderText_Shaded(font, text, fg, bg)
##define TTF_RenderUTF8(font, text, fg, bg) \
# TTF_RenderUTF8_Shaded(font, text, fg, bg)
##define TTF_RenderUNICODE(font, text, fg, bg) \
# TTF_RenderUNICODE_Shaded(font, text, fg, bg)
# Close an opened font file */
cdef void TTF_CloseFont(TTF_Font *font)
# De-initialize the TTF engine */
cdef void TTF_Quit()
# Check if the TTF engine is initialized */
cdef int TTF_WasInit()
# Get the kerning size of two glyphs */
cdef int TTF_GetFontKerningSize(TTF_Font *font, int prev_index, int index)
cdef extern from "SDL_audio.h":
cdef int AUDIO_S16SYS
ctypedef struct SDL_AudioFilter:
pass
ctypedef struct SDL_AudioCVT:
int needed
int src_format
int dst_format
double rate_incr
Uint8 *buf
int len
int len_cvt
int len_mult
double len_ratio
SDL_AudioFilter filters[10]
int filter_index
cdef int SDL_BuildAudioCVT(
SDL_AudioCVT *cvt,
int src_format,
Uint8 src_channels,
int src_rate,
int dst_format,
Uint8 dst_channels,
int dst_rate
)
cdef int SDL_ConvertAudio(SDL_AudioCVT *cvt)
cdef extern from "SDL_mixer.h":
cdef struct Mix_Chunk:
int allocated
Uint8 *abuf
Uint32 alen
Uint8 volume
ctypedef struct Mix_Music:
pass
ctypedef enum Mix_Fading:
MIX_NO_FADING
MIX_FADING_OUT
MIX_FADING_IN
ctypedef enum Mix_MusicType:
MUS_NONE
MUS_CMD
MUS_WAV
MUS_MOD
MUS_MID
MUS_OGG
MUS_MP3
MUS_MP3_MAD
MUS_FLAC
MUS_MODPLUG
ctypedef enum MIX_InitFlags:
MIX_INIT_FLAC = 0x00000001
MIX_INIT_MOD = 0x00000002
MIX_INIT_MODPLUG = 0x00000004 # Removed in mixer 2.0.2
MIX_INIT_MP3 = 0x00000008
MIX_INIT_OGG = 0x00000010
MIX_INIT_MID = 0x00000020 # Previously _FLUIDSYNTH
cdef int MIX_MAX_VOLUME
cdef int Mix_Init(int flags)
cdef void Mix_Quit()
cdef int Mix_OpenAudio(int frequency, Uint16 format, int channels, int chunksize)
cdef int Mix_AllocateChannels(int numchans)
cdef int Mix_QuerySpec(int *frequency,Uint16 *format,int *channels)
cdef Mix_Chunk * Mix_LoadWAV_RW(SDL_RWops *src, int freesrc)
cdef Mix_Chunk * Mix_LoadWAV(char *file)
cdef Mix_Music * Mix_LoadMUS(char *file)
cdef Mix_Music * Mix_LoadMUS_RW(SDL_RWops *rw)
cdef Mix_Music * Mix_LoadMUSType_RW(SDL_RWops *rw, Mix_MusicType type, int freesrc)
cdef Mix_Chunk * Mix_QuickLoad_WAV(Uint8 *mem)
cdef Mix_Chunk * Mix_QuickLoad_RAW(Uint8 *mem, Uint32 len)
cdef void Mix_FreeChunk(Mix_Chunk *chunk)
cdef void Mix_FreeMusic(Mix_Music *music)
cdef int Mix_GetNumChunkDecoders()
cdef char * Mix_GetChunkDecoder(int index)
cdef int Mix_GetNumMusicDecoders()
cdef char * Mix_GetMusicDecoder(int index)
cdef Mix_MusicType Mix_GetMusicType( Mix_Music *music)
cdef void Mix_SetPostMix(void (*mix_func)(void *udata, Uint8 *stream, int len), void *arg)
cdef void Mix_HookMusic(void (*mix_func) (void *udata, Uint8 *stream, int len), void *arg)
cdef void Mix_HookMusicFinished(void (*music_finished)())
cdef void * Mix_GetMusicHookData()
cdef void Mix_ChannelFinished(void (*channel_finished)(int channel))
# typedef void (*Mix_EffectFunc_t)(int chan, void *stream, int len, void *udata)
# typedef void (*Mix_EffectDone_t)(int chan, void *udata)
# cdef int Mix_RegisterEffect(int chan, Mix_EffectFunc_t f,
# cdef int Mix_UnregisterEffect(int channel, Mix_EffectFunc_t f)
cdef int Mix_UnregisterAllEffects(int channel)
cdef int Mix_SetPanning(int channel, Uint8 left, Uint8 right)
cdef int Mix_SetPosition(int channel, Sint16 angle, Uint8 distance)
cdef int Mix_SetDistance(int channel, Uint8 distance)
cdef int Mix_SetReverseStereo(int channel, int flip)
cdef int Mix_ReserveChannels(int num)
cdef int Mix_GroupChannel(int which, int tag)
cdef int Mix_GroupChannels(int _from, int to, int tag)
cdef int Mix_GroupAvailable(int tag)
cdef int Mix_GroupCount(int tag)
cdef int Mix_GroupOldest(int tag)
cdef int Mix_GroupNewer(int tag)
cdef int Mix_PlayChannel(int channel, Mix_Chunk *chunk, int loops)
cdef int Mix_PlayChannelTimed(int channel, Mix_Chunk *chunk, int loops, int ticks)
cdef int Mix_PlayMusic(Mix_Music *music, int loops)
cdef int Mix_FadeInMusic(Mix_Music *music, int loops, int ms)
cdef int Mix_FadeInMusicPos(Mix_Music *music, int loops, int ms, double position)
cdef int Mix_FadeInChannel(int channel, Mix_Chunk *chunk, int loops, int ms)
cdef int Mix_FadeInChannelTimed(int channel, Mix_Chunk *chunk, int loops, int ms, int ticks)
cdef int Mix_Volume(int channel, int volume)
cdef int Mix_VolumeChunk(Mix_Chunk *chunk, int volume)
cdef int Mix_VolumeMusic(int volume)
cdef int Mix_HaltChannel(int channel)
cdef int Mix_HaltGroup(int tag)
cdef int Mix_HaltMusic()
cdef int Mix_ExpireChannel(int channel, int ticks)
cdef int Mix_FadeOutChannel(int which, int ms)
cdef int Mix_FadeOutGroup(int tag, int ms)
cdef int Mix_FadeOutMusic(int ms)
cdef Mix_Fading Mix_FadingMusic()
cdef Mix_Fading Mix_FadingChannel(int which)
cdef void Mix_Pause(int channel)
cdef void Mix_Resume(int channel)
cdef int Mix_Paused(int channel)
cdef void Mix_PauseMusic()
cdef void Mix_ResumeMusic()
cdef void Mix_RewindMusic()
cdef int Mix_PausedMusic()
cdef int Mix_SetMusicPosition(double position)
cdef int Mix_Playing(int channel)
cdef int Mix_PlayingMusic()
cdef int Mix_SetMusicCMD( char *command)
cdef int Mix_SetSynchroValue(int value)
cdef int Mix_GetSynchroValue()
cdef int Mix_SetSoundFonts( char *paths)
cdef char* Mix_GetSoundFonts()
#cdef int Mix_EachSoundFont(int (*function)( char*, void*), void *data)
cdef Mix_Chunk * Mix_GetChunk(int channel)
cdef void Mix_CloseAudio()
cdef char * Mix_GetError()
include '../core/window/window_attrs.pxi'
cdef extern from "SDL_syswm.h":
cdef enum SDL_SYSWM_TYPE:
SDL_SYSWM_UNKNOWN
SDL_SYSWM_WINDOWS
SDL_SYSWM_X11
SDL_SYSWM_DIRECTFB
SDL_SYSWM_COCOA
SDL_SYSWM_UIKIT
SDL_SYSWM_WAYLAND
SDL_SYSWM_MIR
SDL_SYSWM_WINRT
SDL_SYSWM_ANDROID
SDL_SYSWM_VIVANTE
SDL_SYSWM_OS2
IF UNAME_SYSNAME == 'Windows':
cdef struct _wm_info_win:
HWND window
HDC hdc
ELSE:
cdef struct _wm_info_win:
int dummy
IF USE_WAYLAND:
cdef struct _wm_info_wl:
wl_display *display
wl_surface *surface
wl_shell_surface *shell_surface
ELSE:
cdef struct _wm_info_wl:
int dummy
IF USE_X11:
cdef struct _wm_info_x11:
Display *display
Window window
ELSE:
cdef struct _wm_info_x11:
int dummy
cdef union _wm_info:
_wm_info_win win
_wm_info_wl wl
_wm_info_x11 x11
cdef struct SDL_SysWMinfo:
SDL_version version
SDL_SYSWM_TYPE subsystem
_wm_info info
cdef SDL_bool SDL_GetWindowWMInfo(SDL_Window *window, SDL_SysWMinfo *info)