package vendor:sdl2

⌘K
Ctrl+K
or
/

    Overview

    Bindings for SDL2.

    Packages 4

    imageBindings for SDL2 Image.
    mixerBindings for SDL2 Mixer.
    netBindings for SDL2 Net.
    ttfBindings for SDL2 TTF.

    External Examples 3 ¶

    The programs in odin-lang/examples about this package, and how many of its declarations each uses.

    Index

    Types (178)
    Constants (588)
    Variables (0)

    This section is empty.

    Procedures (772)
    Procedure Groups (0)

    This section is empty.

    Types

    AudioAllowChangeFlag ¶

    AudioAllowChangeFlag :: enum i32 {
    	FREQUENCY = 0, 
    	FORMAT    = 1, 
    	CHANNELS  = 2, 
    	SAMPLES   = 3, 
    }

    AudioAllowChangeFlags ¶

    AudioAllowChangeFlags :: distinct bit_set[AudioAllowChangeFlag; i32]

    Related Constants

    AudioCVT ¶

    AudioCVT :: struct #packed {
    	needed:       i32,
    	// *< Set to 1 if conversion possible 
    	src_format:   AudioFormat,
    	// *< Source audio format 
    	dst_format:   AudioFormat,
    	// *< Target audio format 
    	rate_incr:    f64,
    	// *< Rate conversion increment 
    	buf:          [^]u8,
    	// *< Buffer to hold entire audio data 
    	len:          i32,
    	// *< Length of original audio buffer 
    	len_cvt:      i32,
    	// *< Length of converted audio buffer 
    	len_mult:     i32,
    	// *< buffer must be len*len_mult big 
    	len_ratio:    f64,
    	// *< Given len, final size is len*len_ratio 
    	filters:      [10]AudioFilter,
    	// *< NULL-terminated list of filter functions 
    	filter_index: i32,
    }

    Related Procedures With Parameters

    AudioCallback ¶

    AudioCallback :: proc "c" (userdata: rawptr, stream: [^]u8, len: i32)

    AudioDeviceEvent ¶

    AudioDeviceEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     u32,
    	// *< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event 
    	iscapture: u8,
    	// *< zero if an output device, non-zero if a capture device. 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    }

    AudioFilter ¶

    AudioFilter :: proc "c" (cvt: ^AudioCVT, format: AudioFormat)

    AudioFormat ¶

    AudioFormat :: distinct u16
     

    Audio format flags. *

    • These are what the 16 bits in SDL_AudioFormat currently mean...
    • (Unspecified bits are always zero).
    • \verbatim ++-----------------------sample is signed if set || || ++-----------sample is bigendian if set || || || || ++---sample is float if set || || || || || || +---sample bit size---+ || || || | | 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 \endverbatim
    • There are macros in SDL 2.0 and later to query these bits.

    Related Procedures With Parameters

    AudioSpec ¶

    AudioSpec :: struct {
    	freq:     i32,
    	// *< DSP frequency -- samples per second 
    	format:   AudioFormat,
    	// *< Audio data format 
    	channels: u8,
    	// *< Number of channels: 1 mono, 2 stereo 
    	silence:  u8,
    	// *< Audio buffer silence value (calculated) 
    	samples:  u16,
    	// *< Audio buffer size in sample FRAMES (total samples divided by channel count) 
    	padding:  u16,
    	// *< Necessary for some compile environments 
    	size:     u32,
    	// *< Audio buffer size in bytes (calculated) 
    	callback: AudioCallback,
    	// *< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). 
    	userdata: rawptr,
    }
     

    The calculated values in this structure are calculated by SDL_OpenAudio().

    For multi-channel audio, the default SDL channel mapping is: 2: FL FR (stereo) 3: FL FR LFE (2.1 surround) 4: FL FR BL BR (quad) 5: FL FR FC BL BR (quad + center) 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) 7: FL FR FC LFE BC SL SR (6.1 surround) 8: FL FR FC LFE BL BR SL SR (7.1 surround)

    Related Procedures With Parameters

    AudioStatus ¶

    AudioStatus :: enum i32 {
    	STOPPED = 0, 
    	PLAYING, 
    	PAUSED, 
    }

    Related Procedures With Returns

    AudioStream ¶

    AudioStream :: struct {}
     

    this is opaque to the outside world.

    Related Procedures With Parameters

    BlendFactor ¶

    BlendFactor :: enum i32 {
    	ZERO                = 0x1, // *< 0, 0, 0, 0
    	ONE                 = 0x2, // *< 1, 1, 1, 1
    	SRC_COLOR           = 0x3, // *< srcR, srcG, srcB, srcA
    	ONE_MINUS_SRC_COLOR = 0x4, // *< 1-srcR, 1-srcG, 1-srcB, 1-srcA
    	SRC_ALPHA           = 0x5, // *< srcA, srcA, srcA, srcA
    	ONE_MINUS_SRC_ALPHA = 0x6, // *< 1-srcA, 1-srcA, 1-srcA, 1-srcA
    	DST_COLOR           = 0x7, // *< dstR, dstG, dstB, dstA
    	ONE_MINUS_DST_COLOR = 0x8, // *< 1-dstR, 1-dstG, 1-dstB, 1-dstA
    	DST_ALPHA           = 0x9, // *< dstA, dstA, dstA, dstA
    	ONE_MINUS_DST_ALPHA = 0xA, // *< 1-dstA, 1-dstA, 1-dstA, 1-dstA
    }
     

    The normalized factor used to multiply pixel components

    BlendMode ¶

    BlendMode :: enum i32 {
    	NONE    = 0x00000000, // *< no blending
    	                        dstRGBA = srcRGBA
    	BLEND   = 0x00000001, // *< alpha blending
    	                        dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA))
    	                        dstA = srcA + (dstA * (1-srcA))
    	ADD     = 0x00000002, // *< additive blending
    	                        dstRGB = (srcRGB * srcA) + dstRGB
    	                        dstA = dstA
    	MOD     = 0x00000004, // *< color modulate
    	                        dstRGB = srcRGB * dstRGB
    	                        dstA = dstA
    	MUL     = 0x00000008, // *< color multiply
    	                        dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA))
    	                        dstA = (srcA * dstA) + (dstA * (1-srcA))
    	INVALID = 0x7FFFFFFF, 
    }
     

    The blend mode used in SDL_RenderCopy() and drawing operations.

    Related Procedures With Parameters

    BlendOperation ¶

    BlendOperation :: enum i32 {
    	ADD          = 0x1, // *< dst + src: supported by all renderers
    	SUBTRACT     = 0x2, // *< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES
    	REV_SUBTRACT = 0x3, // *< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES
    	MINIMUM      = 0x4, // *< min(dst, src) : supported by D3D11
    	MAXIMUM      = 0x5, // *< max(dst, src) : supported by D3D11
    }
     

    The blend operation used when combining source and destination pixel components

    Color ¶

    Color :: struct {
    	r: u8,
    	g: u8,
    	b: u8,
    	a: u8,
    }

    Colour ¶

    Colour :: Color

    CommonEvent ¶

    CommonEvent :: struct {
    	type:      EventType,
    	timestamp: u32,
    }

    ControllerAxisEvent ¶

    ControllerAxisEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERAXISMOTION 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	axis:      u8,
    	// *< The controller axis (SDL_GameControllerAxis) 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    	value:     i16,
    	// *< The axis value (range: -32768 to 32767) 
    	_:         u16,
    }

    ControllerButtonEvent ¶

    ControllerButtonEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	button:    u8,
    	// *< The controller button (SDL_GameControllerButton) 
    	state:     u8,
    	// *< ::SDL_PRESSED or ::SDL_RELEASED 
    	_:         u8,
    	_:         u8,
    }

    ControllerDeviceEvent ¶

    ControllerDeviceEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     i32,
    }

    ControllerSensorEvent ¶

    ControllerSensorEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERSENSORUPDATE 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	sensor:    i32,
    	// *< The type of the sensor, one of the values of ::SDL_SensorType 
    	data:      [3]f32,
    }

    ControllerTouchpadEvent ¶

    ControllerTouchpadEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	touchpad:  i32,
    	// *< The index of the touchpad 
    	finger:    i32,
    	// *< The index of the finger on the touchpad 
    	x:         f32,
    	// *< Normalized in the range 0...1 with 0 being on the left 
    	y:         f32,
    	// *< Normalized in the range 0...1 with 0 being at the top 
    	pressure:  f32,
    }

    Cursor ¶

    Cursor :: struct {}

    Related Procedures With Parameters

    Related Procedures With Returns

    DisplayEvent ¶

    DisplayEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_DISPLAYEVENT 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	display:   u32,
    	// *< The associated display index 
    	event:     DisplayEventID,
    	// *< ::SDL_DisplayEventID 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    	data1:     i32,
    }

    DisplayEventID ¶

    DisplayEventID :: enum u8 {
    	NONE,         // *< Never used
    	ORIENTATION,  // *< Display orientation has changed to data1
    	CONNECTED,    // *< Display has been added to the system
    	DISCONNECTED, // *< Display has been removed from the system
    }

    DisplayMode ¶

    DisplayMode :: struct {
    	format:       u32,
    	// *< pixel format 
    	w:            i32,
    	// *< width, in screen coordinates 
    	h:            i32,
    	// *< height, in screen coordinates 
    	refresh_rate: i32,
    	// *< refresh rate (or zero for unspecified) 
    	driverdata:   rawptr,
    }

    Related Procedures With Parameters

    DisplayOrientation ¶

    DisplayOrientation :: enum i32 {
    	UNKNOWN,           // *< The display orientation can't be determined
    	LANDSCAPE,         // *< The display is in landscape mode, with the right side up, relative to portrait mode
    	LANDSCAPE_FLIPPED, // *< The display is in landscape mode, with the left side up, relative to portrait mode
    	PORTRAIT,          // *< The display is in portrait mode
    	PORTRAIT_FLIPPED,  // *< The display is in portrait mode, upside down
    }

    DollarGestureEvent ¶

    DollarGestureEvent :: struct {
    	type:       EventType,
    	// *< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD 
    	timestamp:  u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	touchId:    TouchID,
    	// *< The touch device id 
    	gestureId:  GestureID,
    	numFingers: u32,
    	error:      f32,
    	x:          f32,
    	// *< Normalized center of gesture 
    	y:          f32,
    }
     

    Dollar Gesture Event (event.dgesture.*)

    DropEvent ¶

    DropEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	file:      cstring,
    	// *< The file name, which should be freed with SDL_free(), is NULL on begin/complete 
    	windowID:  u32,
    }

    Event ¶

    Event :: struct #raw_union {
    	type:      EventType,
    	// *< Event type, shared with all events 
    	common:    CommonEvent,
    	// *< Common event data 
    	display:   DisplayEvent,
    	// *< Display event data 
    	window:    WindowEvent,
    	// *< Window event data 
    	key:       KeyboardEvent,
    	// *< Keyboard event data 
    	edit:      TextEditingEvent,
    	// *< Text editing event data 
    	text:      TextInputEvent,
    	// *< Text input event data 
    	motion:    MouseMotionEvent,
    	// *< Mouse motion event data 
    	button:    MouseButtonEvent,
    	// *< Mouse button event data 
    	wheel:     MouseWheelEvent,
    	// *< Mouse wheel event data 
    	jaxis:     JoyAxisEvent,
    	// *< Joystick axis event data 
    	jball:     JoyBallEvent,
    	// *< Joystick ball event data 
    	jhat:      JoyHatEvent,
    	// *< Joystick hat event data 
    	jbutton:   JoyButtonEvent,
    	// *< Joystick button event data 
    	jdevice:   JoyDeviceEvent,
    	// *< Joystick device change event data 
    	caxis:     ControllerAxisEvent,
    	// *< Game Controller axis event data 
    	cbutton:   ControllerButtonEvent,
    	// *< Game Controller button event data 
    	cdevice:   ControllerDeviceEvent,
    	// *< Game Controller device event data 
    	ctouchpad: ControllerTouchpadEvent,
    	// *< Game Controller touchpad event data 
    	csensor:   ControllerSensorEvent,
    	// *< Game Controller sensor event data 
    	adevice:   AudioDeviceEvent,
    	// *< Audio device event data 
    	sensor:    SensorEvent,
    	// *< Sensor event data 
    	quit:      QuitEvent,
    	// *< Quit request event data 
    	user:      UserEvent,
    	// *< Custom event data 
    	syswm:     SysWMEvent,
    	// *< System dependent window event data 
    	tfinger:   TouchFingerEvent,
    	// *< Touch finger event data 
    	mgesture:  MultiGestureEvent,
    	// *< Gesture event data 
    	dgesture:  DollarGestureEvent,
    	// *< Gesture event data 
    	drop:      DropEvent,
    	// *< Drag and drop event data 
    	padding:   [56]u8,
    }
    External examples sdl2/chase_in_space · sdl2/microui · sdl2/hellope

    Related Procedures With Parameters

    EventFilter ¶

    EventFilter :: proc "c" (userdata: rawptr, event: ^Event) -> i32

    Related Procedures With Parameters

    EventType ¶

    EventType :: enum u32 {
    	FIRSTEVENT               = 0,      // *< Unused (do not remove)
    	// Application events 
    	QUIT                     = 0x100,  // *< User-requested quit
    	// These application events have special meaning on iOS, see README-ios.md for details 
    	APP_TERMINATING,                   // *< The application is being terminated by the OS
    	                             Called on iOS in applicationWillTerminate()
    	                             Called on Android in onDestroy()
    	APP_LOWMEMORY,                     // *< The application is low on memory, free memory if possible.
    	                             Called on iOS in applicationDidReceiveMemoryWarning()
    	                             Called on Android in onLowMemory()
    	APP_WILLENTERBACKGROUND,           // *< The application is about to enter the background
    	                             Called on iOS in applicationWillResignActive()
    	                             Called on Android in onPause()
    	APP_DIDENTERBACKGROUND,            // *< The application did enter the background and may not get CPU for some time
    	                             Called on iOS in applicationDidEnterBackground()
    	                             Called on Android in onPause()
    	APP_WILLENTERFOREGROUND,           // *< The application is about to enter the foreground
    	                             Called on iOS in applicationWillEnterForeground()
    	                             Called on Android in onResume()
    	APP_DIDENTERFOREGROUND,            // *< The application is now interactive
    	                             Called on iOS in applicationDidBecomeActive()
    	                             Called on Android in onResume()
    	LOCALECHANGED,                     // *< The user's locale preferences have changed.
    	// Display events 
    	DISPLAYEVENT             = 0x150,  // *< Display state change
    	// Window events 
    	WINDOWEVENT              = 0x200,  // *< Window state change
    	SYSWMEVENT,                        // *< System specific event
    	// Keyboard events 
    	KEYDOWN                  = 0x300,  // *< Key pressed
    	KEYUP,                             // *< Key released
    	TEXTEDITING,                       // *< Keyboard text editing (composition)
    	TEXTINPUT,                         // *< Keyboard text input
    	KEYMAPCHANGED,                     // *< Keymap changed due to a system event such as an
    	                             input language or keyboard layout change.
    	// Mouse events 
    	MOUSEMOTION              = 0x400,  // *< Mouse moved
    	MOUSEBUTTONDOWN,                   // *< Mouse button pressed
    	MOUSEBUTTONUP,                     // *< Mouse button released
    	MOUSEWHEEL,                        // *< Mouse wheel motion
    	// Joystick events 
    	JOYAXISMOTION            = 0x600,  // *< Joystick axis motion
    	JOYBALLMOTION,                     // *< Joystick trackball motion
    	JOYHATMOTION,                      // *< Joystick hat position change
    	JOYBUTTONDOWN,                     // *< Joystick button pressed
    	JOYBUTTONUP,                       // *< Joystick button released
    	JOYDEVICEADDED,                    // *< A new joystick has been inserted into the system
    	JOYDEVICEREMOVED,                  // *< An opened joystick has been removed
    	// Game controller events 
    	CONTROLLERAXISMOTION     = 0x650,  // *< Game controller axis motion
    	CONTROLLERBUTTONDOWN,              // *< Game controller button pressed
    	CONTROLLERBUTTONUP,                // *< Game controller button released
    	CONTROLLERDEVICEADDED,             // *< A new Game controller has been inserted into the system
    	CONTROLLERDEVICEREMOVED,           // *< An opened Game controller has been removed
    	CONTROLLERDEVICEREMAPPED,          // *< The controller mapping was updated
    	CONTROLLERTOUCHPADDOWN,            // *< Game controller touchpad was touched
    	CONTROLLERTOUCHPADMOTION,          // *< Game controller touchpad finger was moved
    	CONTROLLERTOUCHPADUP,              // *< Game controller touchpad finger was lifted
    	CONTROLLERSENSORUPDATE,            // *< Game controller sensor was updated
    	// Touch events 
    	FINGERDOWN               = 0x700, 
    	FINGERUP, 
    	FINGERMOTION, 
    	// Gesture events 
    	DOLLARGESTURE            = 0x800, 
    	DOLLARRECORD, 
    	MULTIGESTURE, 
    	// Clipboard events 
    	CLIPBOARDUPDATE          = 0x900,  // *< The clipboard changed
    	// Drag and drop events 
    	DROPFILE                 = 0x1000, // *< The system requests a file open
    	DROPTEXT,                          // *< text/plain drag-and-drop event
    	DROPBEGIN,                         // *< A new set of drops is beginning (NULL filename)
    	DROPCOMPLETE,                      // *< Current set of drops is now complete (NULL filename)
    	// Audio hotplug events 
    	AUDIODEVICEADDED         = 0x1100, // *< A new audio device is available
    	AUDIODEVICEREMOVED,                // *< An audio device has been removed.
    	// Sensor events 
    	SENSORUPDATE             = 0x1200, // *< A sensor was updated
    	// Render events 
    	RENDER_TARGETS_RESET     = 0x2000, // *< The render targets have been reset and their contents need to be updated
    	RENDER_DEVICE_RESET,               // *< The device has been reset and all textures need to be recreated
    	// Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use,
    	// 	*  and should be allocated with SDL_RegisterEvents()
    	USEREVENT                = 0x8000, 
    	// *
    	// 	*  This last event is only for bounding internal arrays
    	LASTEVENT                = 0xFFFF, 
    }

    Related Procedures With Parameters

    FPoint ¶

    FPoint :: struct {
    	x: f32,
    	y: f32,
    }

    Related Procedures With Parameters

    FRect ¶

    FRect :: struct {
    	x: f32,
    	y: f32,
    	w: f32,
    	h: f32,
    }
    External examples sdl2/chase_in_space

    Related Procedures With Parameters

    Finger ¶

    Finger :: struct {
    	id:       FingerID,
    	x:        f32,
    	y:        f32,
    	pressure: f32,
    }

    FlashOperation ¶

    FlashOperation :: enum i32 {
    	CANCEL,        // *< Cancel any window flash state
    	BRIEFLY,       // *< Flash the window briefly to get attention
    	UNTIL_FOCUSED, // *< Flash the window until it gets focus
    }

    GLContext ¶

    GLContext :: distinct rawptr

    Related Procedures With Parameters

    Related Procedures With Returns

    GLContextResetNotification ¶

    GLContextResetNotification :: enum i32 {
    	NO_NOTIFICATION = 0x0000, 
    	LOSE_CONTEXT    = 0x0001, 
    }

    GLattr ¶

    GLattr :: enum i32 {
    	RED_SIZE, 
    	GREEN_SIZE, 
    	BLUE_SIZE, 
    	ALPHA_SIZE, 
    	BUFFER_SIZE, 
    	DOUBLEBUFFER, 
    	DEPTH_SIZE, 
    	STENCIL_SIZE, 
    	ACCUM_RED_SIZE, 
    	ACCUM_GREEN_SIZE, 
    	ACCUM_BLUE_SIZE, 
    	ACCUM_ALPHA_SIZE, 
    	STEREO, 
    	MULTISAMPLEBUFFERS, 
    	MULTISAMPLESAMPLES, 
    	ACCELERATED_VISUAL, 
    	RETAINED_BACKING, 
    	CONTEXT_MAJOR_VERSION, 
    	CONTEXT_MINOR_VERSION, 
    	CONTEXT_EGL, 
    	CONTEXT_FLAGS, 
    	CONTEXT_PROFILE_MASK, 
    	SHARE_WITH_CURRENT_CONTEXT, 
    	FRAMEBUFFER_SRGB_CAPABLE, 
    	CONTEXT_RELEASE_BEHAVIOR, 
    	CONTEXT_RESET_NOTIFICATION, 
    	CONTEXT_NO_ERROR, 
    }

    Related Procedures With Parameters

    GLcontextFlag ¶

    GLcontextFlag :: enum i32 {
    	DEBUG_FLAG              = 0x0001, 
    	FORWARD_COMPATIBLE_FLAG = 0x0002, 
    	ROBUST_ACCESS_FLAG      = 0x0004, 
    	RESET_ISOLATION_FLAG    = 0x0008, 
    }

    GLcontextReleaseFlag ¶

    GLcontextReleaseFlag :: enum i32 {
    	NONE  = 0x0000, 
    	FLUSH = 0x0001, 
    }

    GLprofile ¶

    GLprofile :: enum i32 {
    	CORE          = 0x0001, 
    	COMPATIBILITY = 0x0002, 
    	ES            = 0x0004, // *< GLX_CONTEXT_ES2_PROFILE_BIT_EXT
    }

    GameControllerAxis ¶

    GameControllerAxis :: enum i32 {
    	INVALID      = -1, 
    	LEFTX, 
    	LEFTY, 
    	RIGHTX, 
    	RIGHTY, 
    	TRIGGERLEFT, 
    	TRIGGERRIGHT, 
    	MAX, 
    }

    Related Procedures With Parameters

    GameControllerBindType ¶

    GameControllerBindType :: enum i32 {
    	NONE   = 0, 
    	BUTTON, 
    	AXIS, 
    	HAT, 
    }

    GameControllerButton ¶

    GameControllerButton :: enum i32 {
    	INVALID       = -1, 
    	A, 
    	B, 
    	X, 
    	Y, 
    	BACK, 
    	GUIDE, 
    	START, 
    	LEFTSTICK, 
    	RIGHTSTICK, 
    	LEFTSHOULDER, 
    	RIGHTSHOULDER, 
    	DPAD_UP, 
    	DPAD_DOWN, 
    	DPAD_LEFT, 
    	DPAD_RIGHT, 
    	MISC1,              // Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button
    	PADDLE1,            // Xbox Elite paddle P1
    	PADDLE2,            // Xbox Elite paddle P3
    	PADDLE3,            // Xbox Elite paddle P2
    	PADDLE4,            // Xbox Elite paddle P4
    	TOUCHPAD,           // PS4/PS5 touchpad button
    	MAX, 
    }

    Related Procedures With Parameters

    GameControllerButtonBind ¶

    GameControllerButtonBind :: struct {
    	bindType: GameControllerBindType,
    	value:    struct #raw_union {
    		button: i32,
    		axis:   i32,
    		hat:    struct {
    			hat:      i32,
    			hat_mask: i32,
    		},
    	},
    }

    Related Procedures With Returns

    GameControllerType ¶

    GameControllerType :: enum i32 {
    	UNKNOWN             = 0, 
    	XBOX360, 
    	XBOXONE, 
    	PS3, 
    	PS4, 
    	NINTENDO_SWITCH_PRO, 
    	VIRTUAL, 
    	PS5, 
    	AMAZON_LUNA, 
    	GOOGLE_STADIA, 
    }

    Related Procedures With Returns

    GestureID ¶

    GestureID :: distinct i64

    HapticCondition ¶

    HapticCondition :: struct {
    	// Header 
    	type:        HapticType,
    	// *< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER,
    	// 	                         ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION 
    	direction:   HapticDirection,
    	// Replay 
    	length:      u32,
    	// *< Duration of the effect. 
    	delay:       u16,
    	// Trigger 
    	button:      u16,
    	// *< Button that triggers the effect. 
    	interval:    u16,
    	// Condition 
    	right_sat:   [3]u16,
    	// *< Level when joystick is to the positive side; max 0xFFFF. 
    	left_sat:    [3]u16,
    	// *< Level when joystick is to the negative side; max 0xFFFF. 
    	right_coeff: [3]i16,
    	// *< How fast to increase the force towards the positive side. 
    	left_coeff:  [3]i16,
    	// *< How fast to increase the force towards the negative side. 
    	deadband:    [3]u16,
    	// *< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. 
    	center:      [3]i16,
    }

    HapticConstant ¶

    HapticConstant :: struct {
    	// Header 
    	type:          HapticType,
    	// *< ::SDL_HAPTIC_CONSTANT 
    	direction:     HapticDirection,
    	// Replay 
    	length:        u32,
    	// *< Duration of the effect. 
    	delay:         u16,
    	// Trigger 
    	button:        u16,
    	// *< Button that triggers the effect. 
    	interval:      u16,
    	// Constant 
    	level:         i16,
    	// Envelope 
    	attack_length: u16,
    	// *< Duration of the attack. 
    	attack_level:  u16,
    	// *< Level at the start of the attack. 
    	fade_length:   u16,
    	// *< Duration of the fade. 
    	fade_level:    u16,
    }

    HapticCustom ¶

    HapticCustom :: struct {
    	// Header 
    	type:          HapticType,
    	// *< ::SDL_HAPTIC_CUSTOM 
    	direction:     HapticDirection,
    	// Replay 
    	length:        u32,
    	// *< Duration of the effect. 
    	delay:         u16,
    	// Trigger 
    	button:        u16,
    	// *< Button that triggers the effect. 
    	interval:      u16,
    	// Custom 
    	channels:      u8,
    	// *< Axes to use, minimum of one. 
    	period:        u16,
    	// *< Sample periods. 
    	samples:       u16,
    	// *< Amount of samples. 
    	data:          [^]u16,
    	// Envelope 
    	attack_length: u16,
    	// *< Duration of the attack. 
    	attack_level:  u16,
    	// *< Level at the start of the attack. 
    	fade_length:   u16,
    	// *< Duration of the fade. 
    	fade_level:    u16,
    }

    HapticDirection ¶

    HapticDirection :: struct {
    	type: HapticDirectionType,
    	// *< The type of encoding. 
    	dir:  [3]i32,
    }

    HapticDirectionType ¶

    HapticDirectionType :: enum u8 {
    	POLAR         = 0, 
    	CARTESIAN     = 1, 
    	SPHERICAL     = 2, 
    	STEERING_AXIS = 3, 
    }

    Related Constants

    HapticEffect ¶

    HapticEffect :: struct #raw_union {
    	// Common for all force feedback effects 
    	type:      HapticType,
    	// *< Effect type. 
    	constant:  HapticConstant,
    	// *< Constant effect. 
    	periodic:  HapticPeriodic,
    	// *< Periodic effect. 
    	condition: HapticCondition,
    	// *< Condition effect. 
    	ramp:      HapticRamp,
    	// *< Ramp effect. 
    	leftright: HapticLeftRight,
    	// *< Left/Right effect. 
    	custom:    HapticCustom,
    }

    Related Procedures With Parameters

    HapticLeftRight ¶

    HapticLeftRight :: struct {
    	// Header 
    	type:            HapticType,
    	// Replay 
    	length:          u32,
    	// Rumble 
    	large_magnitude: u16,
    	// *< Control of the large controller motor. 
    	small_magnitude: u16,
    }

    HapticPeriodic ¶

    HapticPeriodic :: struct {
    	// Header 
    	type:          HapticType,
    	// *< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT,
    	// 	                        ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or
    	// 	                        ::SDL_HAPTIC_SAWTOOTHDOWN 
    	direction:     HapticDirection,
    	// Replay 
    	length:        u32,
    	// *< Duration of the effect. 
    	delay:         u16,
    	// Trigger 
    	button:        u16,
    	// *< Button that triggers the effect. 
    	interval:      u16,
    	// Periodic 
    	period:        u16,
    	// *< Period of the wave. 
    	magnitude:     i16,
    	// *< Peak value; if negative, equivalent to 180 degrees extra phase shift. 
    	offset:        i16,
    	// *< Mean value of the wave. 
    	phase:         u16,
    	// Envelope 
    	attack_length: u16,
    	// *< Duration of the attack. 
    	attack_level:  u16,
    	// *< Level at the start of the attack. 
    	fade_length:   u16,
    	// *< Duration of the fade. 
    	fade_level:    u16,
    }

    HapticRamp ¶

    HapticRamp :: struct {
    	// Header 
    	type:          HapticType,
    	// *< ::SDL_HAPTIC_RAMP 
    	direction:     HapticDirection,
    	// Replay 
    	length:        u32,
    	// *< Duration of the effect. 
    	delay:         u16,
    	// Trigger 
    	button:        u16,
    	// *< Button that triggers the effect. 
    	interval:      u16,
    	// Ramp 
    	start:         i16,
    	// *< Beginning strength level. 
    	end:           i16,
    	// Envelope 
    	attack_length: u16,
    	// *< Duration of the attack. 
    	attack_level:  u16,
    	// *< Level at the start of the attack. 
    	fade_length:   u16,
    	// *< Duration of the fade. 
    	fade_level:    u16,
    }

    HapticType ¶

    HapticType :: enum u16 {
    	CONSTANT     = 1 << 0, 
    	SINE         = 1 << 1, 
    	LEFTRIGHT    = 1 << 2, 
    	TRIANGLE     = 1 << 3, 
    	SAWTOOTHUP   = 1 << 4, 
    	SAWTOOTHDOWN = 1 << 5, 
    	RAMP         = 1 << 6, 
    	SPRING       = 1 << 7, 
    	DAMPER       = 1 << 8, 
    	INERTIA      = 1 << 9, 
    	FRICTION     = 1 << 10, 
    	CUSTOM       = 1 << 11, 
    	GAIN         = 1 << 12, 
    	AUTOCENTER   = 1 << 13, 
    	STATUS       = 1 << 14, 
    	PAUSE        = 1 << 15, 
    }

    Related Constants

    HintCallback ¶

    HintCallback :: proc "c" (userdata: rawptr, name, oldValue, newValue: cstring)

    Related Procedures With Parameters

    HintPriority ¶

    HintPriority :: enum i32 {
    	DEFAULT, 
    	NORMAL, 
    	OVERRIDE, 
    }

    HitTest ¶

    HitTest :: proc "c" (win: ^Window, area: ^Point, data: rawptr) -> HitTestResult

    HitTestResult ¶

    HitTestResult :: enum i32 {
    	NORMAL,             // *< Region is normal. No special properties.
    	DRAGGABLE,          // *< Region can drag entire window.
    	RESIZE_TOPLEFT, 
    	RESIZE_TOP, 
    	RESIZE_TOPRIGHT, 
    	RESIZE_RIGHT, 
    	RESIZE_BOTTOMRIGHT, 
    	RESIZE_BOTTOM, 
    	RESIZE_BOTTOMLEFT, 
    	RESIZE_LEFT, 
    }

    ID3D11Device ¶

    ID3D11Device :: struct {}

    IDirect3DDevice9 ¶

    IDirect3DDevice9 :: struct {}

    InitFlag ¶

    InitFlag :: enum u32 {
    	TIMER          = 0x00, 
    	AUDIO          = 0x04, 
    	VIDEO          = 0x05, 
    	JOYSTICK       = 0x09, 
    	HAPTIC         = 0x0c, 
    	GAMECONTROLLER = 0x0d, 
    	EVENTS         = 0x0e, 
    	SENSOR         = 0x0f, 
    	NOPARACHUTE    = 0x14, 
    }

    JoyAxisEvent ¶

    JoyAxisEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERAXISMOTION 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	axis:      u8,
    	// *< The controller axis (SDL_GameControllerAxis) 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    	value:     i16,
    	// *< The axis value (range: -32768 to 32767) 
    	_:         u16,
    }

    JoyBallEvent ¶

    JoyBallEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_JOYBALLMOTION 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	ball:      u8,
    	// *< The joystick trackball index 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    	xrel:      i16,
    	// *< The relative motion in the X direction 
    	yrel:      i16,
    }

    JoyButtonEvent ¶

    JoyButtonEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	button:    u8,
    	// *< The controller button (SDL_GameControllerButton) 
    	state:     u8,
    	// *< ::SDL_PRESSED or ::SDL_RELEASED 
    	_:         u8,
    	_:         u8,
    }

    JoyDeviceEvent ¶

    JoyDeviceEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     i32,
    }

    JoyHatEvent ¶

    JoyHatEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_JOYHATMOTION 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     JoystickID,
    	// *< The joystick instance id 
    	hat:       u8,
    	// *< The joystick hat index 
    	value:     u8,
    	// *< The hat position value.
    	// 	                 *   \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP
    	// 	                 *   \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT
    	// 	                 *   \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN
    	// 	                 *
    	// 	                 *   Note that zero means the POV is centered.
    	_:         u8,
    	_:         u8,
    }

    JoystickGUID ¶

    JoystickGUID :: struct {
    	data: [16]u8,
    }

    Related Procedures With Parameters

    Related Procedures With Returns

    JoystickID ¶

    JoystickID :: distinct i32

    Related Procedures With Parameters

    Related Procedures With Returns

    JoystickPowerLevel ¶

    JoystickPowerLevel :: enum i32 {
    	UNKNOWN = -1, 
    	EMPTY,        // <= 5%
    	LOW,          // <= 20%
    	MEDIUM,       // <= 70%
    	FULL,         // <= 100%
    	WIRED, 
    	MAX, 
    }

    JoystickType ¶

    JoystickType :: enum i32 {
    	UNKNOWN, 
    	GAMECONTROLLER, 
    	WHEEL, 
    	ARCADE_STICK, 
    	FLIGHT_STICK, 
    	DANCE_PAD, 
    	GUITAR, 
    	DRUM_KIT, 
    	ARCADE_PAD, 
    	THROTTLE, 
    }

    Related Procedures With Returns

    KeyboardEvent ¶

    KeyboardEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_KEYDOWN or ::SDL_KEYUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with keyboard focus, if any 
    	state:     u8,
    	// *< ::SDL_PRESSED or ::SDL_RELEASED 
    	repeat:    u8,
    	// *< Non-zero if this is a key repeat 
    	_:         u8,
    	_:         u8,
    	keysym:    Keysym,
    }

    Keycode ¶

    Keycode :: enum i32 {
    	UNKNOWN            = 0, 
    	RETURN             = '\r', 
    	ESCAPE             = '\x1B', 
    	BACKSPACE          = '\b', 
    	TAB                = '\t', 
    	SPACE              = ' ', 
    	EXCLAIM            = '!', 
    	QUOTEDBL           = '"', 
    	HASH               = '#', 
    	PERCENT            = '%', 
    	DOLLAR             = '$', 
    	AMPERSAND          = '&', 
    	QUOTE              = '\'', 
    	LEFTPAREN          = '(', 
    	RIGHTPAREN         = ')', 
    	ASTERISK           = '*', 
    	PLUS               = '+', 
    	COMMA              = ',', 
    	MINUS              = '-', 
    	PERIOD             = '.', 
    	SLASH              = '/', 
    	NUM0               = '0', 
    	NUM1               = '1', 
    	NUM2               = '2', 
    	NUM3               = '3', 
    	NUM4               = '4', 
    	NUM5               = '5', 
    	NUM6               = '6', 
    	NUM7               = '7', 
    	NUM8               = '8', 
    	NUM9               = '9', 
    	COLON              = ':', 
    	SEMICOLON          = ';', 
    	LESS               = '<', 
    	EQUALS             = '=', 
    	GREATER            = '>', 
    	QUESTION           = '?', 
    	AT                 = '@', 
    	LEFTBRACKET        = '[', 
    	BACKSLASH          = '\\', 
    	RIGHTBRACKET       = ']', 
    	CARET              = '^', 
    	UNDERSCORE         = '_', 
    	BACKQUOTE          = '`', 
    	a                  = 'a', 
    	b                  = 'b', 
    	c                  = 'c', 
    	d                  = 'd', 
    	e                  = 'e', 
    	f                  = 'f', 
    	g                  = 'g', 
    	h                  = 'h', 
    	i                  = 'i', 
    	j                  = 'j', 
    	k                  = 'k', 
    	l                  = 'l', 
    	m                  = 'm', 
    	n                  = 'n', 
    	o                  = 'o', 
    	p                  = 'p', 
    	q                  = 'q', 
    	r                  = 'r', 
    	s                  = 's', 
    	t                  = 't', 
    	u                  = 'u', 
    	v                  = 'v', 
    	w                  = 'w', 
    	x                  = 'x', 
    	y                  = 'y', 
    	z                  = 'z', 
    	A                  = a, 
    	B                  = b, 
    	C                  = c, 
    	D                  = d, 
    	E                  = e, 
    	F                  = f, 
    	G                  = g, 
    	H                  = h, 
    	I                  = i, 
    	J                  = j, 
    	K                  = k, 
    	L                  = l, 
    	M                  = m, 
    	N                  = n, 
    	O                  = o, 
    	P                  = p, 
    	Q                  = q, 
    	R                  = r, 
    	S                  = s, 
    	T                  = t, 
    	U                  = u, 
    	V                  = v, 
    	W                  = w, 
    	X                  = x, 
    	Y                  = y, 
    	Z                  = z, 
    	CAPSLOCK           = auto_cast (Scancode.CAPSLOCK | SCANCODE_MASK), 
    	F1                 = auto_cast (Scancode.F1 | SCANCODE_MASK), 
    	F2                 = auto_cast (Scancode.F2 | SCANCODE_MASK), 
    	F3                 = auto_cast (Scancode.F3 | SCANCODE_MASK), 
    	F4                 = auto_cast (Scancode.F4 | SCANCODE_MASK), 
    	F5                 = auto_cast (Scancode.F5 | SCANCODE_MASK), 
    	F6                 = auto_cast (Scancode.F6 | SCANCODE_MASK), 
    	F7                 = auto_cast (Scancode.F7 | SCANCODE_MASK), 
    	F8                 = auto_cast (Scancode.F8 | SCANCODE_MASK), 
    	F9                 = auto_cast (Scancode.F9 | SCANCODE_MASK), 
    	F10                = auto_cast (Scancode.F10 | SCANCODE_MASK), 
    	F11                = auto_cast (Scancode.F11 | SCANCODE_MASK), 
    	F12                = auto_cast (Scancode.F12 | SCANCODE_MASK), 
    	PRINTSCREEN        = auto_cast (Scancode.PRINTSCREEN | SCANCODE_MASK), 
    	SCROLLLOCK         = auto_cast (Scancode.SCROLLLOCK | SCANCODE_MASK), 
    	PAUSE              = auto_cast (Scancode.PAUSE | SCANCODE_MASK), 
    	INSERT             = auto_cast (Scancode.INSERT | SCANCODE_MASK), 
    	HOME               = auto_cast (Scancode.HOME | SCANCODE_MASK), 
    	PAGEUP             = auto_cast (Scancode.PAGEUP | SCANCODE_MASK), 
    	DELETE             = '\x7F', 
    	END                = auto_cast (Scancode.END | SCANCODE_MASK), 
    	PAGEDOWN           = auto_cast (Scancode.PAGEDOWN | SCANCODE_MASK), 
    	RIGHT              = auto_cast (Scancode.RIGHT | SCANCODE_MASK), 
    	LEFT               = auto_cast (Scancode.LEFT | SCANCODE_MASK), 
    	DOWN               = auto_cast (Scancode.DOWN | SCANCODE_MASK), 
    	UP                 = auto_cast (Scancode.UP | SCANCODE_MASK), 
    	NUMLOCKCLEAR       = auto_cast (Scancode.NUMLOCKCLEAR | SCANCODE_MASK), 
    	KP_DIVIDE          = auto_cast (Scancode.KP_DIVIDE | SCANCODE_MASK), 
    	KP_MULTIPLY        = auto_cast (Scancode.KP_MULTIPLY | SCANCODE_MASK), 
    	KP_MINUS           = auto_cast (Scancode.KP_MINUS | SCANCODE_MASK), 
    	KP_PLUS            = auto_cast (Scancode.KP_PLUS | SCANCODE_MASK), 
    	KP_ENTER           = auto_cast (Scancode.KP_ENTER | SCANCODE_MASK), 
    	KP_1               = auto_cast (Scancode.KP_1 | SCANCODE_MASK), 
    	KP_2               = auto_cast (Scancode.KP_2 | SCANCODE_MASK), 
    	KP_3               = auto_cast (Scancode.KP_3 | SCANCODE_MASK), 
    	KP_4               = auto_cast (Scancode.KP_4 | SCANCODE_MASK), 
    	KP_5               = auto_cast (Scancode.KP_5 | SCANCODE_MASK), 
    	KP_6               = auto_cast (Scancode.KP_6 | SCANCODE_MASK), 
    	KP_7               = auto_cast (Scancode.KP_7 | SCANCODE_MASK), 
    	KP_8               = auto_cast (Scancode.KP_8 | SCANCODE_MASK), 
    	KP_9               = auto_cast (Scancode.KP_9 | SCANCODE_MASK), 
    	KP_0               = auto_cast (Scancode.KP_0 | SCANCODE_MASK), 
    	KP_PERIOD          = auto_cast (Scancode.KP_PERIOD | SCANCODE_MASK), 
    	APPLICATION        = auto_cast (Scancode.APPLICATION | SCANCODE_MASK), 
    	POWER              = auto_cast (Scancode.POWER | SCANCODE_MASK), 
    	KP_EQUALS          = auto_cast (Scancode.KP_EQUALS | SCANCODE_MASK), 
    	F13                = auto_cast (Scancode.F13 | SCANCODE_MASK), 
    	F14                = auto_cast (Scancode.F14 | SCANCODE_MASK), 
    	F15                = auto_cast (Scancode.F15 | SCANCODE_MASK), 
    	F16                = auto_cast (Scancode.F16 | SCANCODE_MASK), 
    	F17                = auto_cast (Scancode.F17 | SCANCODE_MASK), 
    	F18                = auto_cast (Scancode.F18 | SCANCODE_MASK), 
    	F19                = auto_cast (Scancode.F19 | SCANCODE_MASK), 
    	F20                = auto_cast (Scancode.F20 | SCANCODE_MASK), 
    	F21                = auto_cast (Scancode.F21 | SCANCODE_MASK), 
    	F22                = auto_cast (Scancode.F22 | SCANCODE_MASK), 
    	F23                = auto_cast (Scancode.F23 | SCANCODE_MASK), 
    	F24                = auto_cast (Scancode.F24 | SCANCODE_MASK), 
    	EXECUTE            = auto_cast (Scancode.EXECUTE | SCANCODE_MASK), 
    	HELP               = auto_cast (Scancode.HELP | SCANCODE_MASK), 
    	MENU               = auto_cast (Scancode.MENU | SCANCODE_MASK), 
    	SELECT             = auto_cast (Scancode.SELECT | SCANCODE_MASK), 
    	STOP               = auto_cast (Scancode.STOP | SCANCODE_MASK), 
    	AGAIN              = auto_cast (Scancode.AGAIN | SCANCODE_MASK), 
    	UNDO               = auto_cast (Scancode.UNDO | SCANCODE_MASK), 
    	CUT                = auto_cast (Scancode.CUT | SCANCODE_MASK), 
    	COPY               = auto_cast (Scancode.COPY | SCANCODE_MASK), 
    	PASTE              = auto_cast (Scancode.PASTE | SCANCODE_MASK), 
    	FIND               = auto_cast (Scancode.FIND | SCANCODE_MASK), 
    	MUTE               = auto_cast (Scancode.MUTE | SCANCODE_MASK), 
    	VOLUMEUP           = auto_cast (Scancode.VOLUMEUP | SCANCODE_MASK), 
    	VOLUMEDOWN         = auto_cast (Scancode.VOLUMEDOWN | SCANCODE_MASK), 
    	KP_COMMA           = auto_cast (Scancode.KP_COMMA | SCANCODE_MASK), 
    	KP_EQUALSAS400     = auto_cast (Scancode.KP_EQUALSAS400 | SCANCODE_MASK), 
    	ALTERASE           = auto_cast (Scancode.ALTERASE | SCANCODE_MASK), 
    	SYSREQ             = auto_cast (Scancode.SYSREQ | SCANCODE_MASK), 
    	CANCEL             = auto_cast (Scancode.CANCEL | SCANCODE_MASK), 
    	CLEAR              = auto_cast (Scancode.CLEAR | SCANCODE_MASK), 
    	PRIOR              = auto_cast (Scancode.PRIOR | SCANCODE_MASK), 
    	RETURN2            = auto_cast (Scancode.RETURN2 | SCANCODE_MASK), 
    	SEPARATOR          = auto_cast (Scancode.SEPARATOR | SCANCODE_MASK), 
    	OUT                = auto_cast (Scancode.OUT | SCANCODE_MASK), 
    	OPER               = auto_cast (Scancode.OPER | SCANCODE_MASK), 
    	CLEARAGAIN         = auto_cast (Scancode.CLEARAGAIN | SCANCODE_MASK), 
    	CRSEL              = auto_cast (Scancode.CRSEL | SCANCODE_MASK), 
    	EXSEL              = auto_cast (Scancode.EXSEL | SCANCODE_MASK), 
    	KP_00              = auto_cast (Scancode.KP_00 | SCANCODE_MASK), 
    	KP_000             = auto_cast (Scancode.KP_000 | SCANCODE_MASK), 
    	THOUSANDSSEPARATOR = auto_cast (Scancode.THOUSANDSSEPARATOR | SCANCODE_MASK), 
    	DECIMALSEPARATOR   = auto_cast (Scancode.DECIMALSEPARATOR | SCANCODE_MASK), 
    	CURRENCYUNIT       = auto_cast (Scancode.CURRENCYUNIT | SCANCODE_MASK), 
    	CURRENCYSUBUNIT    = auto_cast (Scancode.CURRENCYSUBUNIT | SCANCODE_MASK), 
    	KP_LEFTPAREN       = auto_cast (Scancode.KP_LEFTPAREN | SCANCODE_MASK), 
    	KP_RIGHTPAREN      = auto_cast (Scancode.KP_RIGHTPAREN | SCANCODE_MASK), 
    	KP_LEFTBRACE       = auto_cast (Scancode.KP_LEFTBRACE | SCANCODE_MASK), 
    	KP_RIGHTBRACE      = auto_cast (Scancode.KP_RIGHTBRACE | SCANCODE_MASK), 
    	KP_TAB             = auto_cast (Scancode.KP_TAB | SCANCODE_MASK), 
    	KP_BACKSPACE       = auto_cast (Scancode.KP_BACKSPACE | SCANCODE_MASK), 
    	KP_A               = auto_cast (Scancode.KP_A | SCANCODE_MASK), 
    	KP_B               = auto_cast (Scancode.KP_B | SCANCODE_MASK), 
    	KP_C               = auto_cast (Scancode.KP_C | SCANCODE_MASK), 
    	KP_D               = auto_cast (Scancode.KP_D | SCANCODE_MASK), 
    	KP_E               = auto_cast (Scancode.KP_E | SCANCODE_MASK), 
    	KP_F               = auto_cast (Scancode.KP_F | SCANCODE_MASK), 
    	KP_XOR             = auto_cast (Scancode.KP_XOR | SCANCODE_MASK), 
    	KP_POWER           = auto_cast (Scancode.KP_POWER | SCANCODE_MASK), 
    	KP_PERCENT         = auto_cast (Scancode.KP_PERCENT | SCANCODE_MASK), 
    	KP_LESS            = auto_cast (Scancode.KP_LESS | SCANCODE_MASK), 
    	KP_GREATER         = auto_cast (Scancode.KP_GREATER | SCANCODE_MASK), 
    	KP_AMPERSAND       = auto_cast (Scancode.KP_AMPERSAND | SCANCODE_MASK), 
    	KP_DBLAMPERSAND    = auto_cast (Scancode.KP_DBLAMPERSAND | SCANCODE_MASK), 
    	KP_VERTICALBAR     = auto_cast (Scancode.KP_VERTICALBAR | SCANCODE_MASK), 
    	KP_DBLVERTICALBAR  = auto_cast (Scancode.KP_DBLVERTICALBAR | SCANCODE_MASK), 
    	KP_COLON           = auto_cast (Scancode.KP_COLON | SCANCODE_MASK), 
    	KP_HASH            = auto_cast (Scancode.KP_HASH | SCANCODE_MASK), 
    	KP_SPACE           = auto_cast (Scancode.KP_SPACE | SCANCODE_MASK), 
    	KP_AT              = auto_cast (Scancode.KP_AT | SCANCODE_MASK), 
    	KP_EXCLAM          = auto_cast (Scancode.KP_EXCLAM | SCANCODE_MASK), 
    	KP_MEMSTORE        = auto_cast (Scancode.KP_MEMSTORE | SCANCODE_MASK), 
    	KP_MEMRECALL       = auto_cast (Scancode.KP_MEMRECALL | SCANCODE_MASK), 
    	KP_MEMCLEAR        = auto_cast (Scancode.KP_MEMCLEAR | SCANCODE_MASK), 
    	KP_MEMADD          = auto_cast (Scancode.KP_MEMADD | SCANCODE_MASK), 
    	KP_MEMSUBTRACT     = auto_cast (Scancode.KP_MEMSUBTRACT | SCANCODE_MASK), 
    	KP_MEMMULTIPLY     = auto_cast (Scancode.KP_MEMMULTIPLY | SCANCODE_MASK), 
    	KP_MEMDIVIDE       = auto_cast (Scancode.KP_MEMDIVIDE | SCANCODE_MASK), 
    	KP_PLUSMINUS       = auto_cast (Scancode.KP_PLUSMINUS | SCANCODE_MASK), 
    	KP_CLEAR           = auto_cast (Scancode.KP_CLEAR | SCANCODE_MASK), 
    	KP_CLEARENTRY      = auto_cast (Scancode.KP_CLEARENTRY | SCANCODE_MASK), 
    	KP_BINARY          = auto_cast (Scancode.KP_BINARY | SCANCODE_MASK), 
    	KP_OCTAL           = auto_cast (Scancode.KP_OCTAL | SCANCODE_MASK), 
    	KP_DECIMAL         = auto_cast (Scancode.KP_DECIMAL | SCANCODE_MASK), 
    	KP_HEXADECIMAL     = auto_cast (Scancode.KP_HEXADECIMAL | SCANCODE_MASK), 
    	LCTRL              = auto_cast (Scancode.LCTRL | SCANCODE_MASK), 
    	LSHIFT             = auto_cast (Scancode.LSHIFT | SCANCODE_MASK), 
    	LALT               = auto_cast (Scancode.LALT | SCANCODE_MASK), 
    	LGUI               = auto_cast (Scancode.LGUI | SCANCODE_MASK), 
    	RCTRL              = auto_cast (Scancode.RCTRL | SCANCODE_MASK), 
    	RSHIFT             = auto_cast (Scancode.RSHIFT | SCANCODE_MASK), 
    	RALT               = auto_cast (Scancode.RALT | SCANCODE_MASK), 
    	RGUI               = auto_cast (Scancode.RGUI | SCANCODE_MASK), 
    	MODE               = auto_cast (Scancode.MODE | SCANCODE_MASK), 
    	AUDIONEXT          = auto_cast (Scancode.AUDIONEXT | SCANCODE_MASK), 
    	AUDIOPREV          = auto_cast (Scancode.AUDIOPREV | SCANCODE_MASK), 
    	AUDIOSTOP          = auto_cast (Scancode.AUDIOSTOP | SCANCODE_MASK), 
    	AUDIOPLAY          = auto_cast (Scancode.AUDIOPLAY | SCANCODE_MASK), 
    	AUDIOMUTE          = auto_cast (Scancode.AUDIOMUTE | SCANCODE_MASK), 
    	MEDIASELECT        = auto_cast (Scancode.MEDIASELECT | SCANCODE_MASK), 
    	WWW                = auto_cast (Scancode.WWW | SCANCODE_MASK), 
    	MAIL               = auto_cast (Scancode.MAIL | SCANCODE_MASK), 
    	CALCULATOR         = auto_cast (Scancode.CALCULATOR | SCANCODE_MASK), 
    	COMPUTER           = auto_cast (Scancode.COMPUTER | SCANCODE_MASK), 
    	AC_SEARCH          = auto_cast (Scancode.AC_SEARCH | SCANCODE_MASK), 
    	AC_HOME            = auto_cast (Scancode.AC_HOME | SCANCODE_MASK), 
    	AC_BACK            = auto_cast (Scancode.AC_BACK | SCANCODE_MASK), 
    	AC_FORWARD         = auto_cast (Scancode.AC_FORWARD | SCANCODE_MASK), 
    	AC_STOP            = auto_cast (Scancode.AC_STOP | SCANCODE_MASK), 
    	AC_REFRESH         = auto_cast (Scancode.AC_REFRESH | SCANCODE_MASK), 
    	AC_BOOKMARKS       = auto_cast (Scancode.AC_BOOKMARKS | SCANCODE_MASK), 
    	BRIGHTNESSDOWN     = auto_cast (Scancode.BRIGHTNESSDOWN | SCANCODE_MASK), 
    	BRIGHTNESSUP       = auto_cast (Scancode.BRIGHTNESSUP | SCANCODE_MASK), 
    	DISPLAYSWITCH      = auto_cast (Scancode.DISPLAYSWITCH | SCANCODE_MASK), 
    	KBDILLUMTOGGLE     = auto_cast (Scancode.KBDILLUMTOGGLE | SCANCODE_MASK), 
    	KBDILLUMDOWN       = auto_cast (Scancode.KBDILLUMDOWN | SCANCODE_MASK), 
    	KBDILLUMUP         = auto_cast (Scancode.KBDILLUMUP | SCANCODE_MASK), 
    	EJECT              = auto_cast (Scancode.EJECT | SCANCODE_MASK), 
    	SLEEP              = auto_cast (Scancode.SLEEP | SCANCODE_MASK), 
    	APP1               = auto_cast (Scancode.APP1 | SCANCODE_MASK), 
    	APP2               = auto_cast (Scancode.APP2 | SCANCODE_MASK), 
    	AUDIOREWIND        = auto_cast (Scancode.AUDIOREWIND | SCANCODE_MASK), 
    	AUDIOFASTFORWARD   = auto_cast (Scancode.AUDIOFASTFORWARD | SCANCODE_MASK), 
    }

    Related Procedures With Parameters

    Related Procedures With Returns

    KeymodFlag ¶

    KeymodFlag :: enum u16 {
    	LSHIFT   = 0x0, 
    	RSHIFT   = 0x1, 
    	LCTRL    = 0x6, 
    	RCTRL    = 0x7, 
    	LALT     = 0x8, 
    	RALT     = 0x9, 
    	LGUI     = 0xa, 
    	RGUI     = 0xb, 
    	NUM      = 0xc, 
    	CAPS     = 0xd, 
    	MODE     = 0xe, 
    	RESERVED = 0xf, 
    }

    Keysym ¶

    Keysym :: struct {
    	scancode: Scancode,
    	// *< SDL physical key code - see ::SDL_Scancode for details 
    	sym:      Keycode,
    	// *< SDL virtual key code - see ::SDL_Keycode for details 
    	mod:      Keymod,
    	// *< current key modifiers 
    	unused:   u32,
    }

    Locale ¶

    Locale :: struct {
    	language: cstring,
    	// *< A language name, like "en" for English. 
    	country:  cstring,
    }

    LogCategory ¶

    LogCategory :: enum i32 {
    	APPLICATION, 
    	ERROR, 
    	ASSERT, 
    	SYSTEM, 
    	AUDIO, 
    	VIDEO, 
    	RENDER, 
    	INPUT, 
    	TEST, 
    	// Reserved for future SDL library use 
    	RESERVED1, 
    	RESERVED2, 
    	RESERVED3, 
    	RESERVED4, 
    	RESERVED5, 
    	RESERVED6, 
    	RESERVED7, 
    	RESERVED8, 
    	RESERVED9, 
    	RESERVED10, 
    	// Beyond this point is reserved for application use, e.g.
    	// 	enum {
    	// 		MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM,
    	// 		MYAPP_CATEGORY_AWESOME2,
    	// 		MYAPP_CATEGORY_AWESOME3,
    	// 		...
    	// 	};
    	CUSTOM, 
    }

    LogOutputFunction ¶

    LogOutputFunction :: proc "c" (userdata: rawptr, category: LogCategory, priority: LogPriority, message: cstring)

    Related Procedures With Parameters

    LogPriority ¶

    LogPriority :: enum i32 {
    	DEFAULT  = 0, // CUSTOM ONE
    	VERBOSE  = 1, 
    	DEBUG, 
    	INFO, 
    	WARN, 
    	ERROR, 
    	CRITICAL, 
    	NUM, 
    }

    Related Procedures With Parameters

    MessageBoxButtonData ¶

    MessageBoxButtonData :: struct {
    	flags:    MessageBoxButtonFlags,
    	// *< ::SDL_MessageBoxButtonFlags 
    	buttonid: i32,
    	// *< User defined button id (value returned via SDL_ShowMessageBox) 
    	text:     cstring,
    }

    MessageBoxButtonFlag ¶

    MessageBoxButtonFlag :: enum u32 {
    	RETURNKEY_DEFAULT = 0, // *< Marks the default button when return is hit
    	ESCAPEKEY_DEFAULT = 1, // *< Marks the default button when escape is hit
    }

    MessageBoxColor ¶

    MessageBoxColor :: struct {
    	r: u8,
    	g: u8,
    	b: u8,
    }

    MessageBoxColorType ¶

    MessageBoxColorType :: enum i32 {
    	BACKGROUND, 
    	TEXT, 
    	BUTTON_BORDER, 
    	BUTTON_BACKGROUND, 
    	BUTTON_SELECTED, 
    }

    MessageBoxData ¶

    MessageBoxData :: struct {
    	flags:       MessageBoxFlags,
    	// *< ::SDL_MessageBoxFlags 
    	window:      ^Window,
    	// *< Parent window, can be NULL 
    	title:       cstring,
    	// *< UTF-8 title 
    	message:     cstring,
    	// *< UTF-8 message text 
    	numbuttons:  i32,
    	buttons:     [^]MessageBoxButtonData,
    	colorScheme: ^MessageBoxColorScheme,
    }

    MessageBoxFlag ¶

    MessageBoxFlag :: enum u32 {
    	ERROR                 = 4, // *< error dialog
    	WARNING               = 5, // *< warning dialog
    	INFORMATION           = 6, // *< informational dialog
    	BUTTONS_LEFT_TO_RIGHT = 7, // *< buttons placed left to right
    	BUTTONS_RIGHT_TO_LEFT = 8, // *< buttons placed right to left
    }

    MetalView ¶

    MetalView :: distinct rawptr

    Related Procedures With Parameters

    MouseButtonEvent ¶

    MouseButtonEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with mouse focus, if any 
    	which:     u32,
    	// *< The mouse instance id, or SDL_TOUCH_MOUSEID 
    	button:    u8,
    	// *< The mouse button index 
    	state:     u8,
    	// *< ::SDL_PRESSED or ::SDL_RELEASED 
    	clicks:    u8,
    	// *< 1 for single-click, 2 for double-click, etc. 
    	_:         u8,
    	x:         i32,
    	// *< X coordinate, relative to window 
    	y:         i32,
    }

    MouseMotionEvent ¶

    MouseMotionEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_MOUSEMOTION 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with mouse focus, if any 
    	which:     u32,
    	// *< The mouse instance id, or SDL_TOUCH_MOUSEID 
    	state:     u32,
    	// *< The current button state 
    	x:         i32,
    	// *< X coordinate, relative to window 
    	y:         i32,
    	// *< Y coordinate, relative to window 
    	xrel:      i32,
    	// *< The relative motion in the X direction 
    	yrel:      i32,
    }

    MouseWheelDirection ¶

    MouseWheelDirection :: enum i32 {
    	NORMAL,  // *< The scroll direction is normal
    	FLIPPED, // *< The scroll direction is flipped / natural
    }

    MouseWheelEvent ¶

    MouseWheelEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_MOUSEWHEEL 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with mouse focus, if any 
    	which:     u32,
    	// *< The mouse instance id, or SDL_TOUCH_MOUSEID 
    	x:         i32,
    	// *< The amount scrolled horizontally, positive to the right and negative to the left 
    	y:         i32,
    	// *< The amount scrolled vertically, positive away from the user and negative toward the user 
    	direction: u32,
    }

    MultiGestureEvent ¶

    MultiGestureEvent :: struct {
    	type:       EventType,
    	// *< ::SDL_MULTIGESTURE 
    	timestamp:  u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	touchId:    TouchID,
    	// *< The touch device id 
    	dTheta:     f32,
    	dDist:      f32,
    	x:          f32,
    	y:          f32,
    	numFingers: u16,
    	padding:    u16,
    }

    OSEvent ¶

    OSEvent :: struct {
    	type:      EventType,
    	timestamp: u32,
    }

    Palette ¶

    Palette :: struct {
    	ncolors:  i32,
    	colors:   ^Color,
    	version:  u32,
    	refcount: i32,
    }

    Related Procedures With Parameters

    PixelFormat ¶

    PixelFormat :: struct {
    	format:        u32,
    	palette:       ^Palette,
    	BitsPerPixel:  u8,
    	BytesPerPixel: u8,
    	padding:       [2]u8,
    	Rmask:         u32,
    	Gmask:         u32,
    	Bmask:         u32,
    	Amask:         u32,
    	Rloss:         u8,
    	Gloss:         u8,
    	Bloss:         u8,
    	Aloss:         u8,
    	Rshift:        u8,
    	Gshift:        u8,
    	Bshift:        u8,
    	Ashift:        u8,
    	refcount:      i32,
    	next:          ^PixelFormat,
    }

    Related Procedures With Parameters

    PixelFormatEnum ¶

    PixelFormatEnum :: enum u32 {
    	UNKNOWN      = 0, 
    	INDEX1LSB    = 1 << 28 | PIXELTYPE_INDEX1 << 24 | BITMAPORDER_4321 << 20 | 0 << 16 | 1 << 8 | 0 << 0, 
    	INDEX1MSB    = 1 << 28 | PIXELTYPE_INDEX1 << 24 | BITMAPORDER_1234 << 20 | 0 << 16 | 1 << 8 | 0 << 0, 
    	INDEX4LSB    = 1 << 28 | PIXELTYPE_INDEX4 << 24 | BITMAPORDER_4321 << 20 | 0 << 16 | 4 << 8 | 0 << 0, 
    	INDEX4MSB    = 1 << 28 | PIXELTYPE_INDEX4 << 24 | BITMAPORDER_1234 << 20 | 0 << 16 | 4 << 8 | 0 << 0, 
    	INDEX8       = 1 << 28 | PIXELTYPE_INDEX8 << 24 | 0 << 20 | 0 << 16 | 8 << 8 | 1 << 0, 
    	RGB332       = 1 << 28 | PIXELTYPE_PACKED8 << 24 | PACKEDORDER_XRGB << 20 | PACKEDLAYOUT_332 << 16 | 8 << 8 | 1 << 0, 
    	XRGB4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XRGB << 20 | PACKEDLAYOUT_4444 << 16 | 12 << 8 | 2 << 0, 
    	RGB444       = XRGB4444, 
    	XBGR4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XBGR << 20 | PACKEDLAYOUT_4444 << 16 | 12 << 8 | 2 << 0, 
    	BGR444       = XBGR4444, 
    	XRGB1555     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XRGB << 20 | PACKEDLAYOUT_1555 << 16 | 15 << 8 | 2 << 0, 
    	RGB555       = XRGB1555, 
    	XBGR1555     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XBGR << 20 | PACKEDLAYOUT_1555 << 16 | 15 << 8 | 2 << 0, 
    	BGR555       = XBGR1555, 
    	ARGB4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_ARGB << 20 | PACKEDLAYOUT_4444 << 16 | 16 << 8 | 2 << 0, 
    	RGBA4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_RGBA << 20 | PACKEDLAYOUT_4444 << 16 | 16 << 8 | 2 << 0, 
    	ABGR4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_ABGR << 20 | PACKEDLAYOUT_4444 << 16 | 16 << 8 | 2 << 0, 
    	BGRA4444     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_BGRA << 20 | PACKEDLAYOUT_4444 << 16 | 16 << 8 | 2 << 0, 
    	ARGB1555     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_ARGB << 20 | PACKEDLAYOUT_1555 << 16 | 16 << 8 | 2 << 0, 
    	RGBA5551     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_RGBA << 20 | PACKEDLAYOUT_5551 << 16 | 16 << 8 | 2 << 0, 
    	ABGR1555     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_ABGR << 20 | PACKEDLAYOUT_1555 << 16 | 16 << 8 | 2 << 0, 
    	BGRA5551     = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_BGRA << 20 | PACKEDLAYOUT_5551 << 16 | 16 << 8 | 2 << 0, 
    	RGB565       = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XRGB << 20 | PACKEDLAYOUT_565 << 16 | 16 << 8 | 2 << 0, 
    	BGR565       = 1 << 28 | PIXELTYPE_PACKED16 << 24 | PACKEDORDER_XBGR << 20 | PACKEDLAYOUT_565 << 16 | 16 << 8 | 2 << 0, 
    	RGB24        = 1 << 28 | PIXELTYPE_ARRAYU8 << 24 | ARRAYORDER_RGB << 20 | 0 << 16 | 24 << 8 | 3 << 0, 
    	BGR24        = 1 << 28 | PIXELTYPE_ARRAYU8 << 24 | ARRAYORDER_BGR << 20 | 0 << 16 | 24 << 8 | 3 << 0, 
    	XRGB8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_XRGB << 20 | PACKEDLAYOUT_8888 << 16 | 24 << 8 | 4 << 0, 
    	RGB888       = XRGB8888, 
    	RGBX8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_RGBX << 20 | PACKEDLAYOUT_8888 << 16 | 24 << 8 | 4 << 0, 
    	XBGR8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_XBGR << 20 | PACKEDLAYOUT_8888 << 16 | 24 << 8 | 4 << 0, 
    	BGR888       = XBGR8888, 
    	BGRX8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_BGRX << 20 | PACKEDLAYOUT_8888 << 16 | 24 << 8 | 4 << 0, 
    	ARGB8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_ARGB << 20 | PACKEDLAYOUT_8888 << 16 | 32 << 8 | 4 << 0, 
    	RGBA8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_RGBA << 20 | PACKEDLAYOUT_8888 << 16 | 32 << 8 | 4 << 0, 
    	ABGR8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_ABGR << 20 | PACKEDLAYOUT_8888 << 16 | 32 << 8 | 4 << 0, 
    	BGRA8888     = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_BGRA << 20 | PACKEDLAYOUT_8888 << 16 | 32 << 8 | 4 << 0, 
    	ARGB2101010  = 1 << 28 | PIXELTYPE_PACKED32 << 24 | PACKEDORDER_ARGB << 20 | PACKEDLAYOUT_2101010 << 16 | 32 << 8 | 4 << 0, 
    	// Aliases for RGBA byte arrays of color data, for the current platform 
    	RGBA32       = RGBA8888 when ODIN_ENDIAN == .Big else ABGR8888, 
    	ARGB32       = ARGB8888 when ODIN_ENDIAN == .Big else BGRA8888, 
    	BGRA32       = BGRA8888 when ODIN_ENDIAN == .Big else ARGB8888, 
    	ABGR32       = ABGR8888 when ODIN_ENDIAN == .Big else RGBA8888, 
    	YV12         = 'Y' << 0 | 'V' << 8 | '1' << 16 | '2' << 24, 
    	IYUV         = 'I' << 0 | 'Y' << 8 | 'U' << 16 | 'V' << 24, 
    	YUY2         = 'Y' << 0 | 'U' << 8 | 'Y' << 16 | '2' << 24, 
    	UYVY         = 'U' << 0 | 'Y' << 8 | 'V' << 16 | 'Y' << 24, 
    	YVYU         = 'Y' << 0 | 'V' << 8 | 'Y' << 16 | 'U' << 24, 
    	NV12         = 'N' << 0 | 'V' << 8 | '1' << 16 | '2' << 24, 
    	NV21         = 'N' << 0 | 'V' << 8 | '2' << 16 | '1' << 24, 
    	EXTERNAL_OES = 'O' << 0 | 'E' << 8 | 'S' << 16 | ' ' << 24, 
    }

    Related Procedures With Parameters

    Point ¶

    Point :: struct {
    	x: i32,
    	y: i32,
    }

    Related Procedures With Parameters

    PowerState ¶

    PowerState :: enum i32 {
    	UNKNOWN,    // *< cannot determine power status
    	ON_BATTERY, // *< Not plugged in, running on the battery
    	NO_BATTERY, // *< Plugged in, no battery available
    	CHARGING,   // *< Plugged in, charging battery
    	CHARGED,    // *< Plugged in, battery charged
    }

    QuitEvent ¶

    QuitEvent :: struct {
    	type:      EventType,
    	timestamp: u32,
    }

    RWops ¶

    RWops :: struct {
    	size:   proc "c" (ctx: ^RWops) -> i64,
    	seek:   proc "c" (ctx: ^RWops, offset: i64, whence: i32) -> i64,
    	read:   proc "c" (ctx: ^RWops, ptr: rawptr, size: uint, maxnum: uint) -> uint,
    	write:  proc "c" (ctx: ^RWops, ptr: rawptr, size: uint, num: uint) -> uint,
    	close:  proc "c" (ctx: ^RWops) -> i32,
    	type:   u32,
    	hidden: struct #raw_union {
    		androidio: struct {
    			asset: rawptr,
    		},
    		windowsio: struct {
    			append: bool,
    			h:      rawptr,
    			buffer: struct {
    				data: rawptr,
    				size: uint,
    				left: uint,
    			},
    		},
    		vitaio:    struct {
    			h:      i32,
    			buffer: struct {
    				data: rawptr,
    				size: uint,
    				left: uint,
    			},
    		},
    		stdio:     struct {
    			autoclose: bool,
    			fp:        rawptr,
    		},
    		mem:       struct {
    			base: ^u8,
    			here: ^u8,
    			stop: ^u8,
    		},
    		unknown:   struct {
    			data1: rawptr,
    			data2: rawptr,
    		},
    	},
    }
     

    This is the read/write operation structure -- very basic.

    Related Procedures With Parameters

    Related Procedures With Returns

    RendererFlag ¶

    RendererFlag :: enum u32 {
    	SOFTWARE      = 0, // *< The renderer is a software fallback
    	ACCELERATED   = 1, // *< The renderer uses hardware acceleration
    	PRESENTVSYNC  = 2, // *< Present is synchronized with the refresh rate
    	TARGETTEXTURE = 3, // *< The renderer supports rendering to texture
    }

    RendererFlip ¶

    RendererFlip :: enum i32 {
    	NONE       = 0x00000000, // *< Do not flip
    	HORIZONTAL = 0x00000001, // *< flip horizontally
    	VERTICAL   = 0x00000002, // *< flip vertically
    }
     

    Flip constants for SDL_RenderCopyEx

    Related Procedures With Parameters

    RendererInfo ¶

    RendererInfo :: struct {
    	name:                cstring,
    	// *< The name of the renderer 
    	flags:               RendererFlags,
    	// *< Supported ::SDL_RendererFlags 
    	num_texture_formats: u32,
    	// *< The number of available texture formats 
    	texture_formats:     [16]u32,
    	// *< The available texture formats 
    	max_texture_width:   i32,
    	// *< The maximum texture width 
    	max_texture_height:  i32,
    }
    External examples sdl2/microui

    Related Procedures With Parameters

    SYSWM_TYPE ¶

    SYSWM_TYPE :: enum i32 {
    	UNKNOWN, 
    	WINDOWS, 
    	X11, 
    	DIRECTFB, 
    	COCOA, 
    	UIKIT, 
    	WAYLAND, 
    	MIR,      // no longer available, left for API/ABI compatibility. Remove in 2.1!
    	WINRT, 
    	ANDROID, 
    	VIVANTE, 
    	OS2, 
    	HAIKU, 
    	KMSDRM, 
    }

    ScaleMode ¶

    ScaleMode :: enum i32 {
    	Nearest, // *< nearest pixel sampling
    	Linear,  // *< linear filtering
    	Best,    // *< anisotropic filtering
    }
     

    The scaling mode for a texture.

    Related Procedures With Parameters

    Scancode ¶

    Scancode :: enum i32 {
    	UNKNOWN            = 0, 
    	A                  = 4, 
    	B                  = 5, 
    	C                  = 6, 
    	D                  = 7, 
    	E                  = 8, 
    	F                  = 9, 
    	G                  = 10, 
    	H                  = 11, 
    	I                  = 12, 
    	J                  = 13, 
    	K                  = 14, 
    	L                  = 15, 
    	M                  = 16, 
    	N                  = 17, 
    	O                  = 18, 
    	P                  = 19, 
    	Q                  = 20, 
    	R                  = 21, 
    	S                  = 22, 
    	T                  = 23, 
    	U                  = 24, 
    	V                  = 25, 
    	W                  = 26, 
    	X                  = 27, 
    	Y                  = 28, 
    	Z                  = 29, 
    	NUM1               = 30, 
    	NUM2               = 31, 
    	NUM3               = 32, 
    	NUM4               = 33, 
    	NUM5               = 34, 
    	NUM6               = 35, 
    	NUM7               = 36, 
    	NUM8               = 37, 
    	NUM9               = 38, 
    	NUM0               = 39, 
    	RETURN             = 40, 
    	ESCAPE             = 41, 
    	BACKSPACE          = 42, 
    	TAB                = 43, 
    	SPACE              = 44, 
    	MINUS              = 45, 
    	EQUALS             = 46, 
    	LEFTBRACKET        = 47, 
    	RIGHTBRACKET       = 48, 
    	BACKSLASH          = 49, 
    	NONUSHASH          = 50, 
    	SEMICOLON          = 51, 
    	APOSTROPHE         = 52, 
    	GRAVE              = 53, 
    	COMMA              = 54, 
    	PERIOD             = 55, 
    	SLASH              = 56, 
    	CAPSLOCK           = 57, 
    	F1                 = 58, 
    	F2                 = 59, 
    	F3                 = 60, 
    	F4                 = 61, 
    	F5                 = 62, 
    	F6                 = 63, 
    	F7                 = 64, 
    	F8                 = 65, 
    	F9                 = 66, 
    	F10                = 67, 
    	F11                = 68, 
    	F12                = 69, 
    	PRINTSCREEN        = 70, 
    	SCROLLLOCK         = 71, 
    	PAUSE              = 72, 
    	INSERT             = 73, 
    	HOME               = 74, 
    	PAGEUP             = 75, 
    	DELETE             = 76, 
    	END                = 77, 
    	PAGEDOWN           = 78, 
    	RIGHT              = 79, 
    	LEFT               = 80, 
    	DOWN               = 81, 
    	UP                 = 82, 
    	NUMLOCKCLEAR       = 83, 
    	KP_DIVIDE          = 84, 
    	KP_MULTIPLY        = 85, 
    	KP_MINUS           = 86, 
    	KP_PLUS            = 87, 
    	KP_ENTER           = 88, 
    	KP_1               = 89, 
    	KP_2               = 90, 
    	KP_3               = 91, 
    	KP_4               = 92, 
    	KP_5               = 93, 
    	KP_6               = 94, 
    	KP_7               = 95, 
    	KP_8               = 96, 
    	KP_9               = 97, 
    	KP_0               = 98, 
    	KP_PERIOD          = 99, 
    	NONUSBACKSLASH     = 100, 
    	APPLICATION        = 101, 
    	POWER              = 102, 
    	KP_EQUALS          = 103, 
    	F13                = 104, 
    	F14                = 105, 
    	F15                = 106, 
    	F16                = 107, 
    	F17                = 108, 
    	F18                = 109, 
    	F19                = 110, 
    	F20                = 111, 
    	F21                = 112, 
    	F22                = 113, 
    	F23                = 114, 
    	F24                = 115, 
    	EXECUTE            = 116, 
    	HELP               = 117, 
    	MENU               = 118, 
    	SELECT             = 119, 
    	STOP               = 120, 
    	AGAIN              = 121, 
    	UNDO               = 122, 
    	CUT                = 123, 
    	COPY               = 124, 
    	PASTE              = 125, 
    	FIND               = 126, 
    	MUTE               = 127, 
    	VOLUMEUP           = 128, 
    	VOLUMEDOWN         = 129, 
    	// not sure whether there's a reason to enable these 
    	//     LOCKINGCAPSLOCK = 130,  
    	//     LOCKINGNUMLOCK = 131, 
    	//     LOCKINGSCROLLLOCK = 132, 
    	KP_COMMA           = 133, 
    	KP_EQUALSAS400     = 134, 
    	INTERNATIONAL1     = 135, 
    	INTERNATIONAL2     = 136, 
    	INTERNATIONAL3     = 137, 
    	INTERNATIONAL4     = 138, 
    	INTERNATIONAL5     = 139, 
    	INTERNATIONAL6     = 140, 
    	INTERNATIONAL7     = 141, 
    	INTERNATIONAL8     = 142, 
    	INTERNATIONAL9     = 143, 
    	LANG1              = 144, 
    	LANG2              = 145, 
    	LANG3              = 146, 
    	LANG4              = 147, 
    	LANG5              = 148, 
    	LANG6              = 149, 
    	LANG7              = 150, 
    	LANG8              = 151, 
    	LANG9              = 152, 
    	ALTERASE           = 153, 
    	SYSREQ             = 154, 
    	CANCEL             = 155, 
    	CLEAR              = 156, 
    	PRIOR              = 157, 
    	RETURN2            = 158, 
    	SEPARATOR          = 159, 
    	OUT                = 160, 
    	OPER               = 161, 
    	CLEARAGAIN         = 162, 
    	CRSEL              = 163, 
    	EXSEL              = 164, 
    	KP_00              = 176, 
    	KP_000             = 177, 
    	THOUSANDSSEPARATOR = 178, 
    	DECIMALSEPARATOR   = 179, 
    	CURRENCYUNIT       = 180, 
    	CURRENCYSUBUNIT    = 181, 
    	KP_LEFTPAREN       = 182, 
    	KP_RIGHTPAREN      = 183, 
    	KP_LEFTBRACE       = 184, 
    	KP_RIGHTBRACE      = 185, 
    	KP_TAB             = 186, 
    	KP_BACKSPACE       = 187, 
    	KP_A               = 188, 
    	KP_B               = 189, 
    	KP_C               = 190, 
    	KP_D               = 191, 
    	KP_E               = 192, 
    	KP_F               = 193, 
    	KP_XOR             = 194, 
    	KP_POWER           = 195, 
    	KP_PERCENT         = 196, 
    	KP_LESS            = 197, 
    	KP_GREATER         = 198, 
    	KP_AMPERSAND       = 199, 
    	KP_DBLAMPERSAND    = 200, 
    	KP_VERTICALBAR     = 201, 
    	KP_DBLVERTICALBAR  = 202, 
    	KP_COLON           = 203, 
    	KP_HASH            = 204, 
    	KP_SPACE           = 205, 
    	KP_AT              = 206, 
    	KP_EXCLAM          = 207, 
    	KP_MEMSTORE        = 208, 
    	KP_MEMRECALL       = 209, 
    	KP_MEMCLEAR        = 210, 
    	KP_MEMADD          = 211, 
    	KP_MEMSUBTRACT     = 212, 
    	KP_MEMMULTIPLY     = 213, 
    	KP_MEMDIVIDE       = 214, 
    	KP_PLUSMINUS       = 215, 
    	KP_CLEAR           = 216, 
    	KP_CLEARENTRY      = 217, 
    	KP_BINARY          = 218, 
    	KP_OCTAL           = 219, 
    	KP_DECIMAL         = 220, 
    	KP_HEXADECIMAL     = 221, 
    	LCTRL              = 224, 
    	LSHIFT             = 225, 
    	LALT               = 226, 
    	LGUI               = 227, 
    	RCTRL              = 228, 
    	RSHIFT             = 229, 
    	RALT               = 230, 
    	RGUI               = 231, 
    	MODE               = 257, 
    	AUDIONEXT          = 258, 
    	AUDIOPREV          = 259, 
    	AUDIOSTOP          = 260, 
    	AUDIOPLAY          = 261, 
    	AUDIOMUTE          = 262, 
    	MEDIASELECT        = 263, 
    	WWW                = 264, 
    	MAIL               = 265, 
    	CALCULATOR         = 266, 
    	COMPUTER           = 267, 
    	AC_SEARCH          = 268, 
    	AC_HOME            = 269, 
    	AC_BACK            = 270, 
    	AC_FORWARD         = 271, 
    	AC_STOP            = 272, 
    	AC_REFRESH         = 273, 
    	AC_BOOKMARKS       = 274, 
    	BRIGHTNESSDOWN     = 275, 
    	BRIGHTNESSUP       = 276, 
    	DISPLAYSWITCH      = 277, 
    	KBDILLUMTOGGLE     = 278, 
    	KBDILLUMDOWN       = 279, 
    	KBDILLUMUP         = 280, 
    	EJECT              = 281, 
    	SLEEP              = 282, 
    	APP1               = 283, 
    	APP2               = 284, 
    	AUDIOREWIND        = 285, 
    	AUDIOFASTFORWARD   = 286, 
    	NUM_SCANCODES      = 512, 
    }

    Related Procedures With Parameters

    Related Procedures With Returns

    Related Constants

    SensorEvent ¶

    SensorEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_SENSORUPDATE 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	which:     i32,
    	// *< The instance ID of the sensor 
    	data:      [6]f32,
    }

    SensorID ¶

    SensorID :: distinct i32

    Related Procedures With Returns

    SensorType ¶

    SensorType :: enum i32 {
    	INVALID = -1, // *< Returned for an invalid sensor
    	UNKNOWN,      // *< Unknown sensor type
    	ACCEL,        // *< Accelerometer
    	GYRO,         // *< Gyroscope
    }

    Related Procedures With Parameters

    Related Procedures With Returns

    SpinLock ¶

    SpinLock :: distinct i32
     

    Atomic NOTE: Prefer the intrinsics built into Odin 'package intrinsics'

    Related Procedures With Parameters

    Surface ¶

    Surface :: struct {
    	flags:        u32,
    	// *< Read-only 
    	format:       ^PixelFormat,
    	// *< Read-only 
    	w:            i32,
    	h:            i32,
    	// *< Read-only 
    	pitch:        i32,
    	// *< Read-only 
    	pixels:       rawptr,
    	// Application data associated with the surface 
    	userdata:     rawptr,
    	// information needed for surfaces requiring locks 
    	locked:       i32,
    	// list of BlitMap that hold a reference to this surface 
    	list_blitmap: rawptr,
    	// clipping information 
    	clip_rect:    Rect,
    	// info for fast blit mapping to other surfaces 
    	blitmap:      ^BlitMap,
    	// Reference count -- used when freeing surface 
    	refcount:     i32,
    }
    External examples sdl2/hellope

    Related Procedures With Parameters

    Related Procedures With Returns

    SysWMEvent ¶

    SysWMEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_SYSWMEVENT 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	msg:       ^SysWMmsg,
    }

    SysWMinfo ¶

    SysWMinfo :: struct {
    	version:   version,
    	subsystem: SYSWM_TYPE,
    	info:      struct #raw_union {
    		win:     struct {
    			window:    rawptr,
    			hdc:       rawptr,
    			hinstance: rawptr,
    		},
    		winrt:   struct {
    			window: rawptr,
    		},
    		x11:     struct {
    			display: rawptr,
    			window:  uintptr,
    		},
    		cocoa:   struct {
    			window: rawptr,
    		},
    		uikit:   struct {
    			window:             rawptr,
    			// *< The UIKit window 
    			framebuffer:        u32,
    			// *< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. 
    			colorbuffer:        u32,
    			// *< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. 
    			resolveFramebuffer: u32,
    		},
    		wl:      struct {
    			display:       rawptr,
    			// *< Wayland display 
    			surface:       rawptr,
    			// *< Wayland surface 
    			shell_surface: rawptr,
    			// *< DEPRECATED Wayland shell_surface (window manager handle) 
    			egl_window:    rawptr,
    			// *< Wayland EGL window (native window) 
    			xdg_surface:   rawptr,
    		},
    		mir:     struct {
    			connection: rawptr,
    			// *< Mir display server connection 
    			surface:    rawptr,
    		},
    		android: struct {
    			window:  rawptr,
    			surface: rawptr,
    		},
    		dummy:   [64]u8,
    	},
    }
     

    The custom window manager information structure.

    When this structure is returned, it holds information about which low level system it is using, and will be one of SYSWM_TYPE.

    SysWMmsg ¶

    SysWMmsg :: struct {
    	version:   version,
    	subsystem: SYSWM_TYPE,
    	msg:       struct #raw_union {
    		win:   struct {
    			hwnd:   rawptr,
    			// *< The window for the message 
    			msg:    u32,
    			// *< The type of message 
    			wParam: uint,
    			// *< WORD message parameter 
    			lParam: int,
    		},
    		x11:   struct {
    			event: XEvent,
    		},
    		cocoa: struct {
    			dummy: i32,
    		},
    		uikit: struct {
    			dummy: i32,
    		},
    		dummy: i32,
    	},
    }

    SystemCursor ¶

    SystemCursor :: enum i32 {
    	ARROW,              // *< Arrow
    	IBEAM,              // *< I-beam
    	WAIT,               // *< Wait
    	CROSSHAIR,          // *< Crosshair
    	WAITARROW,          // *< Small wait cursor (or Wait if not available)
    	SIZENWSE,           // *< Double arrow pointing northwest and southeast
    	SIZENESW,           // *< Double arrow pointing northeast and southwest
    	SIZEWE,             // *< Double arrow pointing west and east
    	SIZENS,             // *< Double arrow pointing north and south
    	SIZEALL,            // *< Four pointed arrow pointing north, south, east, and west
    	NO,                 // *< Slashed circle or crossbones
    	HAND,               // *< Hand
    	NUM_SYSTEM_CURSORS, 
    }

    TLSID ¶

    TLSID :: distinct u32

    Related Procedures With Parameters

    TextEditingEvent ¶

    TextEditingEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_TEXTEDITING 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with keyboard focus, if any 
    	text:      [32]u8,
    	// *< The editing text 
    	start:     i32,
    	// *< The start cursor of selected editing text 
    	length:    i32,
    }

    TextInputEvent ¶

    TextInputEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_TEXTINPUT 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The window with keyboard focus, if any 
    	text:      [32]u8,
    }

    TextureAccess ¶

    TextureAccess :: enum i32 {
    	STATIC,    // *< Changes rarely, not lockable
    	STREAMING, // *< Changes frequently, lockable
    	TARGET,    // *< Texture can be used as a render target
    }
     

    The access pattern allowed for a texture.

    Thread ¶

    Thread :: struct {}

    Related Procedures With Parameters

    Related Procedures With Returns

    ThreadFunction ¶

    ThreadFunction :: proc "c" (data: rawptr) -> i32

    Related Procedures With Parameters

    ThreadPriority ¶

    ThreadPriority :: enum i32 {
    	LOW, 
    	NORMAL, 
    	HIGH, 
    	TIME_CRITICAL, 
    }

    TimerCallback ¶

    TimerCallback :: proc "c" (interval: u32, param: rawptr) -> u32

    TimerID ¶

    TimerID :: distinct i32

    TouchDeviceType ¶

    TouchDeviceType :: enum i32 {
    	INVALID           = -1, 
    	DIRECT,                 // touch screen with window-relative coordinates
    	INDIRECT_ABSOLUTE,      // trackpad with absolute device coordinates
    	INDIRECT_RELATIVE,      // trackpad with screen cursor-relative coordinates
    }

    TouchFingerEvent ¶

    TouchFingerEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	touchId:   TouchID,
    	// *< The touch device id 
    	fingerId:  FingerID,
    	x:         f32,
    	// *< Normalized in the range 0...1 
    	y:         f32,
    	// *< Normalized in the range 0...1 
    	dx:        f32,
    	// *< Normalized in the range -1...1 
    	dy:        f32,
    	// *< Normalized in the range -1...1 
    	pressure:  f32,
    	// *< Normalized in the range 0...1 
    	windowID:  u32,
    }

    TouchID ¶

    TouchID :: distinct i64

    Related Procedures With Parameters

    Related Constants

    UserEvent ¶

    UserEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The associated window if any 
    	code:      i32,
    	// *< User defined event code 
    	data1:     rawptr,
    	// *< User defined data pointer 
    	data2:     rawptr,
    }

    VkInstance ¶

    VkInstance :: vulkan.Instance

    VkSurfaceKHR ¶

    VkSurfaceKHR :: vulkan.SurfaceKHR

    WinRT_DeviceFamily ¶

    WinRT_DeviceFamily :: enum int {
    	// Unknown family  
    	UNKNOWN, 
    	// Desktop family
    	DESKTOP, 
    	// Mobile family (for example smartphone) 
    	MOBILE, 
    	// XBox family 
    	XBOX, 
    }

    WinRT_Path ¶

    WinRT_Path :: enum i32 {
    	// The installed app's root directory.
    	// 	Files here are likely to be read-only. 
    	INSTALLED_LOCATION, 
    	// The app's local data store.  Files may be written here 
    	LOCAL_FOLDER, 
    	// The app's roaming data store.  Unsupported on Windows Phone.
    	// 	Files written here may be copied to other machines via a network
    	// 	connection.
    	ROAMING_FOLDER, 
    	// The app's temporary data store.  Unsupported on Windows Phone.
    	// 	Files written here may be deleted at any time. 
    	TEMP_FOLDER, 
    }

    Related Procedures With Parameters

    Window ¶

    Window :: struct {}
    External examples sdl2/hellope

    Related Procedures With Parameters

    Related Procedures With Returns

    WindowEvent ¶

    WindowEvent :: struct {
    	type:      EventType,
    	// *< ::SDL_WINDOWEVENT 
    	timestamp: u32,
    	// *< In milliseconds, populated using SDL_GetTicks() 
    	windowID:  u32,
    	// *< The associated window 
    	event:     WindowEventID,
    	// *< ::SDL_WindowEventID 
    	_:         u8,
    	_:         u8,
    	_:         u8,
    	data1:     i32,
    	// *< event dependent data 
    	data2:     i32,
    }

    WindowEventID ¶

    WindowEventID :: enum u8 {
    	NONE,         // *< Never used
    	SHOWN,        // *< Window has been shown
    	HIDDEN,       // *< Window has been hidden
    	EXPOSED,      // *< Window has been exposed and should be
    	                                 redrawn
    	MOVED,        // *< Window has been moved to data1, data2
    	RESIZED,      // *< Window has been resized to data1xdata2
    	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.
    	MINIMIZED,    // *< Window has been minimized
    	MAXIMIZED,    // *< Window has been maximized
    	RESTORED,     // *< Window has been restored to normal size
    	                                 and position
    	ENTER,        // *< Window has gained mouse focus
    	LEAVE,        // *< Window has lost mouse focus
    	FOCUS_GAINED, // *< Window has gained keyboard focus
    	FOCUS_LOST,   // *< Window has lost keyboard focus
    	CLOSE,        // *< The window manager requests that the window be closed
    	TAKE_FOCUS,   // *< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore)
    	HIT_TEST,     // *< Window had a hit test that wasn't SDL_HITTEST_NORMAL.
    }

    WindowFlag ¶

    WindowFlag :: enum u32 {
    	FULLSCREEN                   = 0,             // *< fullscreen window
    	OPENGL                       = 1,             // *< window usable with OpenGL context
    	SHOWN                        = 2,             // *< window is visible
    	HIDDEN                       = 3,             // *< window is not visible
    	BORDERLESS                   = 4,             // *< no window decoration
    	RESIZABLE                    = 5,             // *< window can be resized
    	MINIMIZED                    = 6,             // *< window is minimized
    	MAXIMIZED                    = 7,             // *< window is maximized
    	MOUSE_GRABBED                = 8,             // *< window has grabbed mouse input
    	INPUT_FOCUS                  = 9,             // *< window has input focus
    	MOUSE_FOCUS                  = 10,            // *< window has mouse focus
    	_INTERNAL_FULLSCREEN_DESKTOP = 12, 
    	FOREIGN                      = 11,            // *< window not created by SDL
    	ALLOW_HIGHDPI                = 13,            // *< window should be created in high-DPI mode if supported.
    	                                             On macOS NSHighResolutionCapable must be set true in the
    	                                             application's Info.plist for this to have any effect.
    	MOUSE_CAPTURE                = 14,            // *< window has mouse captured (unrelated to MOUSE_GRABBED)
    	ALWAYS_ON_TOP                = 15,            // *< window should always be above others
    	SKIP_TASKBAR                 = 16,            // *< window should not be added to the taskbar
    	UTILITY                      = 17,            // *< window should be treated as a utility window
    	TOOLTIP                      = 18,            // *< window should be treated as a tooltip
    	POPUP_MENU                   = 19,            // *< window should be treated as a popup menu
    	KEYBOARD_GRABBED             = 20,            // *< window has grabbed keyboard input
    	VULKAN                       = 28,            // *< window usable for Vulkan surface
    	METAL                        = 29,            // *< window usable for Metal view
    	INPUT_GRABBED                = MOUSE_GRABBED, // *< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility
    }

    WindowShapeMode ¶

    WindowShapeMode :: struct {
    	mode:       WindowShapeModeEnum,
    	parameters: WindowShapeParams,
    }

    Related Procedures With Parameters

    WindowShapeModeEnum ¶

    WindowShapeModeEnum :: enum i32 {
    	// The default mode, a binarized alpha cutoff of 1. 
    	Default, 
    	// A binarized alpha cutoff with a given integer value. 
    	BinarizeAlpha, 
    	// A binarized alpha cutoff with a given integer value, but with the opposite comparison. 
    	ReverseBinarizeAlpha, 
    	// A color key is applied. 
    	ColorKey, 
    }

    WindowShapeParams ¶

    WindowShapeParams :: struct #raw_union {
    	binarizationCutoff: u8,
    	colorKey:           Color,
    }

    WindowsMessageHook ¶

    WindowsMessageHook :: proc "c" (userdata: rawptr, hWnd: rawptr, message: u32, wParam: u64, lParam: i64)

    XEvent ¶

    XEvent :: struct {
    	type: i32,
    	pad:  [24]i32,
    }

    YUV_CONVERSION_MODE ¶

    YUV_CONVERSION_MODE :: enum i32 {
    	JPEG,      // *< Full range JPEG
    	BT601,     // *< BT.601 (the default)
    	BT709,     // *< BT.709
    	AUTOMATIC, // *< BT.601 for SD content, BT.709 for HD content
    }

    Related Procedures With Returns

    atomic_t ¶

    atomic_t :: struct {
    	value: i32,
    }

    Related Procedures With Parameters

    blit ¶

    blit :: proc "c" (src: ^Surface, srcrect: ^Rect, dst: ^Surface, dstrect: ^Rect) -> i32

    bool ¶

    bool :: distinct b32

    Related Procedures With Parameters

    Related Procedures With Returns

    calloc_func ¶

    calloc_func :: proc "c" (nmemb, size: uint) -> rawptr

    Related Procedures With Parameters

    cond ¶

    cond :: struct {}

    Related Procedures With Parameters

    errorcode ¶

    errorcode :: enum i32 {
    	ENOMEM, 
    	EFREAD, 
    	EFWRITE, 
    	EFSEEK, 
    	UNSUPPORTED, 
    	LASTERROR, 
    }

    eventaction ¶

    eventaction :: enum i32 {
    	ADDEVENT, 
    	PEEKEVENT, 
    	GETEVENT, 
    }

    free_func ¶

    free_func :: proc "c" (mem: rawptr)

    Related Procedures With Parameters

    iconv_t ¶

    iconv_t :: distinct rawptr
     

    SDL_iconv_* are now always real symbols/types, not macros or inlined.

    Related Procedures With Parameters

    malloc_func ¶

    malloc_func :: proc "c" (size: uint) -> rawptr

    Related Procedures With Parameters

    mutex ¶

    mutex :: struct {}

    Related Procedures With Parameters

    realloc_func ¶

    realloc_func :: proc "c" (mem: rawptr, size: uint) -> rawptr

    Related Procedures With Parameters

    sem ¶

    sem :: semaphore

    Related Procedures With Parameters

    semaphore ¶

    semaphore :: struct {}

    Related Procedures With Parameters

    threadID ¶

    threadID :: distinct u32

    Related Procedures With Returns

    version ¶

    version :: struct {
    	major: u8,
    	// *< major version 
    	minor: u8,
    	// *< minor version 
    	patch: u8,
    }

    Related Procedures With Parameters

    vulkanInstance ¶

    vulkanInstance :: vulkan.Instance

    vulkanSurface ¶

    vulkanSurface :: vulkan.SurfaceKHR

    Constants

    ARRAYORDER_NONE ¶

    ARRAYORDER_NONE :: 0
     

    Array component order, low byte -> high byte. !!! FIXME: in 2.1, make these not overlap differently with !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA

    AUDIO_ALLOW_ANY_CHANGE ¶

    AUDIO_ALLOW_ANY_CHANGE :: AudioAllowChangeFlags{.FREQUENCY, .FORMAT, .CHANNELS, .SAMPLES}

    AUDIO_F32 ¶

    AUDIO_F32 :: AUDIO_F32LSB

    AUDIO_F32LSB ¶

    AUDIO_F32LSB :: 0x8120
     

    32-bit floating point samples

    AUDIO_F32MSB ¶

    AUDIO_F32MSB :: 0x9120
     

    As above, but big-endian byte order

    AUDIO_F32SYS ¶

    AUDIO_F32SYS :: AUDIO_F32LSB

    AUDIO_S16 ¶

    AUDIO_S16 :: AUDIO_S16LSB

    AUDIO_S16LSB ¶

    AUDIO_S16LSB :: 0x8010
     

    Signed 16-bit samples

    AUDIO_S16MSB ¶

    AUDIO_S16MSB :: 0x9010
     

    As above, but big-endian byte order

    AUDIO_S16SYS ¶

    AUDIO_S16SYS :: AUDIO_S16LSB

    AUDIO_S32 ¶

    AUDIO_S32 :: AUDIO_S32LSB

    AUDIO_S32LSB ¶

    AUDIO_S32LSB :: 0x8020
     

    32-bit integer samples

    AUDIO_S32MSB ¶

    AUDIO_S32MSB :: 0x9020
     

    As above, but big-endian byte order

    AUDIO_S32SYS ¶

    AUDIO_S32SYS :: AUDIO_S32LSB

    AUDIO_S8 ¶

    AUDIO_S8 :: 0x8008
     

    Signed 8-bit samples

    AUDIO_U16 ¶

    AUDIO_U16 :: AUDIO_U16LSB

    AUDIO_U16LSB ¶

    AUDIO_U16LSB :: 0x0010
     

    Unsigned 16-bit samples

    AUDIO_U16MSB ¶

    AUDIO_U16MSB :: 0x1010
     

    As above, but big-endian byte order

    AUDIO_U16SYS ¶

    AUDIO_U16SYS :: AUDIO_U16LSB

    AUDIO_U8 ¶

    AUDIO_U8 :: 0x0008
     

    Unsigned 8-bit samples

    BUTTON_LEFT ¶

    BUTTON_LEFT :: 1
    External examples sdl2/microui

    BUTTON_LMASK ¶

    BUTTON_LMASK :: 1 << (BUTTON_LEFT - 1)

    BUTTON_MIDDLE ¶

    BUTTON_MIDDLE :: 2
    External examples sdl2/microui

    BUTTON_MMASK ¶

    BUTTON_MMASK :: 1 << (BUTTON_MIDDLE - 1)

    BUTTON_RIGHT ¶

    BUTTON_RIGHT :: 3
    External examples sdl2/microui

    BUTTON_RMASK ¶

    BUTTON_RMASK :: 1 << (BUTTON_RIGHT - 1)

    BUTTON_X1MASK ¶

    BUTTON_X1MASK :: 1 << (BUTTON_X1 - 1)

    BUTTON_X2MASK ¶

    BUTTON_X2MASK :: 1 << (BUTTON_X2 - 1)

    CACHELINE_SIZE ¶

    CACHELINE_SIZE :: 128
     

    This is a guess for the cacheline size used for padding. Most x86 processors have a 64 byte cache line. The 64-bit PowerPC processors have a 128 byte cache line. We'll use the larger value to be generally safe.

    DONTFREE ¶

    DONTFREE :: 0x00000004
     

    Surface is referenced internally

    HAPTIC_AUTOCENTER ¶

    HAPTIC_AUTOCENTER :: HapticType.AUTOCENTER

    HAPTIC_CARTESIAN ¶

    HAPTIC_CARTESIAN :: HapticDirectionType.CARTESIAN

    HAPTIC_CONSTANT ¶

    HAPTIC_CONSTANT :: HapticType.CONSTANT

    HAPTIC_CUSTOM ¶

    HAPTIC_CUSTOM :: HapticType.CUSTOM

    HAPTIC_DAMPER ¶

    HAPTIC_DAMPER :: HapticType.DAMPER

    HAPTIC_FRICTION ¶

    HAPTIC_FRICTION :: HapticType.FRICTION

    HAPTIC_INERTIA ¶

    HAPTIC_INERTIA :: HapticType.INERTIA

    HAPTIC_LEFTRIGHT ¶

    HAPTIC_LEFTRIGHT :: HapticType.LEFTRIGHT

    HAPTIC_PAUSE ¶

    HAPTIC_PAUSE :: HapticType.PAUSE

    HAPTIC_POLAR ¶

    HAPTIC_POLAR :: HapticDirectionType.POLAR

    HAPTIC_SAWTOOTHDOWN ¶

    HAPTIC_SAWTOOTHDOWN :: HapticType.SAWTOOTHDOWN

    HAPTIC_SAWTOOTHUP ¶

    HAPTIC_SAWTOOTHUP :: HapticType.SAWTOOTHUP

    HAPTIC_SPHERICAL ¶

    HAPTIC_SPHERICAL :: HapticDirectionType.SPHERICAL

    HAPTIC_SPRING ¶

    HAPTIC_SPRING :: HapticType.SPRING

    HAPTIC_STATUS ¶

    HAPTIC_STATUS :: HapticType.STATUS

    HAPTIC_STEERING_AXIS ¶

    HAPTIC_STEERING_AXIS :: HapticDirectionType.STEERING_AXIS

    HAPTIC_TRIANGLE ¶

    HAPTIC_TRIANGLE :: HapticType.TRIANGLE

    HAT_LEFTDOWN ¶

    HAT_LEFTDOWN :: HAT_LEFT | HAT_DOWN

    HAT_LEFTUP ¶

    HAT_LEFTUP :: HAT_LEFT | HAT_UP

    HAT_RIGHTDOWN ¶

    HAT_RIGHTDOWN :: HAT_RIGHT | HAT_DOWN

    HAT_RIGHTUP ¶

    HAT_RIGHTUP :: HAT_RIGHT | HAT_UP

    HINT_ACCELEROMETER_AS_JOYSTICK ¶

    HINT_ACCELEROMETER_AS_JOYSTICK :: "SDL_ACCELEROMETER_AS_JOYSTICK"

    HINT_ALLOW_ALT_TAB_WHILE_GRABBED ¶

    HINT_ALLOW_ALT_TAB_WHILE_GRABBED :: "SDL_ALLOW_ALT_TAB_WHILE_GRABBED"

    HINT_ALLOW_TOPMOST ¶

    HINT_ALLOW_TOPMOST :: "SDL_ALLOW_TOPMOST"

    HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION ¶

    HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION :: "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"

    HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION ¶

    HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION :: "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"

    HINT_ANDROID_BLOCK_ON_PAUSE ¶

    HINT_ANDROID_BLOCK_ON_PAUSE :: "SDL_ANDROID_BLOCK_ON_PAUSE"

    HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO ¶

    HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO :: "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"

    HINT_ANDROID_TRAP_BACK_BUTTON ¶

    HINT_ANDROID_TRAP_BACK_BUTTON :: "SDL_ANDROID_TRAP_BACK_BUTTON"

    HINT_APPLE_TV_CONTROLLER_UI_EVENTS ¶

    HINT_APPLE_TV_CONTROLLER_UI_EVENTS :: "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"

    HINT_APPLE_TV_REMOTE_ALLOW_ROTATION ¶

    HINT_APPLE_TV_REMOTE_ALLOW_ROTATION :: "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"

    HINT_AUDIO_CATEGORY ¶

    HINT_AUDIO_CATEGORY :: "SDL_AUDIO_CATEGORY"

    HINT_AUDIO_DEVICE_APP_NAME ¶

    HINT_AUDIO_DEVICE_APP_NAME :: "SDL_AUDIO_DEVICE_APP_NAME"

    HINT_AUDIO_DEVICE_STREAM_NAME ¶

    HINT_AUDIO_DEVICE_STREAM_NAME :: "SDL_AUDIO_DEVICE_STREAM_NAME"

    HINT_AUDIO_DEVICE_STREAM_ROLE ¶

    HINT_AUDIO_DEVICE_STREAM_ROLE :: "SDL_AUDIO_DEVICE_STREAM_ROLE"

    HINT_AUDIO_INCLUDE_MONITORS ¶

    HINT_AUDIO_INCLUDE_MONITORS :: "SDL_AUDIO_INCLUDE_MONITORS"

    HINT_AUDIO_RESAMPLING_MODE ¶

    HINT_AUDIO_RESAMPLING_MODE :: "SDL_AUDIO_RESAMPLING_MODE"

    HINT_AUTO_UPDATE_JOYSTICKS ¶

    HINT_AUTO_UPDATE_JOYSTICKS :: "SDL_AUTO_UPDATE_JOYSTICKS"

    HINT_AUTO_UPDATE_SENSORS ¶

    HINT_AUTO_UPDATE_SENSORS :: "SDL_AUTO_UPDATE_SENSORS"

    HINT_BMP_SAVE_LEGACY_FORMAT ¶

    HINT_BMP_SAVE_LEGACY_FORMAT :: "SDL_BMP_SAVE_LEGACY_FORMAT"

    HINT_DISPLAY_USABLE_BOUNDS ¶

    HINT_DISPLAY_USABLE_BOUNDS :: "SDL_DISPLAY_USABLE_BOUNDS"

    HINT_EMSCRIPTEN_ASYNCIFY ¶

    HINT_EMSCRIPTEN_ASYNCIFY :: "SDL_EMSCRIPTEN_ASYNCIFY"

    HINT_EMSCRIPTEN_KEYBOARD_ELEMENT ¶

    HINT_EMSCRIPTEN_KEYBOARD_ELEMENT :: "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"

    HINT_ENABLE_STEAM_CONTROLLERS ¶

    HINT_ENABLE_STEAM_CONTROLLERS :: "SDL_ENABLE_STEAM_CONTROLLERS"

    HINT_EVENT_LOGGING ¶

    HINT_EVENT_LOGGING :: "SDL_EVENT_LOGGING"

    HINT_FRAMEBUFFER_ACCELERATION ¶

    HINT_FRAMEBUFFER_ACCELERATION :: "SDL_FRAMEBUFFER_ACCELERATION"

    HINT_GAMECONTROLLERCONFIG ¶

    HINT_GAMECONTROLLERCONFIG :: "SDL_GAMECONTROLLERCONFIG"

    HINT_GAMECONTROLLERCONFIG_FILE ¶

    HINT_GAMECONTROLLERCONFIG_FILE :: "SDL_GAMECONTROLLERCONFIG_FILE"

    HINT_GAMECONTROLLERTYPE ¶

    HINT_GAMECONTROLLERTYPE :: "SDL_GAMECONTROLLERTYPE"

    HINT_GAMECONTROLLER_IGNORE_DEVICES ¶

    HINT_GAMECONTROLLER_IGNORE_DEVICES :: "SDL_GAMECONTROLLER_IGNORE_DEVICES"

    HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT ¶

    HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT :: "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"

    HINT_GAMECONTROLLER_USE_BUTTON_LABELS ¶

    HINT_GAMECONTROLLER_USE_BUTTON_LABELS :: "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"

    HINT_GRAB_KEYBOARD ¶

    HINT_GRAB_KEYBOARD :: "SDL_GRAB_KEYBOARD"

    HINT_IDLE_TIMER_DISABLED ¶

    HINT_IDLE_TIMER_DISABLED :: "SDL_IOS_IDLE_TIMER_DISABLED"

    HINT_IME_INTERNAL_EDITING ¶

    HINT_IME_INTERNAL_EDITING :: "SDL_IME_INTERNAL_EDITING"

    HINT_IOS_HIDE_HOME_INDICATOR ¶

    HINT_IOS_HIDE_HOME_INDICATOR :: "SDL_IOS_HIDE_HOME_INDICATOR"

    HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS ¶

    HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS :: "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"

    HINT_JOYSTICK_HIDAPI ¶

    HINT_JOYSTICK_HIDAPI :: "SDL_JOYSTICK_HIDAPI"

    HINT_JOYSTICK_HIDAPI_GAMECUBE ¶

    HINT_JOYSTICK_HIDAPI_GAMECUBE :: "SDL_JOYSTICK_HIDAPI_GAMECUBE"

    HINT_JOYSTICK_HIDAPI_JOY_CONS ¶

    HINT_JOYSTICK_HIDAPI_JOY_CONS :: "SDL_JOYSTICK_HIDAPI_JOY_CONS"

    HINT_JOYSTICK_HIDAPI_LUNA ¶

    HINT_JOYSTICK_HIDAPI_LUNA :: "SDL_JOYSTICK_HIDAPI_LUNA"

    HINT_JOYSTICK_HIDAPI_PS4 ¶

    HINT_JOYSTICK_HIDAPI_PS4 :: "SDL_JOYSTICK_HIDAPI_PS4"

    HINT_JOYSTICK_HIDAPI_PS4_RUMBLE ¶

    HINT_JOYSTICK_HIDAPI_PS4_RUMBLE :: "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"

    HINT_JOYSTICK_HIDAPI_PS5 ¶

    HINT_JOYSTICK_HIDAPI_PS5 :: "SDL_JOYSTICK_HIDAPI_PS5"

    HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED ¶

    HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED :: "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED"

    HINT_JOYSTICK_HIDAPI_PS5_RUMBLE ¶

    HINT_JOYSTICK_HIDAPI_PS5_RUMBLE :: "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE"

    HINT_JOYSTICK_HIDAPI_STADIA ¶

    HINT_JOYSTICK_HIDAPI_STADIA :: "SDL_JOYSTICK_HIDAPI_STADIA"

    HINT_JOYSTICK_HIDAPI_STEAM ¶

    HINT_JOYSTICK_HIDAPI_STEAM :: "SDL_JOYSTICK_HIDAPI_STEAM"

    HINT_JOYSTICK_HIDAPI_SWITCH ¶

    HINT_JOYSTICK_HIDAPI_SWITCH :: "SDL_JOYSTICK_HIDAPI_SWITCH"

    HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED ¶

    HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED :: "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED"

    HINT_JOYSTICK_HIDAPI_XBOX ¶

    HINT_JOYSTICK_HIDAPI_XBOX :: "SDL_JOYSTICK_HIDAPI_XBOX"

    HINT_JOYSTICK_RAWINPUT ¶

    HINT_JOYSTICK_RAWINPUT :: "SDL_JOYSTICK_RAWINPUT"

    HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT ¶

    HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT :: "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT"

    HINT_JOYSTICK_THREAD ¶

    HINT_JOYSTICK_THREAD :: "SDL_JOYSTICK_THREAD"

    HINT_KMSDRM_REQUIRE_DRM_MASTER ¶

    HINT_KMSDRM_REQUIRE_DRM_MASTER :: "SDL_KMSDRM_REQUIRE_DRM_MASTER"

    HINT_LINUX_JOYSTICK_DEADZONES ¶

    HINT_LINUX_JOYSTICK_DEADZONES :: "SDL_LINUX_JOYSTICK_DEADZONES"

    HINT_MAC_BACKGROUND_APP ¶

    HINT_MAC_BACKGROUND_APP :: "SDL_MAC_BACKGROUND_APP"

    HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK ¶

    HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK :: "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"

    HINT_MOUSE_DOUBLE_CLICK_RADIUS ¶

    HINT_MOUSE_DOUBLE_CLICK_RADIUS :: "SDL_MOUSE_DOUBLE_CLICK_RADIUS"

    HINT_MOUSE_DOUBLE_CLICK_TIME ¶

    HINT_MOUSE_DOUBLE_CLICK_TIME :: "SDL_MOUSE_DOUBLE_CLICK_TIME"

    HINT_MOUSE_FOCUS_CLICKTHROUGH ¶

    HINT_MOUSE_FOCUS_CLICKTHROUGH :: "SDL_MOUSE_FOCUS_CLICKTHROUGH"

    HINT_MOUSE_NORMAL_SPEED_SCALE ¶

    HINT_MOUSE_NORMAL_SPEED_SCALE :: "SDL_MOUSE_NORMAL_SPEED_SCALE"

    HINT_MOUSE_RELATIVE_MODE_WARP ¶

    HINT_MOUSE_RELATIVE_MODE_WARP :: "SDL_MOUSE_RELATIVE_MODE_WARP"

    HINT_MOUSE_RELATIVE_SCALING ¶

    HINT_MOUSE_RELATIVE_SCALING :: "SDL_MOUSE_RELATIVE_SCALING"

    HINT_MOUSE_RELATIVE_SPEED_SCALE ¶

    HINT_MOUSE_RELATIVE_SPEED_SCALE :: "SDL_MOUSE_RELATIVE_SPEED_SCALE"

    HINT_MOUSE_TOUCH_EVENTS ¶

    HINT_MOUSE_TOUCH_EVENTS :: "SDL_MOUSE_TOUCH_EVENTS"

    HINT_NO_SIGNAL_HANDLERS ¶

    HINT_NO_SIGNAL_HANDLERS :: "SDL_NO_SIGNAL_HANDLERS"

    HINT_OPENGL_ES_DRIVER ¶

    HINT_OPENGL_ES_DRIVER :: "SDL_OPENGL_ES_DRIVER"

    HINT_ORIENTATIONS ¶

    HINT_ORIENTATIONS :: "SDL_IOS_ORIENTATIONS"

    HINT_PREFERRED_LOCALES ¶

    HINT_PREFERRED_LOCALES :: "SDL_PREFERRED_LOCALES"

    HINT_QTWAYLAND_CONTENT_ORIENTATION ¶

    HINT_QTWAYLAND_CONTENT_ORIENTATION :: "SDL_QTWAYLAND_CONTENT_ORIENTATION"

    HINT_QTWAYLAND_WINDOW_FLAGS ¶

    HINT_QTWAYLAND_WINDOW_FLAGS :: "SDL_QTWAYLAND_WINDOW_FLAGS"

    HINT_RENDER_BATCHING ¶

    HINT_RENDER_BATCHING :: "SDL_RENDER_BATCHING"

    HINT_RENDER_DIRECT3D11_DEBUG ¶

    HINT_RENDER_DIRECT3D11_DEBUG :: "SDL_RENDER_DIRECT3D11_DEBUG"

    HINT_RENDER_DIRECT3D_THREADSAFE ¶

    HINT_RENDER_DIRECT3D_THREADSAFE :: "SDL_RENDER_DIRECT3D_THREADSAFE"

    HINT_RENDER_DRIVER ¶

    HINT_RENDER_DRIVER :: "SDL_RENDER_DRIVER"

    HINT_RENDER_LOGICAL_SIZE_MODE ¶

    HINT_RENDER_LOGICAL_SIZE_MODE :: "SDL_RENDER_LOGICAL_SIZE_MODE"

    HINT_RENDER_OPENGL_SHADERS ¶

    HINT_RENDER_OPENGL_SHADERS :: "SDL_RENDER_OPENGL_SHADERS"

    HINT_RENDER_SCALE_QUALITY ¶

    HINT_RENDER_SCALE_QUALITY :: "SDL_RENDER_SCALE_QUALITY"

    HINT_RENDER_VSYNC ¶

    HINT_RENDER_VSYNC :: "SDL_RENDER_VSYNC"

    HINT_RETURN_KEY_HIDES_IME ¶

    HINT_RETURN_KEY_HIDES_IME :: "SDL_RETURN_KEY_HIDES_IME"

    HINT_RPI_VIDEO_LAYER ¶

    HINT_RPI_VIDEO_LAYER :: "SDL_RPI_VIDEO_LAYER"

    HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL ¶

    HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL :: "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"

    HINT_THREAD_PRIORITY_POLICY ¶

    HINT_THREAD_PRIORITY_POLICY :: "SDL_THREAD_PRIORITY_POLICY"

    HINT_THREAD_STACK_SIZE ¶

    HINT_THREAD_STACK_SIZE :: "SDL_THREAD_STACK_SIZE"

    HINT_TIMER_RESOLUTION ¶

    HINT_TIMER_RESOLUTION :: "SDL_TIMER_RESOLUTION"

    HINT_TOUCH_MOUSE_EVENTS ¶

    HINT_TOUCH_MOUSE_EVENTS :: "SDL_TOUCH_MOUSE_EVENTS"

    HINT_TV_REMOTE_AS_JOYSTICK ¶

    HINT_TV_REMOTE_AS_JOYSTICK :: "SDL_TV_REMOTE_AS_JOYSTICK"

    HINT_VIDEO_ALLOW_SCREENSAVER ¶

    HINT_VIDEO_ALLOW_SCREENSAVER :: "SDL_VIDEO_ALLOW_SCREENSAVER"

    HINT_VIDEO_DOUBLE_BUFFER ¶

    HINT_VIDEO_DOUBLE_BUFFER :: "SDL_VIDEO_DOUBLE_BUFFER"

    HINT_VIDEO_EXTERNAL_CONTEXT ¶

    HINT_VIDEO_EXTERNAL_CONTEXT :: "SDL_VIDEO_EXTERNAL_CONTEXT"

    HINT_VIDEO_HIGHDPI_DISABLED ¶

    HINT_VIDEO_HIGHDPI_DISABLED :: "SDL_VIDEO_HIGHDPI_DISABLED"

    HINT_VIDEO_MAC_FULLSCREEN_SPACES ¶

    HINT_VIDEO_MAC_FULLSCREEN_SPACES :: "SDL_VIDEO_MAC_FULLSCREEN_SPACES"

    HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS ¶

    HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS :: "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"

    HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR ¶

    HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR :: "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR"

    HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT ¶

    HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT :: "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"

    HINT_VIDEO_WIN_D3DCOMPILER ¶

    HINT_VIDEO_WIN_D3DCOMPILER :: "SDL_VIDEO_WIN_D3DCOMPILER"

    HINT_VIDEO_X11_FORCE_EGL ¶

    HINT_VIDEO_X11_FORCE_EGL :: "SDL_VIDEO_X11_FORCE_EGL"

    HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR ¶

    HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR :: "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"

    HINT_VIDEO_X11_NET_WM_PING ¶

    HINT_VIDEO_X11_NET_WM_PING :: "SDL_VIDEO_X11_NET_WM_PING"

    HINT_VIDEO_X11_WINDOW_VISUALID ¶

    HINT_VIDEO_X11_WINDOW_VISUALID :: "SDL_VIDEO_X11_WINDOW_VISUALID"

    HINT_VIDEO_X11_XINERAMA ¶

    HINT_VIDEO_X11_XINERAMA :: "SDL_VIDEO_X11_XINERAMA"

    HINT_VIDEO_X11_XRANDR ¶

    HINT_VIDEO_X11_XRANDR :: "SDL_VIDEO_X11_XRANDR"

    HINT_VIDEO_X11_XVIDMODE ¶

    HINT_VIDEO_X11_XVIDMODE :: "SDL_VIDEO_X11_XVIDMODE"

    HINT_WAVE_FACT_CHUNK ¶

    HINT_WAVE_FACT_CHUNK :: "SDL_WAVE_FACT_CHUNK"

    HINT_WAVE_RIFF_CHUNK_SIZE ¶

    HINT_WAVE_RIFF_CHUNK_SIZE :: "SDL_WAVE_RIFF_CHUNK_SIZE"

    HINT_WAVE_TRUNCATION ¶

    HINT_WAVE_TRUNCATION :: "SDL_WAVE_TRUNCATION"

    HINT_WINDOWS_DISABLE_THREAD_NAMING ¶

    HINT_WINDOWS_DISABLE_THREAD_NAMING :: "SDL_WINDOWS_DISABLE_THREAD_NAMING"

    HINT_WINDOWS_ENABLE_MESSAGELOOP ¶

    HINT_WINDOWS_ENABLE_MESSAGELOOP :: "SDL_WINDOWS_ENABLE_MESSAGELOOP"

    HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS ¶

    HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS :: "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS"

    HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL ¶

    HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL :: "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL"

    HINT_WINDOWS_INTRESOURCE_ICON ¶

    HINT_WINDOWS_INTRESOURCE_ICON :: "SDL_WINDOWS_INTRESOURCE_ICON"

    HINT_WINDOWS_INTRESOURCE_ICON_SMALL ¶

    HINT_WINDOWS_INTRESOURCE_ICON_SMALL :: "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"

    HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 ¶

    HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 :: "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"

    HINT_WINDOWS_USE_D3D9EX ¶

    HINT_WINDOWS_USE_D3D9EX :: "SDL_WINDOWS_USE_D3D9EX"

    HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN ¶

    HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN :: "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"

    HINT_WINRT_HANDLE_BACK_BUTTON ¶

    HINT_WINRT_HANDLE_BACK_BUTTON :: "SDL_WINRT_HANDLE_BACK_BUTTON"

    HINT_WINRT_PRIVACY_POLICY_LABEL ¶

    HINT_WINRT_PRIVACY_POLICY_LABEL :: "SDL_WINRT_PRIVACY_POLICY_LABEL"

    HINT_WINRT_PRIVACY_POLICY_URL ¶

    HINT_WINRT_PRIVACY_POLICY_URL :: "SDL_WINRT_PRIVACY_POLICY_URL"

    HINT_X11_FORCE_OVERRIDE_REDIRECT ¶

    HINT_X11_FORCE_OVERRIDE_REDIRECT :: "SDL_X11_FORCE_OVERRIDE_REDIRECT"

    HINT_XINPUT_ENABLED ¶

    HINT_XINPUT_ENABLED :: "SDL_XINPUT_ENABLED"

    HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING ¶

    HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING :: "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"

    ICONV_E2BIG ¶

    ICONV_E2BIG: uint : ~c.size_t(1)
     

    (size_t)-2

    ICONV_EILSEQ ¶

    ICONV_EILSEQ: uint : ~c.size_t(2)
     

    (size_t)-3

    ICONV_EINVAL ¶

    ICONV_EINVAL: uint : ~c.size_t(3)
     

    (size_t)-4

    ICONV_ERROR ¶

    ICONV_ERROR: uint : ~c.size_t(0)
     

    The SDL implementation of iconv() returns these error codes

    INIT_AUDIO ¶

    INIT_AUDIO: bit_set[InitFlag; u32] : InitFlags{.AUDIO}

    INIT_EVENTS ¶

    INIT_EVENTS: bit_set[InitFlag; u32] : InitFlags{.EVENTS}

    INIT_EVERYTHING ¶

    INIT_EVERYTHING: bit_set[InitFlag; u32] : InitFlags{.TIMER, .AUDIO, .VIDEO, .EVENTS, .JOYSTICK, .HAPTIC, .GAMECONTROLLER, .SENSOR}

    INIT_GAMECONTROLLER ¶

    INIT_GAMECONTROLLER: bit_set[InitFlag; u32] : InitFlags{.GAMECONTROLLER}
     

    INIT_GAMECONTROLLER implies INIT_JOYSTICK

    INIT_HAPTIC ¶

    INIT_HAPTIC: bit_set[InitFlag; u32] : InitFlags{.HAPTIC}

    INIT_JOYSTICK ¶

    INIT_JOYSTICK: bit_set[InitFlag; u32] : InitFlags{.JOYSTICK}
     

    INIT_JOYSTICK implies INIT_EVENTS

    INIT_NOPARACHUTE ¶

    INIT_NOPARACHUTE: bit_set[InitFlag; u32] : InitFlags{.NOPARACHUTE}
     

    compatibility; this flag is ignored.

    INIT_SENSOR ¶

    INIT_SENSOR: bit_set[InitFlag; u32] : InitFlags{.SENSOR}

    INIT_TIMER ¶

    INIT_TIMER: bit_set[InitFlag; u32] : InitFlags{.TIMER}

    INIT_VIDEO ¶

    INIT_VIDEO: bit_set[InitFlag; u32] : InitFlags{.VIDEO}
     

    INIT_VIDEO implies INIT_EVENTS

    External examples sdl2/chase_in_space · sdl2/hellope

    KMOD_ALT ¶

    KMOD_ALT :: Keymod{.LALT, .RALT}

    KMOD_CAPS ¶

    KMOD_CAPS :: Keymod{.CAPS}

    KMOD_CTRL ¶

    KMOD_CTRL :: Keymod{.LCTRL, .RCTRL}

    KMOD_GUI ¶

    KMOD_GUI :: Keymod{.LGUI, .RGUI}

    KMOD_LALT ¶

    KMOD_LALT :: Keymod{.LALT}

    KMOD_LCTRL ¶

    KMOD_LCTRL :: Keymod{.LCTRL}

    KMOD_LGUI ¶

    KMOD_LGUI :: Keymod{.LGUI}

    KMOD_LSHIFT ¶

    KMOD_LSHIFT :: Keymod{.LSHIFT}

    KMOD_MODE ¶

    KMOD_MODE :: Keymod{.MODE}

    KMOD_RALT ¶

    KMOD_RALT :: Keymod{.RALT}

    KMOD_RCTRL ¶

    KMOD_RCTRL :: Keymod{.RCTRL}

    KMOD_RESERVED ¶

    KMOD_RESERVED :: Keymod{.RESERVED}

    KMOD_RGUI ¶

    KMOD_RGUI :: Keymod{.RGUI}

    KMOD_RSHIFT ¶

    KMOD_RSHIFT :: Keymod{.RSHIFT}

    KMOD_SHIFT ¶

    KMOD_SHIFT :: Keymod{.LSHIFT, .RSHIFT}

    MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT ¶

    MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT :: MessageBoxFlags{.BUTTONS_LEFT_TO_RIGHT}

    MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT ¶

    MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT :: MessageBoxFlags{.BUTTONS_RIGHT_TO_LEFT}

    MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT ¶

    MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT :: MessageBoxButtonFlags{.ESCAPEKEY_DEFAULT}

    MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT ¶

    MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT :: MessageBoxButtonFlags{.RETURNKEY_DEFAULT}

    MESSAGEBOX_ERROR ¶

    MESSAGEBOX_ERROR :: MessageBoxFlags{.ERROR}

    MESSAGEBOX_INFORMATION ¶

    MESSAGEBOX_INFORMATION :: MessageBoxFlags{.INFORMATION}

    MESSAGEBOX_WARNING ¶

    MESSAGEBOX_WARNING :: MessageBoxFlags{.WARNING}

    MOUSE_TOUCH_ID ¶

    MOUSE_TOUCH_ID :: TouchID(-1)

    M_PI ¶

    M_PI :: 3.14159265358979323846264338327950288

    PREALLOC ¶

    PREALLOC :: 0x00000001
     

    Surface uses preallocated memory

    RENDERER_ACCELERATED ¶

    RENDERER_ACCELERATED :: RendererFlags{.ACCELERATED}
    External examples sdl2/chase_in_space

    RENDERER_PRESENTVSYNC ¶

    RENDERER_PRESENTVSYNC :: RendererFlags{.PRESENTVSYNC}

    RENDERER_SOFTWARE ¶

    RENDERER_SOFTWARE :: RendererFlags{.SOFTWARE}

    RENDERER_TARGETTEXTURE ¶

    RENDERER_TARGETTEXTURE :: RendererFlags{.TARGETTEXTURE}

    RLEACCEL ¶

    RLEACCEL :: 0x00000002
     

    Surface is RLE encoded

    RWOPS_JNIFILE ¶

    RWOPS_JNIFILE :: 3
     

    Android asset

    RWOPS_MEMORY ¶

    RWOPS_MEMORY :: 4
     

    Memory stream

    RWOPS_MEMORY_RO ¶

    RWOPS_MEMORY_RO :: 5
     

    Read-Only memory stream

    RWOPS_STDFILE ¶

    RWOPS_STDFILE :: 2
     

    Stdio file

    RWOPS_UNKNOWN ¶

    RWOPS_UNKNOWN :: 0
     

    RWops Types

    RWOPS_VITAFILE ¶

    RWOPS_VITAFILE :: 6
     

    Vita file

    RWOPS_WINFILE ¶

    RWOPS_WINFILE :: 1
     

    Win32 file

    SCANCODE_0 ¶

    SCANCODE_0 :: Scancode.NUM0

    SCANCODE_1 ¶

    SCANCODE_1 :: Scancode.NUM1

    SCANCODE_2 ¶

    SCANCODE_2 :: Scancode.NUM2

    SCANCODE_3 ¶

    SCANCODE_3 :: Scancode.NUM3

    SCANCODE_4 ¶

    SCANCODE_4 :: Scancode.NUM4

    SCANCODE_5 ¶

    SCANCODE_5 :: Scancode.NUM5

    SCANCODE_6 ¶

    SCANCODE_6 :: Scancode.NUM6

    SCANCODE_7 ¶

    SCANCODE_7 :: Scancode.NUM7

    SCANCODE_8 ¶

    SCANCODE_8 :: Scancode.NUM8

    SCANCODE_9 ¶

    SCANCODE_9 :: Scancode.NUM9

    SCANCODE_A ¶

    SCANCODE_A :: Scancode.A
    External examples sdl2/chase_in_space

    SCANCODE_AC_BACK ¶

    SCANCODE_AC_BACK :: Scancode.AC_BACK

    SCANCODE_AC_BOOKMARKS ¶

    SCANCODE_AC_BOOKMARKS :: Scancode.AC_BOOKMARKS

    SCANCODE_AC_FORWARD ¶

    SCANCODE_AC_FORWARD :: Scancode.AC_FORWARD

    SCANCODE_AC_HOME ¶

    SCANCODE_AC_HOME :: Scancode.AC_HOME

    SCANCODE_AC_REFRESH ¶

    SCANCODE_AC_REFRESH :: Scancode.AC_REFRESH
    SCANCODE_AC_SEARCH :: Scancode.AC_SEARCH

    SCANCODE_AC_STOP ¶

    SCANCODE_AC_STOP :: Scancode.AC_STOP

    SCANCODE_AGAIN ¶

    SCANCODE_AGAIN :: Scancode.AGAIN

    SCANCODE_ALTERASE ¶

    SCANCODE_ALTERASE :: Scancode.ALTERASE

    SCANCODE_APOSTROPHE ¶

    SCANCODE_APOSTROPHE :: Scancode.APOSTROPHE

    SCANCODE_APP1 ¶

    SCANCODE_APP1 :: Scancode.APP1

    SCANCODE_APP2 ¶

    SCANCODE_APP2 :: Scancode.APP2

    SCANCODE_APPLICATION ¶

    SCANCODE_APPLICATION :: Scancode.APPLICATION

    SCANCODE_AUDIOFASTFORWARD ¶

    SCANCODE_AUDIOFASTFORWARD :: Scancode.AUDIOFASTFORWARD

    SCANCODE_AUDIOMUTE ¶

    SCANCODE_AUDIOMUTE :: Scancode.AUDIOMUTE

    SCANCODE_AUDIONEXT ¶

    SCANCODE_AUDIONEXT :: Scancode.AUDIONEXT

    SCANCODE_AUDIOPLAY ¶

    SCANCODE_AUDIOPLAY :: Scancode.AUDIOPLAY

    SCANCODE_AUDIOPREV ¶

    SCANCODE_AUDIOPREV :: Scancode.AUDIOPREV

    SCANCODE_AUDIOREWIND ¶

    SCANCODE_AUDIOREWIND :: Scancode.AUDIOREWIND

    SCANCODE_AUDIOSTOP ¶

    SCANCODE_AUDIOSTOP :: Scancode.AUDIOSTOP

    SCANCODE_BACKSLASH ¶

    SCANCODE_BACKSLASH :: Scancode.BACKSLASH

    SCANCODE_BACKSPACE ¶

    SCANCODE_BACKSPACE :: Scancode.BACKSPACE

    SCANCODE_BRIGHTNESSDOWN ¶

    SCANCODE_BRIGHTNESSDOWN :: Scancode.BRIGHTNESSDOWN

    SCANCODE_BRIGHTNESSUP ¶

    SCANCODE_BRIGHTNESSUP :: Scancode.BRIGHTNESSUP

    SCANCODE_CALCULATOR ¶

    SCANCODE_CALCULATOR :: Scancode.CALCULATOR

    SCANCODE_CANCEL ¶

    SCANCODE_CANCEL :: Scancode.CANCEL

    SCANCODE_CAPSLOCK ¶

    SCANCODE_CAPSLOCK :: Scancode.CAPSLOCK

    SCANCODE_CLEAR ¶

    SCANCODE_CLEAR :: Scancode.CLEAR

    SCANCODE_CLEARAGAIN ¶

    SCANCODE_CLEARAGAIN :: Scancode.CLEARAGAIN

    SCANCODE_COMMA ¶

    SCANCODE_COMMA :: Scancode.COMMA

    SCANCODE_COMPUTER ¶

    SCANCODE_COMPUTER :: Scancode.COMPUTER

    SCANCODE_COPY ¶

    SCANCODE_COPY :: Scancode.COPY

    SCANCODE_CRSEL ¶

    SCANCODE_CRSEL :: Scancode.CRSEL

    SCANCODE_CURRENCYSUBUNIT ¶

    SCANCODE_CURRENCYSUBUNIT :: Scancode.CURRENCYSUBUNIT

    SCANCODE_CURRENCYUNIT ¶

    SCANCODE_CURRENCYUNIT :: Scancode.CURRENCYUNIT

    SCANCODE_D ¶

    SCANCODE_D :: Scancode.D
    External examples sdl2/chase_in_space

    SCANCODE_DECIMALSEPARATOR ¶

    SCANCODE_DECIMALSEPARATOR :: Scancode.DECIMALSEPARATOR

    SCANCODE_DELETE ¶

    SCANCODE_DELETE :: Scancode.DELETE

    SCANCODE_DISPLAYSWITCH ¶

    SCANCODE_DISPLAYSWITCH :: Scancode.DISPLAYSWITCH

    SCANCODE_DOWN ¶

    SCANCODE_DOWN :: Scancode.DOWN
    External examples sdl2/chase_in_space

    SCANCODE_EJECT ¶

    SCANCODE_EJECT :: Scancode.EJECT

    SCANCODE_EQUALS ¶

    SCANCODE_EQUALS :: Scancode.EQUALS

    SCANCODE_ESCAPE ¶

    SCANCODE_ESCAPE :: Scancode.ESCAPE
    External examples sdl2/chase_in_space

    SCANCODE_EXECUTE ¶

    SCANCODE_EXECUTE :: Scancode.EXECUTE

    SCANCODE_EXSEL ¶

    SCANCODE_EXSEL :: Scancode.EXSEL

    SCANCODE_FIND ¶

    SCANCODE_FIND :: Scancode.FIND

    SCANCODE_GRAVE ¶

    SCANCODE_GRAVE :: Scancode.GRAVE

    SCANCODE_HELP ¶

    SCANCODE_HELP :: Scancode.HELP

    SCANCODE_HOME ¶

    SCANCODE_HOME :: Scancode.HOME

    SCANCODE_INSERT ¶

    SCANCODE_INSERT :: Scancode.INSERT

    SCANCODE_INTERNATIONAL1 ¶

    SCANCODE_INTERNATIONAL1 :: Scancode.INTERNATIONAL1

    SCANCODE_INTERNATIONAL2 ¶

    SCANCODE_INTERNATIONAL2 :: Scancode.INTERNATIONAL2

    SCANCODE_INTERNATIONAL3 ¶

    SCANCODE_INTERNATIONAL3 :: Scancode.INTERNATIONAL3

    SCANCODE_INTERNATIONAL4 ¶

    SCANCODE_INTERNATIONAL4 :: Scancode.INTERNATIONAL4

    SCANCODE_INTERNATIONAL5 ¶

    SCANCODE_INTERNATIONAL5 :: Scancode.INTERNATIONAL5

    SCANCODE_INTERNATIONAL6 ¶

    SCANCODE_INTERNATIONAL6 :: Scancode.INTERNATIONAL6

    SCANCODE_INTERNATIONAL7 ¶

    SCANCODE_INTERNATIONAL7 :: Scancode.INTERNATIONAL7

    SCANCODE_INTERNATIONAL8 ¶

    SCANCODE_INTERNATIONAL8 :: Scancode.INTERNATIONAL8

    SCANCODE_INTERNATIONAL9 ¶

    SCANCODE_INTERNATIONAL9 :: Scancode.INTERNATIONAL9

    SCANCODE_KBDILLUMDOWN ¶

    SCANCODE_KBDILLUMDOWN :: Scancode.KBDILLUMDOWN

    SCANCODE_KBDILLUMTOGGLE ¶

    SCANCODE_KBDILLUMTOGGLE :: Scancode.KBDILLUMTOGGLE

    SCANCODE_KBDILLUMUP ¶

    SCANCODE_KBDILLUMUP :: Scancode.KBDILLUMUP

    SCANCODE_KP_0 ¶

    SCANCODE_KP_0 :: Scancode.KP_0

    SCANCODE_KP_00 ¶

    SCANCODE_KP_00 :: Scancode.KP_00

    SCANCODE_KP_000 ¶

    SCANCODE_KP_000 :: Scancode.KP_000

    SCANCODE_KP_1 ¶

    SCANCODE_KP_1 :: Scancode.KP_1

    SCANCODE_KP_2 ¶

    SCANCODE_KP_2 :: Scancode.KP_2

    SCANCODE_KP_3 ¶

    SCANCODE_KP_3 :: Scancode.KP_3

    SCANCODE_KP_4 ¶

    SCANCODE_KP_4 :: Scancode.KP_4

    SCANCODE_KP_5 ¶

    SCANCODE_KP_5 :: Scancode.KP_5

    SCANCODE_KP_6 ¶

    SCANCODE_KP_6 :: Scancode.KP_6

    SCANCODE_KP_7 ¶

    SCANCODE_KP_7 :: Scancode.KP_7

    SCANCODE_KP_8 ¶

    SCANCODE_KP_8 :: Scancode.KP_8

    SCANCODE_KP_9 ¶

    SCANCODE_KP_9 :: Scancode.KP_9

    SCANCODE_KP_A ¶

    SCANCODE_KP_A :: Scancode.KP_A

    SCANCODE_KP_AMPERSAND ¶

    SCANCODE_KP_AMPERSAND :: Scancode.KP_AMPERSAND

    SCANCODE_KP_AT ¶

    SCANCODE_KP_AT :: Scancode.KP_AT

    SCANCODE_KP_B ¶

    SCANCODE_KP_B :: Scancode.KP_B

    SCANCODE_KP_BACKSPACE ¶

    SCANCODE_KP_BACKSPACE :: Scancode.KP_BACKSPACE

    SCANCODE_KP_BINARY ¶

    SCANCODE_KP_BINARY :: Scancode.KP_BINARY

    SCANCODE_KP_C ¶

    SCANCODE_KP_C :: Scancode.KP_C

    SCANCODE_KP_CLEAR ¶

    SCANCODE_KP_CLEAR :: Scancode.KP_CLEAR

    SCANCODE_KP_CLEARENTRY ¶

    SCANCODE_KP_CLEARENTRY :: Scancode.KP_CLEARENTRY

    SCANCODE_KP_COLON ¶

    SCANCODE_KP_COLON :: Scancode.KP_COLON

    SCANCODE_KP_COMMA ¶

    SCANCODE_KP_COMMA :: Scancode.KP_COMMA

    SCANCODE_KP_D ¶

    SCANCODE_KP_D :: Scancode.KP_D

    SCANCODE_KP_DBLAMPERSAND ¶

    SCANCODE_KP_DBLAMPERSAND :: Scancode.KP_DBLAMPERSAND

    SCANCODE_KP_DBLVERTICALBAR ¶

    SCANCODE_KP_DBLVERTICALBAR :: Scancode.KP_DBLVERTICALBAR

    SCANCODE_KP_DECIMAL ¶

    SCANCODE_KP_DECIMAL :: Scancode.KP_DECIMAL

    SCANCODE_KP_DIVIDE ¶

    SCANCODE_KP_DIVIDE :: Scancode.KP_DIVIDE

    SCANCODE_KP_E ¶

    SCANCODE_KP_E :: Scancode.KP_E

    SCANCODE_KP_ENTER ¶

    SCANCODE_KP_ENTER :: Scancode.KP_ENTER

    SCANCODE_KP_EQUALS ¶

    SCANCODE_KP_EQUALS :: Scancode.KP_EQUALS

    SCANCODE_KP_EQUALSAS400 ¶

    SCANCODE_KP_EQUALSAS400 :: Scancode.KP_EQUALSAS400

    SCANCODE_KP_EXCLAM ¶

    SCANCODE_KP_EXCLAM :: Scancode.KP_EXCLAM

    SCANCODE_KP_F ¶

    SCANCODE_KP_F :: Scancode.KP_F

    SCANCODE_KP_GREATER ¶

    SCANCODE_KP_GREATER :: Scancode.KP_GREATER

    SCANCODE_KP_HASH ¶

    SCANCODE_KP_HASH :: Scancode.KP_HASH

    SCANCODE_KP_HEXADECIMAL ¶

    SCANCODE_KP_HEXADECIMAL :: Scancode.KP_HEXADECIMAL

    SCANCODE_KP_LEFTBRACE ¶

    SCANCODE_KP_LEFTBRACE :: Scancode.KP_LEFTBRACE

    SCANCODE_KP_LEFTPAREN ¶

    SCANCODE_KP_LEFTPAREN :: Scancode.KP_LEFTPAREN

    SCANCODE_KP_LESS ¶

    SCANCODE_KP_LESS :: Scancode.KP_LESS

    SCANCODE_KP_MEMADD ¶

    SCANCODE_KP_MEMADD :: Scancode.KP_MEMADD

    SCANCODE_KP_MEMCLEAR ¶

    SCANCODE_KP_MEMCLEAR :: Scancode.KP_MEMCLEAR

    SCANCODE_KP_MEMDIVIDE ¶

    SCANCODE_KP_MEMDIVIDE :: Scancode.KP_MEMDIVIDE

    SCANCODE_KP_MEMMULTIPLY ¶

    SCANCODE_KP_MEMMULTIPLY :: Scancode.KP_MEMMULTIPLY

    SCANCODE_KP_MEMRECALL ¶

    SCANCODE_KP_MEMRECALL :: Scancode.KP_MEMRECALL

    SCANCODE_KP_MEMSTORE ¶

    SCANCODE_KP_MEMSTORE :: Scancode.KP_MEMSTORE

    SCANCODE_KP_MEMSUBTRACT ¶

    SCANCODE_KP_MEMSUBTRACT :: Scancode.KP_MEMSUBTRACT

    SCANCODE_KP_MINUS ¶

    SCANCODE_KP_MINUS :: Scancode.KP_MINUS

    SCANCODE_KP_MULTIPLY ¶

    SCANCODE_KP_MULTIPLY :: Scancode.KP_MULTIPLY

    SCANCODE_KP_OCTAL ¶

    SCANCODE_KP_OCTAL :: Scancode.KP_OCTAL

    SCANCODE_KP_PERCENT ¶

    SCANCODE_KP_PERCENT :: Scancode.KP_PERCENT

    SCANCODE_KP_PERIOD ¶

    SCANCODE_KP_PERIOD :: Scancode.KP_PERIOD

    SCANCODE_KP_PLUS ¶

    SCANCODE_KP_PLUS :: Scancode.KP_PLUS

    SCANCODE_KP_PLUSMINUS ¶

    SCANCODE_KP_PLUSMINUS :: Scancode.KP_PLUSMINUS

    SCANCODE_KP_POWER ¶

    SCANCODE_KP_POWER :: Scancode.KP_POWER

    SCANCODE_KP_RIGHTBRACE ¶

    SCANCODE_KP_RIGHTBRACE :: Scancode.KP_RIGHTBRACE

    SCANCODE_KP_RIGHTPAREN ¶

    SCANCODE_KP_RIGHTPAREN :: Scancode.KP_RIGHTPAREN

    SCANCODE_KP_SPACE ¶

    SCANCODE_KP_SPACE :: Scancode.KP_SPACE

    SCANCODE_KP_TAB ¶

    SCANCODE_KP_TAB :: Scancode.KP_TAB

    SCANCODE_KP_VERTICALBAR ¶

    SCANCODE_KP_VERTICALBAR :: Scancode.KP_VERTICALBAR

    SCANCODE_KP_XOR ¶

    SCANCODE_KP_XOR :: Scancode.KP_XOR

    SCANCODE_LALT ¶

    SCANCODE_LALT :: Scancode.LALT

    SCANCODE_LANG1 ¶

    SCANCODE_LANG1 :: Scancode.LANG1

    SCANCODE_LANG2 ¶

    SCANCODE_LANG2 :: Scancode.LANG2

    SCANCODE_LANG3 ¶

    SCANCODE_LANG3 :: Scancode.LANG3

    SCANCODE_LANG4 ¶

    SCANCODE_LANG4 :: Scancode.LANG4

    SCANCODE_LANG5 ¶

    SCANCODE_LANG5 :: Scancode.LANG5

    SCANCODE_LANG6 ¶

    SCANCODE_LANG6 :: Scancode.LANG6

    SCANCODE_LANG7 ¶

    SCANCODE_LANG7 :: Scancode.LANG7

    SCANCODE_LANG8 ¶

    SCANCODE_LANG8 :: Scancode.LANG8

    SCANCODE_LANG9 ¶

    SCANCODE_LANG9 :: Scancode.LANG9

    SCANCODE_LCTRL ¶

    SCANCODE_LCTRL :: Scancode.LCTRL

    SCANCODE_LEFT ¶

    SCANCODE_LEFT :: Scancode.LEFT
    External examples sdl2/chase_in_space

    SCANCODE_LEFTBRACKET ¶

    SCANCODE_LEFTBRACKET :: Scancode.LEFTBRACKET

    SCANCODE_LGUI ¶

    SCANCODE_LGUI :: Scancode.LGUI

    SCANCODE_LSHIFT ¶

    SCANCODE_LSHIFT :: Scancode.LSHIFT
    External examples sdl2/chase_in_space

    SCANCODE_MAIL ¶

    SCANCODE_MAIL :: Scancode.MAIL

    SCANCODE_MEDIASELECT ¶

    SCANCODE_MEDIASELECT :: Scancode.MEDIASELECT

    SCANCODE_MENU ¶

    SCANCODE_MENU :: Scancode.MENU

    SCANCODE_MINUS ¶

    SCANCODE_MINUS :: Scancode.MINUS

    SCANCODE_MODE ¶

    SCANCODE_MODE :: Scancode.MODE

    SCANCODE_MUTE ¶

    SCANCODE_MUTE :: Scancode.MUTE

    SCANCODE_NONUSBACKSLASH ¶

    SCANCODE_NONUSBACKSLASH :: Scancode.NONUSBACKSLASH

    SCANCODE_NONUSHASH ¶

    SCANCODE_NONUSHASH :: Scancode.NONUSHASH

    SCANCODE_NUMLOCKCLEAR ¶

    SCANCODE_NUMLOCKCLEAR :: Scancode.NUMLOCKCLEAR

    SCANCODE_OPER ¶

    SCANCODE_OPER :: Scancode.OPER

    SCANCODE_PAGEDOWN ¶

    SCANCODE_PAGEDOWN :: Scancode.PAGEDOWN

    SCANCODE_PAGEUP ¶

    SCANCODE_PAGEUP :: Scancode.PAGEUP

    SCANCODE_PASTE ¶

    SCANCODE_PASTE :: Scancode.PASTE

    SCANCODE_PAUSE ¶

    SCANCODE_PAUSE :: Scancode.PAUSE

    SCANCODE_PERIOD ¶

    SCANCODE_PERIOD :: Scancode.PERIOD

    SCANCODE_POWER ¶

    SCANCODE_POWER :: Scancode.POWER

    SCANCODE_PRINTSCREEN ¶

    SCANCODE_PRINTSCREEN :: Scancode.PRINTSCREEN

    SCANCODE_PRIOR ¶

    SCANCODE_PRIOR :: Scancode.PRIOR

    SCANCODE_RALT ¶

    SCANCODE_RALT :: Scancode.RALT

    SCANCODE_RCTRL ¶

    SCANCODE_RCTRL :: Scancode.RCTRL

    SCANCODE_RETURN ¶

    SCANCODE_RETURN :: Scancode.RETURN

    SCANCODE_RETURN2 ¶

    SCANCODE_RETURN2 :: Scancode.RETURN2

    SCANCODE_RGUI ¶

    SCANCODE_RGUI :: Scancode.RGUI

    SCANCODE_RIGHT ¶

    SCANCODE_RIGHT :: Scancode.RIGHT
    External examples sdl2/chase_in_space

    SCANCODE_RIGHTBRACKET ¶

    SCANCODE_RIGHTBRACKET :: Scancode.RIGHTBRACKET

    SCANCODE_RSHIFT ¶

    SCANCODE_RSHIFT :: Scancode.RSHIFT

    SCANCODE_S ¶

    SCANCODE_S :: Scancode.S
    External examples sdl2/chase_in_space

    SCANCODE_SCROLLLOCK ¶

    SCANCODE_SCROLLLOCK :: Scancode.SCROLLLOCK

    SCANCODE_SELECT ¶

    SCANCODE_SELECT :: Scancode.SELECT

    SCANCODE_SEMICOLON ¶

    SCANCODE_SEMICOLON :: Scancode.SEMICOLON

    SCANCODE_SEPARATOR ¶

    SCANCODE_SEPARATOR :: Scancode.SEPARATOR

    SCANCODE_SLASH ¶

    SCANCODE_SLASH :: Scancode.SLASH

    SCANCODE_SLEEP ¶

    SCANCODE_SLEEP :: Scancode.SLEEP

    SCANCODE_SPACE ¶

    SCANCODE_SPACE :: Scancode.SPACE

    SCANCODE_STOP ¶

    SCANCODE_STOP :: Scancode.STOP

    SCANCODE_SYSREQ ¶

    SCANCODE_SYSREQ :: Scancode.SYSREQ

    SCANCODE_THOUSANDSSEPARATOR ¶

    SCANCODE_THOUSANDSSEPARATOR :: Scancode.THOUSANDSSEPARATOR

    SCANCODE_UNDO ¶

    SCANCODE_UNDO :: Scancode.UNDO

    SCANCODE_UNKNOWN ¶

    SCANCODE_UNKNOWN :: Scancode.UNKNOWN

    SCANCODE_UP ¶

    SCANCODE_UP :: Scancode.UP
    External examples sdl2/chase_in_space

    SCANCODE_VOLUMEDOWN ¶

    SCANCODE_VOLUMEDOWN :: Scancode.VOLUMEDOWN

    SCANCODE_VOLUMEUP ¶

    SCANCODE_VOLUMEUP :: Scancode.VOLUMEUP

    SCANCODE_W ¶

    SCANCODE_W :: Scancode.W
    External examples sdl2/chase_in_space

    SEEK_CUR ¶

    SEEK_CUR :: 1
     

    Seek relative to current read point

    SEEK_END ¶

    SEEK_END :: 2
     

    Seek relative to the end of data

    SEEK_SET ¶

    SEEK_SET :: 0
     

    Seek from the beginning of data

    SIMD_ALIGNED ¶

    SIMD_ALIGNED :: 0x00000008
     

    Surface uses aligned memory

    STANDARD_GRAVITY ¶

    STANDARD_GRAVITY :: 9.80665

    SWSURFACE ¶

    SWSURFACE :: 0
     

    Just here for compatibility

    TEXTUREMODULATE_ALPHA ¶

    TEXTUREMODULATE_ALPHA :: 0x00000002
     

    srcA = srcA * alpha

    TEXTUREMODULATE_COLOR ¶

    TEXTUREMODULATE_COLOR :: 0x00000001
     

    srcC = srcC * color

    TEXTUREMODULATE_NONE ¶

    TEXTUREMODULATE_NONE :: 0x00000000
     

    No modulation

    WINDOWPOS_CENTERED ¶

    WINDOWPOS_CENTERED :: WINDOWPOS_CENTERED_MASK | 0
    External examples sdl2/chase_in_space

    WINDOWPOS_CENTERED_MASK ¶

    WINDOWPOS_CENTERED_MASK :: 0x2FFF0000

    WINDOWPOS_UNDEFINED ¶

    WINDOWPOS_UNDEFINED :: WINDOWPOS_UNDEFINED_MASK | 0
    External examples sdl2/microui

    WINDOWPOS_UNDEFINED_MASK ¶

    WINDOWPOS_UNDEFINED_MASK :: 0x1FFF0000

    WINDOW_ALLOW_HIGHDPI ¶

    WINDOW_ALLOW_HIGHDPI :: WindowFlags{.ALLOW_HIGHDPI}

    WINDOW_ALWAYS_ON_TOP ¶

    WINDOW_ALWAYS_ON_TOP :: WindowFlags{.ALWAYS_ON_TOP}

    WINDOW_BORDERLESS ¶

    WINDOW_BORDERLESS :: WindowFlags{.BORDERLESS}

    WINDOW_FOREIGN ¶

    WINDOW_FOREIGN :: WindowFlags{.FOREIGN}

    WINDOW_FULLSCREEN ¶

    WINDOW_FULLSCREEN :: WindowFlags{.FULLSCREEN}

    WINDOW_FULLSCREEN_DESKTOP ¶

    WINDOW_FULLSCREEN_DESKTOP :: WindowFlags{.FULLSCREEN, ._INTERNAL_FULLSCREEN_DESKTOP}

    WINDOW_HIDDEN ¶

    WINDOW_HIDDEN :: WindowFlags{.HIDDEN}

    WINDOW_INPUT_FOCUS ¶

    WINDOW_INPUT_FOCUS :: WindowFlags{.INPUT_FOCUS}

    WINDOW_INPUT_GRABBED ¶

    WINDOW_INPUT_GRABBED :: WindowFlags{.INPUT_GRABBED}

    WINDOW_KEYBOARD_GRABBED ¶

    WINDOW_KEYBOARD_GRABBED :: WindowFlags{.KEYBOARD_GRABBED}

    WINDOW_MAXIMIZED ¶

    WINDOW_MAXIMIZED :: WindowFlags{.MAXIMIZED}

    WINDOW_METAL ¶

    WINDOW_METAL :: WindowFlags{.METAL}

    WINDOW_MINIMIZED ¶

    WINDOW_MINIMIZED :: WindowFlags{.MINIMIZED}

    WINDOW_MOUSE_CAPTURE ¶

    WINDOW_MOUSE_CAPTURE :: WindowFlags{.MOUSE_CAPTURE}

    WINDOW_MOUSE_FOCUS ¶

    WINDOW_MOUSE_FOCUS :: WindowFlags{.MOUSE_FOCUS}

    WINDOW_MOUSE_GRABBED ¶

    WINDOW_MOUSE_GRABBED :: WindowFlags{.MOUSE_GRABBED}

    WINDOW_OPENGL ¶

    WINDOW_OPENGL :: WindowFlags{.OPENGL}

    WINDOW_POPUP_MENU ¶

    WINDOW_POPUP_MENU :: WindowFlags{.POPUP_MENU}

    WINDOW_RESIZABLE ¶

    WINDOW_RESIZABLE :: WindowFlags{.RESIZABLE}

    WINDOW_SHOWN ¶

    WINDOW_SHOWN :: WindowFlags{.SHOWN}
    External examples sdl2/chase_in_space

    WINDOW_SKIP_TASKBAR ¶

    WINDOW_SKIP_TASKBAR :: WindowFlags{.SKIP_TASKBAR}

    WINDOW_TOOLTIP ¶

    WINDOW_TOOLTIP :: WindowFlags{.TOOLTIP}

    WINDOW_UTILITY ¶

    WINDOW_UTILITY :: WindowFlags{.UTILITY}

    WINDOW_VULKAN ¶

    WINDOW_VULKAN :: WindowFlags{.VULKAN}

    Variables

    This section is empty.

    Procedures

    AUDIO_BITSIZE ¶

    AUDIO_BITSIZE :: proc "c" (x: AudioFormat) -> u8 {…}

    AUDIO_ISBIGENDIAN ¶

    AUDIO_ISBIGENDIAN :: proc "c" (x: AudioFormat) -> bool {…}

    AUDIO_ISFLOAT ¶

    AUDIO_ISFLOAT :: proc "c" (x: AudioFormat) -> bool {…}

    AUDIO_ISINT ¶

    AUDIO_ISINT :: proc "c" (x: AudioFormat) -> bool {…}

    AUDIO_ISLITTLEENDIAN ¶

    AUDIO_ISLITTLEENDIAN :: proc "c" (x: AudioFormat) -> bool {…}

    AUDIO_ISSIGNED ¶

    AUDIO_ISSIGNED :: proc "c" (x: AudioFormat) -> bool {…}

    AUDIO_ISUNSIGNED ¶

    AUDIO_ISUNSIGNED :: proc "c" (x: AudioFormat) -> bool {…}

    AddEventWatch ¶

    AddEventWatch :: proc "c" (filter: EventFilter, userdata: rawptr) ---
    External examples sdl2/microui

    AddTimer ¶

    AddTimer :: proc "c" (interval: u32, callback: TimerCallback, param: rawptr) -> TimerID ---

    AndroidShowToast ¶

    AndroidShowToast :: proc "c" (
    	message:                             cstring, 
    	duration, gravity, xoffset, yoffset: i32, 
    ) -> i32 ---

    AtomicCAS ¶

    AtomicCAS :: proc "c" (a: ^atomic_t, oldval, newval: i32) -> bool ---

    AtomicCASPtr ¶

    AtomicCASPtr :: proc "c" (a: ^rawptr, oldval, newval: rawptr) -> bool ---

    AtomicLock ¶

    @(synchronizes=.Acquire)
    AtomicLock :: proc "c" (lock: ^SpinLock) ---

    AtomicTryLock ¶

    @(synchronizes=.Acquire)
    AtomicTryLock :: proc "c" (lock: ^SpinLock) -> bool ---

    AtomicUnlock ¶

    @(synchronizes=.Release)
    AtomicUnlock :: proc "c" (lock: ^SpinLock) ---

    BUTTON ¶

    BUTTON :: proc "c" (X: i32) -> i32 {…}

    BuildAudioCVT ¶

    BuildAudioCVT :: proc "c" (
    	cvt:          ^AudioCVT, 
    	src_format:   AudioFormat, 
    	src_channels: u8, 
    	src_rate:     i32, 
    	dst_format:   AudioFormat, 
    	dst_channels: u8, 
    	dst_rate:     i32, 
    ) -> i32 ---

    CalculateGammaRamp ¶

    CalculateGammaRamp :: proc "c" (gamma: f32, ramp: ^[256]u16) ---

    ComposeCustomBlendMode ¶

    ComposeCustomBlendMode :: proc "c" (
    	srcColorFactor, dstColorFactor: BlendFactor, 
    	colorOperation:                 BlendOperation, 
    	srcAlphaFactor, dstAlphaFactor: BlendFactor, 
    	alphaOperation:                 BlendOperation, 
    ) -> BlendMode ---

    ConvertPixels ¶

    ConvertPixels :: proc "c" (
    	width, height: i32, 
    	src_format:    u32, 
    	src:           rawptr, 
    	src_pitch:     i32, 
    	dst_format:    u32, 
    	dst:           rawptr, 
    	dst_pitch:     i32, 
    ) -> i32 ---

    ConvertSurfaceFormat ¶

    ConvertSurfaceFormat :: proc "c" (src: ^Surface, pixel_format: u32, flags: u32) -> ^Surface ---

    CreateColorCursor ¶

    CreateColorCursor :: proc "c" (surface: ^Surface, hot_x, hot_y: i32) -> ^Cursor ---

    CreateCursor ¶

    CreateCursor :: proc "c" (
    	data:               [^]u8, 
    	mask:               [^]u8, 
    	w, h, hot_x, hot_y: i32, 
    ) -> ^Cursor ---

    CreateRGBSurface ¶

    CreateRGBSurface :: proc "c" (
    	flags:                      u32, 
    	width, height, depth:       i32, 
    	Rmask, Gmask, Bmask, Amask: u32, 
    ) -> ^Surface ---

    CreateRGBSurfaceFrom ¶

    CreateRGBSurfaceFrom :: proc "c" (
    	pixels:                      rawptr, 
    	width, height, depth, pitch: i32, 
    	Rmask, Gmask, Bmask, Amask:  u32, 
    ) -> ^Surface ---
    External examples sdl2/hellope

    CreateRGBSurfaceWithFormat ¶

    CreateRGBSurfaceWithFormat :: proc "c" (
    	flags:                u32, 
    	width, height, depth: i32, 
    	format:               u32, 
    ) -> ^Surface ---

    CreateRGBSurfaceWithFormatFrom ¶

    CreateRGBSurfaceWithFormatFrom :: proc "c" (
    	pixels:                      rawptr, 
    	width, height, depth, pitch: i32, 
    	format:                      u32, 
    ) -> ^Surface ---

    CreateRenderer ¶

    CreateRenderer :: proc "c" (window: ^Window, index: i32, flags: RendererFlags) -> ^Renderer ---
    External examples sdl2/chase_in_space · sdl2/hellope · sdl2/microui

    CreateShapedWindow ¶

    CreateShapedWindow :: proc "c" (
    	title:      cstring, 
    	x, y, w, h: u32, 
    	flags:      WindowFlags, 
    ) -> ^Window ---

    CreateTexture ¶

    CreateTexture :: proc "c" (
    	renderer: ^Renderer, 
    	format:   PixelFormatEnum, 
    	access:   TextureAccess, 
    	w, h:     i32, 
    ) -> ^Texture ---
    External examples sdl2/microui

    CreateTextureFromSurface ¶

    CreateTextureFromSurface :: proc "c" (renderer: ^Renderer, surface: ^Surface) -> ^Texture ---
    External examples sdl2/hellope

    CreateThread ¶

    @(synchronizes=.Release)
    CreateThread :: proc "c" (fn: ThreadFunction, name: cstring, data: rawptr) -> ^Thread ---

    CreateThreadWithStackSize ¶

    @(synchronizes=.Release)
    CreateThreadWithStackSize :: proc "c" (
    	fn:        ThreadFunction, 
    	name:      cstring, 
    	stacksize: uint, 
    	data:      rawptr, 
    ) -> ^Thread ---

    CreateWindow ¶

    CreateWindow :: proc "c" (
    	title:      cstring, 
    	x, y, w, h: i32, 
    	flags:      WindowFlags, 
    ) -> ^Window ---
    External examples sdl2/chase_in_space · sdl2/hellope · sdl2/microui

    CreateWindowAndRenderer ¶

    CreateWindowAndRenderer :: proc "c" (
    	width, height: i32, 
    	window_flags:  WindowFlags, 
    	window:        ^^Window, 
    	renderer:      ^^Renderer, 
    ) -> i32 ---

    DEFINE_PIXELFORMAT ¶

    DEFINE_PIXELFORMAT :: proc "c" (type: u8, order: u8, layout, bits, bytes: u8) -> u32 {…}

    DXGIGetOutputInfo ¶

    DXGIGetOutputInfo :: proc "c" (
    	displayIndex: i32, 
    	adapterIndex: ^i32, 
    	outputIndex:  ^i32, 
    ) -> bool ---

    DestroyRenderer ¶

    DestroyRenderer :: proc "c" (renderer: ^Renderer) ---
    External examples sdl2/chase_in_space · sdl2/microui

    DestroyWindow ¶

    DestroyWindow :: proc "c" (window: ^Window) ---
    External examples sdl2/hellope · sdl2/chase_in_space · sdl2/microui

    EnclosePoints ¶

    EnclosePoints :: proc "c" (points: [^]Point, count: i32, clip: ^Rect, result: ^Rect) -> bool ---

    EventState ¶

    EventState :: proc "c" (type: EventType, state: i32) -> b8 ---
     

    original return value is u8

    FOURCC ¶

    FOURCC :: proc "c" (A, B, C, D: u8) -> u32 {…}

    FillRect ¶

    FillRect :: proc "c" (dst: ^Surface, rect: ^Rect, color: u32) -> i32 ---

    FillRects ¶

    FillRects :: proc "c" (dst: ^Surface, rects: [^]Rect, count: i32, color: u32) -> i32 ---

    FreeSurface ¶

    FreeSurface :: proc "c" (surface: ^Surface) ---
    External examples sdl2/hellope

    FreeWAV ¶

    FreeWAV :: proc "c" (audio_buf: [^]u8) ---

    GL_BindTexture ¶

    GL_BindTexture :: proc "c" (texture: ^Texture, texw, texh: ^f32) -> i32 ---

    GameControllerAddMappingsFromFile ¶

    GameControllerAddMappingsFromFile :: proc "c" (file: cstring) -> i32 {…}

    GameControllerGetSensorData ¶

    GameControllerGetSensorData :: proc "c" (
    	gamecontroller: ^GameController, 
    	type:           SensorType, 
    	data:           [^]f32, 
    	num_values:     i32, 
    ) -> i32 ---

    GameControllerGetTouchpadFinger ¶

    GameControllerGetTouchpadFinger :: proc "c" (
    	gamecontroller: ^GameController, 
    	touchpad:       i32, 
    	finger:         i32, 
    	state:          ^u8, 
    	x, y:           ^f32, 
    	pressure:       ^f32, 
    ) -> i32 ---

    GameControllerRumble ¶

    GameControllerRumble :: proc "c" (
    	gamecontroller:                              ^GameController, 
    	low_frequency_rumble, high_frequency_rumble: u16, 
    	duration_ms:                                 u32, 
    ) -> i32 ---

    GameControllerRumbleTriggers ¶

    GameControllerRumbleTriggers :: proc "c" (
    	gamecontroller:            ^GameController, 
    	left_rumble, right_rumble: u16, 
    	duration_ms:               u32, 
    ) -> i32 ---

    GameControllerSetLED ¶

    GameControllerSetLED :: proc "c" (
    	gamecontroller:   ^GameController, 
    	red, green, blue: u8, 
    ) -> i32 ---

    GetAudioDeviceSpec ¶

    GetAudioDeviceSpec :: proc "c" (index: i32, iscapture: bool, spec: ^AudioSpec) -> i32 ---

    GetClipboardText ¶

    GetClipboardText :: proc "c" () -> cstring ---
    External examples sdl2/microui

    GetClosestDisplayMode ¶

    GetClosestDisplayMode :: proc "c" (
    	displayIndex:  i32, 
    	mode, closest: ^DisplayMode, 
    ) -> ^DisplayMode ---

    GetDisplayBounds ¶

    GetDisplayBounds :: proc "c" (displayIndex: i32, rect: ^Rect) -> i32 ---
    External examples sdl2/hellope

    GetDisplayDPI ¶

    GetDisplayDPI :: proc "c" (displayIndex: i32, ddpi, hdpi, vdpi: ^f32) -> i32 ---

    GetDisplayMode ¶

    GetDisplayMode :: proc "c" (displayIndex: i32, modeIndex: i32, mode: ^DisplayMode) -> i32 ---

    GetDisplayUsableBounds ¶

    GetDisplayUsableBounds :: proc "c" (displayIndex: i32, rect: ^Rect) -> i32 ---

    GetError ¶

    GetError :: proc "c" () -> cstring ---
    External examples sdl2/microui

    GetErrorMsg ¶

    GetErrorMsg :: proc "c" (errstr: [^]u8, maxlen: i32) -> cstring ---

    GetErrorMsgString ¶

    GetErrorMsgString :: proc "c" (buf: []u8) -> string {…}

    GetErrorString ¶

    GetErrorString :: proc "c" () -> string {…}
    External examples sdl2/chase_in_space

    GetEventState ¶

    GetEventState :: proc "c" (type: EventType) -> b8 {…}

    GetHintBoolean ¶

    GetHintBoolean :: proc "c" (name: cstring, default_value: bool) -> bool ---

    GetKeyboardStateAsSlice ¶

    GetKeyboardStateAsSlice :: proc "c" () -> []u8 {…}
    External examples sdl2/chase_in_space

    GetMemoryFunctions ¶

    GetMemoryFunctions :: proc "c" (
    	malloc_func:  ^malloc_func, 
    	calloc_func:  ^calloc_func, 
    	realloc_func: ^realloc_func, 
    	free_func:    ^free_func, 
    ) ---

    GetModState ¶

    GetModState :: proc "c" () -> Keymod {…}

    GetNumRenderDrivers ¶

    GetNumRenderDrivers :: proc "c" () -> i32 ---
    External examples sdl2/microui

    GetPerformanceCounter ¶

    GetPerformanceCounter :: proc "c" () -> u64 ---
    External examples sdl2/chase_in_space · sdl2/hellope

    GetPerformanceFrequency ¶

    GetPerformanceFrequency :: proc "c" () -> u64 ---
    External examples sdl2/chase_in_space · sdl2/hellope

    GetRGB ¶

    GetRGB :: proc "c" (pixel: u32, format: ^PixelFormat, r, g, b: ^u8) ---

    GetRGBA ¶

    GetRGBA :: proc "c" (
    	pixel:      u32, 
    	format:     ^PixelFormat, 
    	r, g, b, a: ^u8, 
    ) ---

    GetRenderDrawColor ¶

    GetRenderDrawColor :: proc "c" (renderer: ^Renderer, r, g, b, a: ^u8) -> i32 ---

    GetRenderDriverInfo ¶

    GetRenderDriverInfo :: proc "c" (index: i32, info: ^RendererInfo) -> i32 ---
    External examples sdl2/microui

    GetRendererOutputSize ¶

    GetRendererOutputSize :: proc "c" (renderer: ^Renderer, w, h: ^i32) -> i32 ---
    External examples sdl2/microui

    GetSurfaceColorMod ¶

    GetSurfaceColorMod :: proc "c" (surface: ^Surface, r, g, b: ^u8) -> i32 ---

    GetTextureAlphaMod ¶

    GetTextureAlphaMod :: proc "c" (texture: ^Texture, alpha: ^u8) -> i32 ---

    GetTextureColorMod ¶

    GetTextureColorMod :: proc "c" (texture: ^Texture, r, g, b: ^u8) -> i32 ---

    GetWindowBordersSize ¶

    GetWindowBordersSize :: proc "c" (window: ^Window, top, left, bottom, right: ^i32) -> i32 ---

    GetWindowGammaRamp ¶

    GetWindowGammaRamp :: proc "c" (window: ^Window, red, green, blue: ^u16) -> i32 ---

    GetWindowOpacity ¶

    GetWindowOpacity :: proc "c" (window: ^Window, out_opacity: ^f32) -> i32 ---

    HapticRumblePlay ¶

    HapticRumblePlay :: proc "c" (haptic: ^Haptic, strength: f32, length: u32) -> i32 ---

    HapticRunEffect ¶

    HapticRunEffect :: proc "c" (haptic: ^Haptic, effect: i32, iterations: u32) -> i32 ---

    HasClipboardText ¶

    HasClipboardText :: proc "c" () -> bool ---
    External examples sdl2/microui

    HasExactlyOneBitSet32 ¶

    HasExactlyOneBitSet32 :: proc "c" (x: u32) -> bool {…}

    Init ¶

    Init :: proc "c" (flags: bit_set[InitFlag; u32]) -> i32 ---
    External examples sdl2/chase_in_space · sdl2/hellope · sdl2/microui

    InitSubSystem ¶

    InitSubSystem :: proc "c" (flags: bit_set[InitFlag; u32]) -> i32 ---

    IntersectRect ¶

    IntersectRect :: proc "c" (A, B: ^Rect, result: ^Rect) -> bool ---

    IntersectRectAndLine ¶

    IntersectRectAndLine :: proc "c" (rect: ^Rect, X1, Y1, X2, Y2: ^i32) -> bool ---

    InvalidParamError ¶

    InvalidParamError :: proc "c" (param: cstring) -> i32 {…}

    JoystickAttachVirtual ¶

    JoystickAttachVirtual :: proc "c" (type: JoystickType, naxes, nbuttons, nhats: i32) -> i32 ---

    JoystickGetAxisInitialState ¶

    JoystickGetAxisInitialState :: proc "c" (joystick: ^Joystick, axis: i32, state: ^i16) -> bool ---

    JoystickGetBall ¶

    JoystickGetBall :: proc "c" (joystick: ^Joystick, ball: i32, dx, dy: ^i32) -> i32 ---

    JoystickGetGUIDString ¶

    JoystickGetGUIDString :: proc "c" (guid: JoystickGUID, pszGUID: [^]u8, cbGUID: i32) ---

    JoystickRumble ¶

    JoystickRumble :: proc "c" (
    	joystick:                                    ^Joystick, 
    	low_frequency_rumble, high_frequency_rumble: u16, 
    	duration_ms:                                 u32, 
    ) -> i32 ---

    JoystickRumbleTriggers ¶

    JoystickRumbleTriggers :: proc "c" (
    	joystick:                  ^Joystick, 
    	left_rumble, right_rumble: u16, 
    	duration_ms:               u32, 
    ) -> i32 ---

    JoystickSetLED ¶

    JoystickSetLED :: proc "c" (joystick: ^Joystick, red, green, blue: u8) -> i32 ---

    JoystickSetPlayerIndex ¶

    JoystickSetPlayerIndex :: proc "c" (joystick: ^Joystick, player_index: i32) ---

    JoystickSetVirtualAxis ¶

    JoystickSetVirtualAxis :: proc "c" (joystick: ^Joystick, axis: i32, value: i16) -> i32 ---

    JoystickSetVirtualButton ¶

    JoystickSetVirtualButton :: proc "c" (joystick: ^Joystick, button: i32, value: u8) -> i32 ---

    JoystickSetVirtualHat ¶

    JoystickSetVirtualHat :: proc "c" (joystick: ^Joystick, hat: i32, value: u8) -> i32 ---

    LinuxSetThreadPriority ¶

    LinuxSetThreadPriority :: proc "c" (threadID: i64, priority: i32) -> i32 ---

    LoadBMP ¶

    LoadBMP :: proc "c" (file: cstring) -> ^Surface {…}

    LoadFile ¶

    LoadFile :: proc "c" (file: rawptr, datasize: ^uint) -> rawptr ---

    LoadFile_RW ¶

    LoadFile_RW :: proc "c" (src: ^RWops, datasize: ^uint, freesrc: bool) -> rawptr ---

    LoadWAV ¶

    LoadWAV :: proc "c" (
    	file:      cstring, 
    	spec:      ^AudioSpec, 
    	audio_buf: ^[^]u8, 
    	audio_len: ^u32, 
    ) -> ^AudioSpec {…}
     

    Loads a WAV from a file. Compatibility convenience function.

    LoadWAV_RW ¶

    LoadWAV_RW :: proc "c" (
    	src:       ^RWops, 
    	freesrc:   bool, 
    	spec:      ^AudioSpec, 
    	audio_buf: ^[^]u8, 
    	audio_len: ^u32, 
    ) -> ^AudioSpec ---

    LockAudio ¶

    @(synchronizes=.Acquire)
    LockAudio :: proc "c" () ---

    LockAudioDevice ¶

    @(synchronizes=.Acquire)
    LockAudioDevice :: proc "c" (dev: AudioDeviceID) ---

    LockJoysticks ¶

    @(synchronizes=.Acquire)
    LockJoysticks :: proc "c" () ---

    LockMutex ¶

    @(synchronizes=.Acquire)
    LockMutex :: proc "c" (m: ^mutex) -> i32 ---

    LockSensors ¶

    @(synchronizes=.Acquire)
    LockSensors :: proc "c" () ---

    LockTexture ¶

    LockTexture :: proc "c" (texture: ^Texture, rect: ^Rect, pixels: ^rawptr, pitch: ^i32) -> i32 ---

    LockTextureToSurface ¶

    LockTextureToSurface :: proc "c" (texture: ^Texture, rect: ^Rect, surface: ^^Surface) -> i32 ---

    LogCritical ¶

    LogCritical :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LogDebug ¶

    LogDebug :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LogError ¶

    LogError :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LogGetOutputFunction ¶

    LogGetOutputFunction :: proc "c" (callback: ^LogOutputFunction, userdata: ^rawptr) ---
     

    LogMessageV :: proc(category: c.int, priority: LogPriority, fmt: cstring, ap: va_list) ---

    LogInfo ¶

    LogInfo :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LogMessage ¶

    LogMessage :: proc "c" (category: i32, priority: LogPriority, fmt: cstring, args: ..any) ---

    LogSetPriority ¶

    LogSetPriority :: proc "c" (category: i32, priority: LogPriority) ---

    LogVerbose ¶

    LogVerbose :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LogWarn ¶

    LogWarn :: proc "c" (category: i32, fmt: cstring, args: ..any) ---

    LowerBlit ¶

    LowerBlit :: proc "c" (src: ^Surface, srcrect: ^Rect, dst: ^Surface, dstrect: ^Rect) -> i32 ---

    LowerBlitScaled ¶

    LowerBlitScaled :: proc "c" (
    	src:     ^Surface, 
    	srcrect: ^Rect, 
    	dst:     ^Surface, 
    	dstrect: ^Rect, 
    ) -> i32 ---

    MUSTLOCK ¶

    MUSTLOCK :: proc "c" (surface: ^Surface) -> bool {…}

    MapRGB ¶

    MapRGB :: proc "c" (format: ^PixelFormat, r, g, b: u8) -> u32 ---

    MapRGBA ¶

    MapRGBA :: proc "c" (format: ^PixelFormat, r, g, b, a: u8) -> u32 ---

    MasksToPixelFormatEnum ¶

    MasksToPixelFormatEnum :: proc "c" (bpp: i32, Rmask, Gmask, Bmask, Amask: u32) -> u32 ---

    MixAudio ¶

    MixAudio :: proc "c" (dst: [^]u8, src: [^]u8, len: u32, volume: i32) ---

    MixAudioFormat ¶

    MixAudioFormat :: proc "c" (
    	dst:    [^]u8, 
    	src:    [^]u8, 
    	format: AudioFormat, 
    	len:    u32, 
    	volume: i32, 
    ) ---

    MostSignificantBitIndex32 ¶

    MostSignificantBitIndex32 :: proc "c" (x: u32) -> i32 {…}
     

    Bits

    NewAudioStream ¶

    NewAudioStream :: proc "c" (
    	src_format:   AudioFormat, 
    	src_channels: u8, 
    	src_rate:     i32, 
    	dst_format:   AudioFormat, 
    	dst_channels: u8, 
    	dst_rate:     i32, 
    ) -> ^AudioStream ---

    OnApplicationWillTerminate ¶

    OnApplicationWillTerminate :: proc "c" () ---
     

    Functions used by iOS application delegates to notify SDL about state changes

    OpenAudio ¶

    OpenAudio :: proc "c" (desired, obtained: ^AudioSpec) -> i32 ---

    OpenAudioDevice ¶

    OpenAudioDevice :: proc "c" (
    	device:          cstring, 
    	iscapture:       bool, 
    	desired:         ^AudioSpec, 
    	obtained:        ^AudioSpec, 
    	allowed_changes: AudioAllowChangeFlags, 
    ) -> AudioDeviceID ---

    OutOfMemory ¶

    OutOfMemory :: proc "c" () -> i32 {…}
     

    \name Internal error functions

    \internal Private error reporting function - used internally.

    PauseAudioDevice ¶

    PauseAudioDevice :: proc "c" (dev: AudioDeviceID, pause_on: bool) ---
     

    Pause audio functions

    PeepEvents ¶

    PeepEvents :: proc "c" (
    	events:           [^]Event, 
    	numevents:        i32, 
    	action:           eventaction, 
    	minType, maxType: EventType, 
    ) -> i32 ---

    PixelFormatEnumToMasks ¶

    PixelFormatEnumToMasks :: proc "c" (
    	format:                     u32, 
    	bpp:                        ^i32, 
    	Rmask, Gmask, Bmask, Amask: ^u32, 
    ) -> bool ---

    PointInRect ¶

    PointInRect :: proc(p: ^Point, r: ^Rect) -> bool {…}

    PollEvent ¶

    PollEvent :: proc "c" (event: ^Event) -> bool ---
     

    original return value is c.int

    External examples sdl2/chase_in_space · sdl2/microui · sdl2/hellope

    PushEvent ¶

    PushEvent :: proc "c" (event: ^Event) -> bool ---
     

    original return value is c.int

    External examples sdl2/microui

    QueryTexture ¶

    QueryTexture :: proc "c" (texture: ^Texture, format: ^u32, access, w, h: ^i32) -> i32 ---

    Quit ¶

    Quit :: proc "c" () ---
    External examples sdl2/hellope · sdl2/chase_in_space · sdl2/microui

    QuitRequested ¶

    QuitRequested :: proc "c" () -> bool {…}

    QuitSubSystem ¶

    QuitSubSystem :: proc "c" (flags: bit_set[InitFlag; u32]) ---

    RWFromFP ¶

    RWFromFP :: proc "c" (fp: rawptr, autoclose: bool) -> ^RWops ---

    RWread ¶

    RWread :: proc "c" (ctx: ^RWops, ptr: rawptr, size: uint, maxnum: uint) -> uint ---

    RWseek ¶

    RWseek :: proc "c" (ctx: ^RWops, offset: i64, whence: i32) -> i64 ---

    RWwrite ¶

    RWwrite :: proc "c" (ctx: ^RWops, ptr: rawptr, size: uint, num: uint) -> uint ---

    RectEmpty ¶

    RectEmpty :: proc(r: ^Rect) -> bool {…}

    RectEquals ¶

    RectEquals :: proc(a, b: ^Rect) -> bool {…}

    RenderClear ¶

    RenderClear :: proc "c" (renderer: ^Renderer) -> i32 ---
    External examples sdl2/chase_in_space · sdl2/microui · sdl2/hellope

    RenderCopy ¶

    RenderCopy :: proc "c" (
    	renderer: ^Renderer, 
    	texture:  ^Texture, 
    	srcrect:  ^Rect, 
    	dstrect:  ^Rect, 
    ) -> i32 ---
    External examples sdl2/microui · sdl2/hellope

    RenderCopyEx ¶

    RenderCopyEx :: proc "c" (
    	renderer: ^Renderer, 
    	texture:  ^Texture, 
    	srcrect:  ^Rect, 
    	dstrect:  ^Rect, 
    	angle:    f64, 
    	center:   ^Point, 
    	flip:     RendererFlip, 
    ) -> i32 ---

    RenderCopyExF ¶

    RenderCopyExF :: proc "c" (
    	renderer: ^Renderer, 
    	texture:  ^Texture, 
    	srcrect:  ^Rect, 
    	dstrect:  ^FRect, 
    	angle:    f64, 
    	center:   ^FPoint, 
    	flip:     RendererFlip, 
    ) -> i32 ---

    RenderCopyF ¶

    RenderCopyF :: proc "c" (
    	renderer: ^Renderer, 
    	texture:  ^Texture, 
    	srcrect:  ^Rect, 
    	dstrect:  ^FRect, 
    ) -> i32 ---

    RenderDrawLine ¶

    RenderDrawLine :: proc "c" (renderer: ^Renderer, x1, y1, x2, y2: i32) -> i32 ---

    RenderDrawLineF ¶

    RenderDrawLineF :: proc "c" (renderer: ^Renderer, x1, y1, x2, y2: f32) -> i32 ---

    RenderDrawLines ¶

    RenderDrawLines :: proc "c" (renderer: ^Renderer, points: [^]Point, count: i32) -> i32 ---

    RenderDrawLinesF ¶

    RenderDrawLinesF :: proc "c" (renderer: ^Renderer, points: [^]FPoint, count: i32) -> i32 ---

    RenderDrawPointF ¶

    RenderDrawPointF :: proc "c" (renderer: ^Renderer, x, y: f32) -> i32 ---
    External examples sdl2/chase_in_space

    RenderDrawPoints ¶

    RenderDrawPoints :: proc "c" (renderer: ^Renderer, points: [^]Point, count: i32) -> i32 ---

    RenderDrawPointsF ¶

    RenderDrawPointsF :: proc "c" (renderer: ^Renderer, points: [^]FPoint, count: i32) -> i32 ---

    RenderDrawRectF ¶

    RenderDrawRectF :: proc "c" (renderer: ^Renderer, rect: ^FRect) -> i32 ---
    External examples sdl2/chase_in_space

    RenderDrawRects ¶

    RenderDrawRects :: proc "c" (renderer: ^Renderer, rect: ^Rect, count: i32) -> i32 ---

    RenderDrawRectsF ¶

    RenderDrawRectsF :: proc "c" (renderer: ^Renderer, rects: [^]FRect, count: i32) -> i32 ---

    RenderFillRect ¶

    RenderFillRect :: proc "c" (renderer: ^Renderer, rect: ^Rect) -> i32 ---
    External examples sdl2/microui

    RenderFillRects ¶

    RenderFillRects :: proc "c" (renderer: ^Renderer, rects: [^]Rect, count: i32) -> i32 ---

    RenderFillRectsF ¶

    RenderFillRectsF :: proc "c" (renderer: ^Renderer, rects: [^]FRect, count: i32) -> i32 ---

    RenderGetScale ¶

    RenderGetScale :: proc "c" (renderer: ^Renderer, scaleX, scaleY: ^f32) ---

    RenderPresent ¶

    RenderPresent :: proc "c" (renderer: ^Renderer) ---
    External examples sdl2/microui · sdl2/chase_in_space · sdl2/hellope

    RenderReadPixels ¶

    RenderReadPixels :: proc "c" (
    	renderer: ^Renderer, 
    	rect:     ^Rect, 
    	format:   u32, 
    	pixels:   rawptr, 
    	pitch:    i32, 
    ) -> i32 ---

    RenderSetClipRect ¶

    RenderSetClipRect :: proc "c" (renderer: ^Renderer, rect: ^Rect) -> i32 ---
    External examples sdl2/microui

    RenderSetScale ¶

    RenderSetScale :: proc "c" (renderer: ^Renderer, scaleX, scaleY: f32) -> i32 ---

    RenderSetViewport ¶

    RenderSetViewport :: proc "c" (renderer: ^Renderer, rect: ^Rect) -> i32 ---
    External examples sdl2/microui

    SCANCODE_TO_KEYCODE ¶

    SCANCODE_TO_KEYCODE :: proc "c" (X: Scancode) -> Keycode {…}

    SHAPEMODEALPHA ¶

    SHAPEMODEALPHA :: proc "c" (mode: WindowShapeModeEnum) -> bool {…}

    SaveBMP ¶

    SaveBMP :: proc "c" (surface: ^Surface, file: cstring) -> i32 {…}

    SaveBMP_RW ¶

    SaveBMP_RW :: proc "c" (surface: ^Surface, dst: ^RWops, freedst: bool) -> i32 ---

    SemPost ¶

    @(synchronizes=.Release)
    SemPost :: proc "c" (s: ^semaphore) -> i32 ---

    SemTryWait ¶

    @(synchronizes=.Acquire)
    SemTryWait :: proc "c" (s: ^semaphore) -> i32 ---

    SemWait ¶

    @(synchronizes=.Acquire)
    SemWait :: proc "c" (s: ^semaphore) -> i32 ---

    SemWaitTimeout ¶

    @(synchronizes=.Acquire)
    SemWaitTimeout :: proc "c" (s: ^semaphore, ms: u32) -> i32 ---

    SensorGetData ¶

    SensorGetData :: proc "c" (sensor: ^Sensor, data: [^]f32, num_values: i32) -> i32 ---

    SensorOpen ¶

    SensorOpen :: proc "c" (device_index: i32) -> ^Sensor ---

    SetClipboardText ¶

    SetClipboardText :: proc "c" (text: cstring) -> i32 ---
    External examples sdl2/microui

    SetColorKey ¶

    SetColorKey :: proc "c" (surface: ^Surface, flag: i32, key: u32) -> i32 ---

    SetError ¶

    SetError :: proc "c" (fmt: cstring, args: ..any) -> i32 ---

    SetMemoryFunctions ¶

    SetMemoryFunctions :: proc "c" (
    	malloc_func:  malloc_func, 
    	calloc_func:  calloc_func, 
    	realloc_func: realloc_func, 
    	free_func:    free_func, 
    ) -> i32 ---

    SetModState ¶

    SetModState :: proc "c" (modstate: Keymod) {…}

    SetPaletteColors ¶

    SetPaletteColors :: proc "c" (
    	palette:             ^Palette, 
    	colors:              [^]Color, 
    	firstcolor, ncolors: i32, 
    ) -> i32 ---

    SetRenderDrawColor ¶

    SetRenderDrawColor :: proc "c" (renderer: ^Renderer, r, g, b, a: u8) -> i32 ---
    External examples sdl2/chase_in_space · sdl2/microui · sdl2/hellope

    SetRenderTarget ¶

    SetRenderTarget :: proc "c" (renderer: ^Renderer, texture: ^Texture) -> i32 ---

    SetSurfaceColorMod ¶

    SetSurfaceColorMod :: proc "c" (surface: ^Surface, r, g, b: u8) -> i32 ---

    SetTextureAlphaMod ¶

    SetTextureAlphaMod :: proc "c" (texture: ^Texture, alpha: u8) -> i32 ---
    External examples sdl2/microui

    SetTextureBlendMode ¶

    SetTextureBlendMode :: proc "c" (texture: ^Texture, blendMode: BlendMode) -> i32 ---
    External examples sdl2/microui

    SetTextureColorMod ¶

    SetTextureColorMod :: proc "c" (texture: ^Texture, r, g, b: u8) -> i32 ---
    External examples sdl2/microui

    SetWindowBrightness ¶

    SetWindowBrightness :: proc "c" (window: ^Window, brightness: f32) -> i32 ---

    SetWindowData ¶

    SetWindowData :: proc "c" (window: ^Window, name: cstring, userdata: rawptr) -> rawptr ---

    SetWindowGammaRamp ¶

    SetWindowGammaRamp :: proc "c" (window: ^Window, red, green, blue: ^u16) -> i32 ---

    SetWindowHitTest ¶

    SetWindowHitTest :: proc "c" (
    	window:        ^Window, 
    	callback:      HitTest, 
    	callback_data: rawptr, 
    ) -> i32 ---

    SetWindowMaximumSize ¶

    SetWindowMaximumSize :: proc "c" (window: ^Window, max_w, max_h: i32) ---

    SetWindowMinimumSize ¶

    SetWindowMinimumSize :: proc "c" (window: ^Window, min_w, min_h: i32) ---

    SetWindowModalFor ¶

    SetWindowModalFor :: proc "c" (modal_window, parent_window: ^Window) -> i32 ---

    SetWindowOpacity ¶

    SetWindowOpacity :: proc "c" (window: ^Window, opacity: f32) -> i32 ---

    SetWindowShape ¶

    SetWindowShape :: proc "c" (
    	window:     ^Window, 
    	shape:      ^Surface, 
    	shape_mode: ^WindowShapeMode, 
    ) -> i32 ---

    ShowMessageBox ¶

    ShowMessageBox :: proc "c" (messageboxdata: ^MessageBoxData, buttonid: ^i32) -> i32 ---

    ShowSimpleMessageBox ¶

    ShowSimpleMessageBox :: proc "c" (
    	flags:   MessageBoxFlags, 
    	title:   cstring, 
    	message: cstring, 
    	window:  ^Window, 
    ) -> i32 ---

    SoftStretch ¶

    SoftStretch :: proc "c" (src: ^Surface, srcrect: ^Rect, dst: ^Surface, dstrect: ^Rect) -> i32 ---

    SoftStretchLinear ¶

    SoftStretchLinear :: proc "c" (
    	src:     ^Surface, 
    	srcrect: ^Rect, 
    	dst:     ^Surface, 
    	dstrect: ^Rect, 
    ) -> i32 ---

    TICKS_PASSED ¶

    TICKS_PASSED :: proc "c" (A, B: u32) -> bool {…}

    TLSSet ¶

    TLSSet :: proc "c" (id: TLSID, value: rawptr, destructor: proc "c" (rawptr)) -> i32 ---

    TryLockMutex ¶

    @(synchronizes=.Acquire)
    TryLockMutex :: proc "c" (m: ^mutex) -> i32 ---

    UnionRect ¶

    UnionRect :: proc "c" (A, B: ^Rect, result: ^Rect) ---

    UnlockAudio ¶

    @(synchronizes=.Release)
    UnlockAudio :: proc "c" () ---

    UnlockAudioDevice ¶

    @(synchronizes=.Release)
    UnlockAudioDevice :: proc "c" (dev: AudioDeviceID) ---
     

    Audio lock functions

    UnlockJoysticks ¶

    @(synchronizes=.Release)
    UnlockJoysticks :: proc "c" () ---

    UnlockMutex ¶

    @(synchronizes=.Release)
    UnlockMutex :: proc "c" (m: ^mutex) -> i32 ---

    UnlockSensors ¶

    @(synchronizes=.Release)
    UnlockSensors :: proc "c" () ---

    Unsupported ¶

    Unsupported :: proc "c" () -> i32 {…}

    UpdateNVTexture ¶

    UpdateNVTexture :: proc "c" (
    	texture: ^Texture, 
    	rect:    ^Rect, 
    	Yplane:  ^u8, 
    	Ypitch:  i32, 
    	UVplane: ^u8, 
    	UVpitch: i32, 
    ) -> i32 ---

    UpdateTexture ¶

    UpdateTexture :: proc "c" (texture: ^Texture, rect: ^Rect, pixels: rawptr, pitch: i32) -> i32 ---
    External examples sdl2/microui

    UpdateWindowSurfaceRects ¶

    UpdateWindowSurfaceRects :: proc "c" (window: ^Window, rects: [^]Rect, numrects: i32) -> i32 ---

    UpdateYUVTexture ¶

    UpdateYUVTexture :: proc "c" (
    	texture: ^Texture, 
    	rect:    ^Rect, 
    	Yplane:  ^u8, 
    	Ypitch:  i32, 
    	Uplane:  ^u8, 
    	Upitch:  i32, 
    	Vplane:  ^u8, 
    	Vpitch:  i32, 
    ) -> i32 ---

    UpperBlit ¶

    UpperBlit :: proc "c" (src: ^Surface, srcrect: ^Rect, dst: ^Surface, dstrect: ^Rect) -> i32 ---

    UpperBlitScaled ¶

    UpperBlitScaled :: proc "c" (
    	src:     ^Surface, 
    	srcrect: ^Rect, 
    	dst:     ^Surface, 
    	dstrect: ^Rect, 
    ) -> i32 ---

    VERSION ¶

    VERSION :: proc "contextless" (ver: ^version) {…}

    Vulkan_CreateSurface ¶

    Vulkan_CreateSurface :: proc "c" (
    	window:   ^Window, 
    	instance: vulkan.Instance, 
    	surface:  ^vulkan.SurfaceKHR, 
    ) -> bool ---

    Vulkan_GetInstanceExtensions ¶

    Vulkan_GetInstanceExtensions :: proc "c" (
    	window: ^Window, 
    	pCount: ^u32, 
    	pNames: [^]cstring, 
    ) -> bool ---

    WINDOWPOS_CENTERED_DISPLAY ¶

    WINDOWPOS_CENTERED_DISPLAY :: proc "c" (X: i32) -> i32 {…}

    WINDOWPOS_ISCENTERED ¶

    WINDOWPOS_ISCENTERED :: proc "c" (X: i32) -> bool {…}

    WINDOWPOS_ISUNDEFINED ¶

    WINDOWPOS_ISUNDEFINED :: proc "c" (X: i32) -> bool {…}

    WINDOWPOS_UNDEFINED_DISPLAY ¶

    WINDOWPOS_UNDEFINED_DISPLAY :: proc "c" (X: i32) -> i32 {…}

    WaitEvent ¶

    WaitEvent :: proc "c" (event: ^Event) -> bool ---
     

    original return value is c.int

    WaitEventTimeout ¶

    WaitEventTimeout :: proc "c" (event: ^Event, timeout: i32) -> bool ---
     

    original return value is c.int

    WaitThread ¶

    @(synchronizes=.Acquire)
    WaitThread :: proc "c" (thread: ^Thread, status: ^i32) ---

    WasInit ¶

    WasInit :: proc "c" (flags: bit_set[InitFlag; u32]) -> bit_set[InitFlag; u32] ---

    WriteU8 ¶

    WriteU8 :: proc "c" (dst: ^RWops, value: ^u8) -> uint ---

    crc32 ¶

    crc32 :: proc "c" (crc: u32, data: rawptr, len: uint) -> u32 ---

    gl_set_proc_address ¶

    gl_set_proc_address :: proc(p: rawptr, name: cstring) {…}
     

    Used by vendor:OpenGL

    iPhoneSetAnimationCallback ¶

    iPhoneSetAnimationCallback :: proc "c" (
    	window:        ^Window, 
    	interval:      i32, 
    	callback:      proc "c" (rawptr), 
    	callbackParam: rawptr, 
    ) -> i32 ---

    iconv ¶

    iconv :: proc "c" (
    	cd:           iconv_t, 
    	inbuf:        ^cstring, 
    	inbytesleft:  ^uint, 
    	outbuf:       ^[^]u8, 
    	outbytesleft: ^uint, 
    ) -> uint ---

    iconv_string ¶

    iconv_string :: proc "c" (tocode, fromcode, inbuf: cstring, inbytesleft: uint) -> [^]u8 ---

    iconv_utf8_locale ¶

    iconv_utf8_locale :: proc "c" (s: string) -> cstring {…}

    iconv_utf8_ucs2 ¶

    iconv_utf8_ucs2 :: proc "c" (s: string) -> [^]u16 {…}

    iconv_utf8_ucs4 ¶

    iconv_utf8_ucs4 :: proc "c" (s: string) -> [^]rune {…}

    setenv ¶

    setenv :: proc "c" (name, value: cstring, overwrite: i32) -> i32 ---

    Procedure Groups

    This section is empty.

    Source Files

    Generation Information

    Generated with odin version dev-2026-10 (vendor "odin") Windows_amd64 @ 2026-10-24 22:50:18.968251400 +0000 UTC