fermium 200.12.0

An opinionated crate of SDL2 bindings.
Documentation
/* automatically generated by rust-bindgen */

pub const SDL_AUDIO_DRIVER_COREAUDIO: u32 = 1;
pub const SDL_AUDIO_DRIVER_DISK: u32 = 1;
pub const SDL_AUDIO_DRIVER_DUMMY: u32 = 1;
pub const SDL_JOYSTICK_IOKIT: u32 = 1;
pub const SDL_JOYSTICK_HIDAPI: u32 = 1;
pub const SDL_HAPTIC_IOKIT: u32 = 1;
pub const SDL_SENSOR_DUMMY: u32 = 1;
pub const SDL_LOADSO_DLOPEN: u32 = 1;
pub const SDL_THREAD_PTHREAD: u32 = 1;
pub const SDL_THREAD_PTHREAD_RECURSIVE_MUTEX: u32 = 1;
pub const SDL_TIMER_UNIX: u32 = 1;
pub const SDL_VIDEO_DRIVER_COCOA: u32 = 1;
pub const SDL_VIDEO_DRIVER_DUMMY: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC: &'static [u8; 28] =
  b"/opt/X11/lib/libX11.6.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT: &'static [u8; 29] =
  b"/opt/X11/lib/libXext.6.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA: &'static [u8; 33] =
  b"/opt/X11/lib/libXinerama.1.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2: &'static [u8; 27] =
  b"/opt/X11/lib/libXi.6.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR: &'static [u8; 31] =
  b"/opt/X11/lib/libXrandr.2.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS: &'static [u8; 28] =
  b"/opt/X11/lib/libXss.1.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE: &'static [u8; 32] =
  b"/opt/X11/lib/libXxf86vm.1.dylib\0";
pub const SDL_VIDEO_DRIVER_X11_XDBE: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XINERAMA: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XRANDR: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XSCRNSAVER: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XSHAPE: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XVIDMODE: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_XINPUT2: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS: u32 = 1;
pub const SDL_VIDEO_DRIVER_X11_CONST_PARAM_XEXTADDDISPLAY: u32 = 1;
pub const SDL_VIDEO_RENDER_OGL: u32 = 1;
pub const SDL_VIDEO_RENDER_OGL_ES2: u32 = 1;
pub const SDL_PLATFORM_SUPPORTS_METAL: u32 = 1;
pub const SDL_VIDEO_RENDER_METAL: u32 = 1;
pub const SDL_VIDEO_OPENGL: u32 = 1;
pub const SDL_VIDEO_OPENGL_ES2: u32 = 1;
pub const SDL_VIDEO_OPENGL_EGL: u32 = 1;
pub const SDL_VIDEO_OPENGL_CGL: u32 = 1;
pub const SDL_VIDEO_OPENGL_GLX: u32 = 1;
pub const SDL_VIDEO_VULKAN: u32 = 1;
pub const SDL_VIDEO_METAL: u32 = 1;
pub const SDL_POWER_MACOSX: u32 = 1;
pub const SDL_FILESYSTEM_COCOA: u32 = 1;
pub const SDL_ASSEMBLY_ROUTINES: u32 = 1;
pub const SDL_PRIs64: &'static [u8; 4] = b"lld\0";
pub const SDL_PRIu64: &'static [u8; 4] = b"llu\0";
pub const SDL_PRIx64: &'static [u8; 4] = b"llx\0";
pub const SDL_PRIX64: &'static [u8; 4] = b"llX\0";
pub const SDL_ASSERT_LEVEL: u32 = 2;
pub const SDL_NULL_WHILE_LOOP_CONDITION: u32 = 0;
pub const SDL_LIL_ENDIAN: u32 = 1234;
pub const SDL_BIG_ENDIAN: u32 = 4321;
pub const SDL_BYTEORDER: u32 = 1234;
pub const SDL_MUTEX_TIMEDOUT: u32 = 1;
pub const SDL_RWOPS_UNKNOWN: u32 = 0;
pub const SDL_RWOPS_WINFILE: u32 = 1;
pub const SDL_RWOPS_STDFILE: u32 = 2;
pub const SDL_RWOPS_JNIFILE: u32 = 3;
pub const SDL_RWOPS_MEMORY: u32 = 4;
pub const SDL_RWOPS_MEMORY_RO: u32 = 5;
pub const SDL_AUDIO_MASK_BITSIZE: u32 = 255;
pub const SDL_AUDIO_MASK_DATATYPE: u32 = 256;
pub const SDL_AUDIO_MASK_ENDIAN: u32 = 4096;
pub const SDL_AUDIO_MASK_SIGNED: u32 = 32768;
pub const AUDIO_U8: u32 = 8;
pub const AUDIO_S8: u32 = 32776;
pub const AUDIO_U16LSB: u32 = 16;
pub const AUDIO_S16LSB: u32 = 32784;
pub const AUDIO_U16MSB: u32 = 4112;
pub const AUDIO_S16MSB: u32 = 36880;
pub const AUDIO_U16: u32 = 16;
pub const AUDIO_S16: u32 = 32784;
pub const AUDIO_S32LSB: u32 = 32800;
pub const AUDIO_S32MSB: u32 = 36896;
pub const AUDIO_S32: u32 = 32800;
pub const AUDIO_F32LSB: u32 = 33056;
pub const AUDIO_F32MSB: u32 = 37152;
pub const AUDIO_F32: u32 = 33056;
pub const AUDIO_U16SYS: u32 = 16;
pub const AUDIO_S16SYS: u32 = 32784;
pub const AUDIO_S32SYS: u32 = 32800;
pub const AUDIO_F32SYS: u32 = 33056;
pub const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE: u32 = 1;
pub const SDL_AUDIO_ALLOW_FORMAT_CHANGE: u32 = 2;
pub const SDL_AUDIO_ALLOW_CHANNELS_CHANGE: u32 = 4;
pub const SDL_AUDIO_ALLOW_SAMPLES_CHANGE: u32 = 8;
pub const SDL_AUDIO_ALLOW_ANY_CHANGE: u32 = 15;
pub const SDL_AUDIOCVT_MAX_FILTERS: u32 = 9;
pub const SDL_MIX_MAXVOLUME: u32 = 128;
pub const SDL_CACHELINE_SIZE: u32 = 128;
pub const SDL_ALPHA_OPAQUE: u32 = 255;
pub const SDL_ALPHA_TRANSPARENT: u32 = 0;
pub const SDL_SWSURFACE: u32 = 0;
pub const SDL_PREALLOC: u32 = 1;
pub const SDL_RLEACCEL: u32 = 2;
pub const SDL_DONTFREE: u32 = 4;
pub const SDL_SIMD_ALIGNED: u32 = 8;
pub const SDL_WINDOWPOS_UNDEFINED_MASK: u32 = 536805376;
pub const SDL_WINDOWPOS_CENTERED_MASK: u32 = 805240832;
pub const SDLK_SCANCODE_MASK: u32 = 1073741824;
pub const SDL_BUTTON_LEFT: u32 = 1;
pub const SDL_BUTTON_MIDDLE: u32 = 2;
pub const SDL_BUTTON_RIGHT: u32 = 3;
pub const SDL_BUTTON_X1: u32 = 4;
pub const SDL_BUTTON_X2: u32 = 5;
pub const SDL_JOYSTICK_AXIS_MAX: u32 = 32767;
pub const SDL_JOYSTICK_AXIS_MIN: i32 = -32768;
pub const SDL_HAT_CENTERED: u32 = 0;
pub const SDL_HAT_UP: u32 = 1;
pub const SDL_HAT_RIGHT: u32 = 2;
pub const SDL_HAT_DOWN: u32 = 4;
pub const SDL_HAT_LEFT: u32 = 8;
pub const SDL_HAT_RIGHTUP: u32 = 3;
pub const SDL_HAT_RIGHTDOWN: u32 = 6;
pub const SDL_HAT_LEFTUP: u32 = 9;
pub const SDL_HAT_LEFTDOWN: u32 = 12;
pub const SDL_RELEASED: u32 = 0;
pub const SDL_PRESSED: u32 = 1;
pub const SDL_TEXTEDITINGEVENT_TEXT_SIZE: u32 = 32;
pub const SDL_TEXTINPUTEVENT_TEXT_SIZE: u32 = 32;
pub const SDL_QUERY: i32 = -1;
pub const SDL_IGNORE: u32 = 0;
pub const SDL_DISABLE: u32 = 0;
pub const SDL_ENABLE: u32 = 1;
pub const SDL_HAPTIC_CONSTANT: u32 = 1;
pub const SDL_HAPTIC_SINE: u32 = 2;
pub const SDL_HAPTIC_LEFTRIGHT: u32 = 4;
pub const SDL_HAPTIC_TRIANGLE: u32 = 8;
pub const SDL_HAPTIC_SAWTOOTHUP: u32 = 16;
pub const SDL_HAPTIC_SAWTOOTHDOWN: u32 = 32;
pub const SDL_HAPTIC_RAMP: u32 = 64;
pub const SDL_HAPTIC_SPRING: u32 = 128;
pub const SDL_HAPTIC_DAMPER: u32 = 256;
pub const SDL_HAPTIC_INERTIA: u32 = 512;
pub const SDL_HAPTIC_FRICTION: u32 = 1024;
pub const SDL_HAPTIC_CUSTOM: u32 = 2048;
pub const SDL_HAPTIC_GAIN: u32 = 4096;
pub const SDL_HAPTIC_AUTOCENTER: u32 = 8192;
pub const SDL_HAPTIC_STATUS: u32 = 16384;
pub const SDL_HAPTIC_PAUSE: u32 = 32768;
pub const SDL_HAPTIC_POLAR: u32 = 0;
pub const SDL_HAPTIC_CARTESIAN: u32 = 1;
pub const SDL_HAPTIC_SPHERICAL: u32 = 2;
pub const SDL_HAPTIC_INFINITY: u32 = 4294967295;
pub const SDL_HINT_FRAMEBUFFER_ACCELERATION: &'static [u8; 29] =
  b"SDL_FRAMEBUFFER_ACCELERATION\0";
pub const SDL_HINT_RENDER_DRIVER: &'static [u8; 18] = b"SDL_RENDER_DRIVER\0";
pub const SDL_HINT_RENDER_OPENGL_SHADERS: &'static [u8; 26] =
  b"SDL_RENDER_OPENGL_SHADERS\0";
pub const SDL_HINT_RENDER_DIRECT3D_THREADSAFE: &'static [u8; 31] =
  b"SDL_RENDER_DIRECT3D_THREADSAFE\0";
pub const SDL_HINT_RENDER_DIRECT3D11_DEBUG: &'static [u8; 28] =
  b"SDL_RENDER_DIRECT3D11_DEBUG\0";
pub const SDL_HINT_RENDER_LOGICAL_SIZE_MODE: &'static [u8; 29] =
  b"SDL_RENDER_LOGICAL_SIZE_MODE\0";
pub const SDL_HINT_RENDER_SCALE_QUALITY: &'static [u8; 25] =
  b"SDL_RENDER_SCALE_QUALITY\0";
pub const SDL_HINT_RENDER_VSYNC: &'static [u8; 17] = b"SDL_RENDER_VSYNC\0";
pub const SDL_HINT_VIDEO_ALLOW_SCREENSAVER: &'static [u8; 28] =
  b"SDL_VIDEO_ALLOW_SCREENSAVER\0";
pub const SDL_HINT_VIDEO_EXTERNAL_CONTEXT: &'static [u8; 27] =
  b"SDL_VIDEO_EXTERNAL_CONTEXT\0";
pub const SDL_HINT_VIDEO_X11_XVIDMODE: &'static [u8; 23] =
  b"SDL_VIDEO_X11_XVIDMODE\0";
pub const SDL_HINT_VIDEO_X11_XINERAMA: &'static [u8; 23] =
  b"SDL_VIDEO_X11_XINERAMA\0";
pub const SDL_HINT_VIDEO_X11_XRANDR: &'static [u8; 21] =
  b"SDL_VIDEO_X11_XRANDR\0";
pub const SDL_HINT_VIDEO_X11_WINDOW_VISUALID: &'static [u8; 30] =
  b"SDL_VIDEO_X11_WINDOW_VISUALID\0";
pub const SDL_HINT_VIDEO_X11_NET_WM_PING: &'static [u8; 26] =
  b"SDL_VIDEO_X11_NET_WM_PING\0";
pub const SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR: &'static [u8; 39] =
  b"SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR\0";
pub const SDL_HINT_VIDEO_X11_FORCE_EGL: &'static [u8; 24] =
  b"SDL_VIDEO_X11_FORCE_EGL\0";
pub const SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN: &'static [u8; 44] =
  b"SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN\0";
pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON: &'static [u8; 29] =
  b"SDL_WINDOWS_INTRESOURCE_ICON\0";
pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL: &'static [u8; 35] =
  b"SDL_WINDOWS_INTRESOURCE_ICON_SMALL\0";
pub const SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP: &'static [u8; 31] =
  b"SDL_WINDOWS_ENABLE_MESSAGELOOP\0";
pub const SDL_HINT_GRAB_KEYBOARD: &'static [u8; 18] = b"SDL_GRAB_KEYBOARD\0";
pub const SDL_HINT_MOUSE_DOUBLE_CLICK_TIME: &'static [u8; 28] =
  b"SDL_MOUSE_DOUBLE_CLICK_TIME\0";
pub const SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS: &'static [u8; 30] =
  b"SDL_MOUSE_DOUBLE_CLICK_RADIUS\0";
pub const SDL_HINT_MOUSE_NORMAL_SPEED_SCALE: &'static [u8; 29] =
  b"SDL_MOUSE_NORMAL_SPEED_SCALE\0";
pub const SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE: &'static [u8; 31] =
  b"SDL_MOUSE_RELATIVE_SPEED_SCALE\0";
pub const SDL_HINT_MOUSE_RELATIVE_MODE_WARP: &'static [u8; 29] =
  b"SDL_MOUSE_RELATIVE_MODE_WARP\0";
pub const SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH: &'static [u8; 29] =
  b"SDL_MOUSE_FOCUS_CLICKTHROUGH\0";
pub const SDL_HINT_TOUCH_MOUSE_EVENTS: &'static [u8; 23] =
  b"SDL_TOUCH_MOUSE_EVENTS\0";
pub const SDL_HINT_MOUSE_TOUCH_EVENTS: &'static [u8; 23] =
  b"SDL_MOUSE_TOUCH_EVENTS\0";
pub const SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS: &'static [u8; 33] =
  b"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS\0";
pub const SDL_HINT_IDLE_TIMER_DISABLED: &'static [u8; 28] =
  b"SDL_IOS_IDLE_TIMER_DISABLED\0";
pub const SDL_HINT_ORIENTATIONS: &'static [u8; 21] = b"SDL_IOS_ORIENTATIONS\0";
pub const SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS: &'static [u8; 34] =
  b"SDL_APPLE_TV_CONTROLLER_UI_EVENTS\0";
pub const SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION: &'static [u8; 35] =
  b"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION\0";
pub const SDL_HINT_IOS_HIDE_HOME_INDICATOR: &'static [u8; 28] =
  b"SDL_IOS_HIDE_HOME_INDICATOR\0";
pub const SDL_HINT_ACCELEROMETER_AS_JOYSTICK: &'static [u8; 30] =
  b"SDL_ACCELEROMETER_AS_JOYSTICK\0";
pub const SDL_HINT_TV_REMOTE_AS_JOYSTICK: &'static [u8; 26] =
  b"SDL_TV_REMOTE_AS_JOYSTICK\0";
pub const SDL_HINT_XINPUT_ENABLED: &'static [u8; 19] = b"SDL_XINPUT_ENABLED\0";
pub const SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING: &'static [u8; 36] =
  b"SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING\0";
pub const SDL_HINT_GAMECONTROLLERTYPE: &'static [u8; 23] =
  b"SDL_GAMECONTROLLERTYPE\0";
pub const SDL_HINT_GAMECONTROLLERCONFIG: &'static [u8; 25] =
  b"SDL_GAMECONTROLLERCONFIG\0";
pub const SDL_HINT_GAMECONTROLLERCONFIG_FILE: &'static [u8; 30] =
  b"SDL_GAMECONTROLLERCONFIG_FILE\0";
pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES: &'static [u8; 34] =
  b"SDL_GAMECONTROLLER_IGNORE_DEVICES\0";
pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT: &'static [u8; 41] =
  b"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT\0";
pub const SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS: &'static [u8; 37] =
  b"SDL_GAMECONTROLLER_USE_BUTTON_LABELS\0";
pub const SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS: &'static [u8; 37] =
  b"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS\0";
pub const SDL_HINT_JOYSTICK_HIDAPI: &'static [u8; 20] =
  b"SDL_JOYSTICK_HIDAPI\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_PS4: &'static [u8; 24] =
  b"SDL_JOYSTICK_HIDAPI_PS4\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE: &'static [u8; 31] =
  b"SDL_JOYSTICK_HIDAPI_PS4_RUMBLE\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_STEAM: &'static [u8; 26] =
  b"SDL_JOYSTICK_HIDAPI_STEAM\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_SWITCH: &'static [u8; 27] =
  b"SDL_JOYSTICK_HIDAPI_SWITCH\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_XBOX: &'static [u8; 25] =
  b"SDL_JOYSTICK_HIDAPI_XBOX\0";
pub const SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE: &'static [u8; 29] =
  b"SDL_JOYSTICK_HIDAPI_GAMECUBE\0";
pub const SDL_HINT_ENABLE_STEAM_CONTROLLERS: &'static [u8; 29] =
  b"SDL_ENABLE_STEAM_CONTROLLERS\0";
pub const SDL_HINT_ALLOW_TOPMOST: &'static [u8; 18] = b"SDL_ALLOW_TOPMOST\0";
pub const SDL_HINT_TIMER_RESOLUTION: &'static [u8; 21] =
  b"SDL_TIMER_RESOLUTION\0";
pub const SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION: &'static [u8; 34] =
  b"SDL_QTWAYLAND_CONTENT_ORIENTATION\0";
pub const SDL_HINT_QTWAYLAND_WINDOW_FLAGS: &'static [u8; 27] =
  b"SDL_QTWAYLAND_WINDOW_FLAGS\0";
pub const SDL_HINT_THREAD_STACK_SIZE: &'static [u8; 22] =
  b"SDL_THREAD_STACK_SIZE\0";
pub const SDL_HINT_VIDEO_HIGHDPI_DISABLED: &'static [u8; 27] =
  b"SDL_VIDEO_HIGHDPI_DISABLED\0";
pub const SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK: &'static [u8; 39] =
  b"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK\0";
pub const SDL_HINT_VIDEO_WIN_D3DCOMPILER: &'static [u8; 26] =
  b"SDL_VIDEO_WIN_D3DCOMPILER\0";
pub const SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT: &'static [u8; 36] =
  b"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT\0";
pub const SDL_HINT_WINRT_PRIVACY_POLICY_URL: &'static [u8; 29] =
  b"SDL_WINRT_PRIVACY_POLICY_URL\0";
pub const SDL_HINT_WINRT_PRIVACY_POLICY_LABEL: &'static [u8; 31] =
  b"SDL_WINRT_PRIVACY_POLICY_LABEL\0";
pub const SDL_HINT_WINRT_HANDLE_BACK_BUTTON: &'static [u8; 29] =
  b"SDL_WINRT_HANDLE_BACK_BUTTON\0";
pub const SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES: &'static [u8; 32] =
  b"SDL_VIDEO_MAC_FULLSCREEN_SPACES\0";
pub const SDL_HINT_MAC_BACKGROUND_APP: &'static [u8; 23] =
  b"SDL_MAC_BACKGROUND_APP\0";
pub const SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION: &'static [u8; 44] =
  b"SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION\0";
pub const SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION: &'static [u8; 45] =
  b"SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION\0";
pub const SDL_HINT_IME_INTERNAL_EDITING: &'static [u8; 25] =
  b"SDL_IME_INTERNAL_EDITING\0";
pub const SDL_HINT_ANDROID_TRAP_BACK_BUTTON: &'static [u8; 29] =
  b"SDL_ANDROID_TRAP_BACK_BUTTON\0";
pub const SDL_HINT_ANDROID_BLOCK_ON_PAUSE: &'static [u8; 27] =
  b"SDL_ANDROID_BLOCK_ON_PAUSE\0";
pub const SDL_HINT_RETURN_KEY_HIDES_IME: &'static [u8; 25] =
  b"SDL_RETURN_KEY_HIDES_IME\0";
pub const SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT: &'static [u8; 32] =
  b"SDL_EMSCRIPTEN_KEYBOARD_ELEMENT\0";
pub const SDL_HINT_NO_SIGNAL_HANDLERS: &'static [u8; 23] =
  b"SDL_NO_SIGNAL_HANDLERS\0";
pub const SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4: &'static [u8; 31] =
  b"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4\0";
pub const SDL_HINT_BMP_SAVE_LEGACY_FORMAT: &'static [u8; 27] =
  b"SDL_BMP_SAVE_LEGACY_FORMAT\0";
pub const SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING: &'static [u8; 34] =
  b"SDL_WINDOWS_DISABLE_THREAD_NAMING\0";
pub const SDL_HINT_RPI_VIDEO_LAYER: &'static [u8; 20] =
  b"SDL_RPI_VIDEO_LAYER\0";
pub const SDL_HINT_VIDEO_DOUBLE_BUFFER: &'static [u8; 24] =
  b"SDL_VIDEO_DOUBLE_BUFFER\0";
pub const SDL_HINT_OPENGL_ES_DRIVER: &'static [u8; 21] =
  b"SDL_OPENGL_ES_DRIVER\0";
pub const SDL_HINT_AUDIO_RESAMPLING_MODE: &'static [u8; 26] =
  b"SDL_AUDIO_RESAMPLING_MODE\0";
pub const SDL_HINT_AUDIO_CATEGORY: &'static [u8; 19] = b"SDL_AUDIO_CATEGORY\0";
pub const SDL_HINT_RENDER_BATCHING: &'static [u8; 20] =
  b"SDL_RENDER_BATCHING\0";
pub const SDL_HINT_EVENT_LOGGING: &'static [u8; 18] = b"SDL_EVENT_LOGGING\0";
pub const SDL_HINT_WAVE_RIFF_CHUNK_SIZE: &'static [u8; 25] =
  b"SDL_WAVE_RIFF_CHUNK_SIZE\0";
pub const SDL_HINT_WAVE_TRUNCATION: &'static [u8; 20] =
  b"SDL_WAVE_TRUNCATION\0";
pub const SDL_HINT_WAVE_FACT_CHUNK: &'static [u8; 20] =
  b"SDL_WAVE_FACT_CHUNK\0";
pub const SDL_HINT_DISPLAY_USABLE_BOUNDS: &'static [u8; 26] =
  b"SDL_DISPLAY_USABLE_BOUNDS\0";
pub const SDL_MAX_LOG_MESSAGE: u32 = 4096;
pub const SDL_STANDARD_GRAVITY: f64 = 9.80665;
pub const SDL_NONSHAPEABLE_WINDOW: i32 = -1;
pub const SDL_INVALID_SHAPE_ARGUMENT: i32 = -2;
pub const SDL_WINDOW_LACKS_SHAPE: i32 = -3;
pub const SDL_MAJOR_VERSION: u32 = 2;
pub const SDL_MINOR_VERSION: u32 = 0;
pub const SDL_PATCHLEVEL: u32 = 12;
pub const SDL_INIT_TIMER: u32 = 1;
pub const SDL_INIT_AUDIO: u32 = 16;
pub const SDL_INIT_VIDEO: u32 = 32;
pub const SDL_INIT_JOYSTICK: u32 = 512;
pub const SDL_INIT_HAPTIC: u32 = 4096;
pub const SDL_INIT_GAMECONTROLLER: u32 = 8192;
pub const SDL_INIT_EVENTS: u32 = 16384;
pub const SDL_INIT_SENSOR: u32 = 32768;
pub const SDL_INIT_NOPARACHUTE: u32 = 1048576;
pub const SDL_INIT_EVERYTHING: u32 = 62001;
extern "C" {
  pub fn SDL_GetPlatform() -> *const c_char;
}
pub type __int64_t = c_longlong;
pub type __darwin_size_t = c_ulong;
pub type __darwin_va_list = __builtin_va_list;
pub type __darwin_wchar_t = c_int;
pub type __darwin_off_t = __int64_t;
pub type va_list = __darwin_va_list;
pub type fpos_t = __darwin_off_t;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct __sbuf {
  pub _base: *mut c_uchar,
  pub _size: c_int,
}
impl Default for __sbuf {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __sFILEX {
  _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct __sFILE {
  pub _p: *mut c_uchar,
  pub _r: c_int,
  pub _w: c_int,
  pub _flags: c_short,
  pub _file: c_short,
  pub _bf: __sbuf,
  pub _lbfsize: c_int,
  pub _cookie: *mut c_void,
  pub _close: Option<unsafe extern "C" fn(arg1: *mut c_void) -> c_int>,
  pub _read: Option<
    unsafe extern "C" fn(
      arg1: *mut c_void,
      arg2: *mut c_char,
      arg3: c_int,
    ) -> c_int,
  >,
  pub _seek: Option<
    unsafe extern "C" fn(
      arg1: *mut c_void,
      arg2: fpos_t,
      arg3: c_int,
    ) -> fpos_t,
  >,
  pub _write: Option<
    unsafe extern "C" fn(
      arg1: *mut c_void,
      arg2: *const c_char,
      arg3: c_int,
    ) -> c_int,
  >,
  pub _ub: __sbuf,
  pub _extra: *mut __sFILEX,
  pub _ur: c_int,
  pub _ubuf: [c_uchar; 3],
  pub _nbuf: [c_uchar; 1],
  pub _lb: __sbuf,
  pub _blksize: c_int,
  pub _offset: fpos_t,
}
impl Default for __sFILE {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
pub type FILE = __sFILE;
pub type wchar_t = __darwin_wchar_t;
pub const SDL_FALSE: SDL_bool = 0;
pub const SDL_TRUE: SDL_bool = 1;
pub type SDL_bool = u32;
pub type Uint8 = u8;
pub type Sint16 = i16;
pub type Uint16 = u16;
pub type Sint32 = i32;
pub type Uint32 = u32;
pub type Sint64 = i64;
pub type Uint64 = u64;
pub type SDL_compile_time_assert_uint8 = [c_int; 1];
pub type SDL_compile_time_assert_sint8 = [c_int; 1];
pub type SDL_compile_time_assert_uint16 = [c_int; 1];
pub type SDL_compile_time_assert_sint16 = [c_int; 1];
pub type SDL_compile_time_assert_uint32 = [c_int; 1];
pub type SDL_compile_time_assert_sint32 = [c_int; 1];
pub type SDL_compile_time_assert_uint64 = [c_int; 1];
pub type SDL_compile_time_assert_sint64 = [c_int; 1];
pub const DUMMY_ENUM_VALUE: SDL_DUMMY_ENUM = 0;
pub type SDL_DUMMY_ENUM = u32;
pub type SDL_compile_time_assert_enum = [c_int; 1];
extern "C" {
  pub fn SDL_malloc(size: usize) -> *mut c_void;
}
extern "C" {
  pub fn SDL_calloc(nmemb: usize, size: usize) -> *mut c_void;
}
extern "C" {
  pub fn SDL_realloc(mem: *mut c_void, size: usize) -> *mut c_void;
}
extern "C" {
  pub fn SDL_free(mem: *mut c_void);
}
pub type SDL_malloc_func =
  Option<unsafe extern "C" fn(size: usize) -> *mut c_void>;
pub type SDL_calloc_func =
  Option<unsafe extern "C" fn(nmemb: usize, size: usize) -> *mut c_void>;
pub type SDL_realloc_func =
  Option<unsafe extern "C" fn(mem: *mut c_void, size: usize) -> *mut c_void>;
pub type SDL_free_func = Option<unsafe extern "C" fn(mem: *mut c_void)>;
extern "C" {
  pub fn SDL_GetMemoryFunctions(
    malloc_func: *mut SDL_malloc_func,
    calloc_func: *mut SDL_calloc_func,
    realloc_func: *mut SDL_realloc_func,
    free_func: *mut SDL_free_func,
  );
}
extern "C" {
  pub fn SDL_SetMemoryFunctions(
    malloc_func: SDL_malloc_func,
    calloc_func: SDL_calloc_func,
    realloc_func: SDL_realloc_func,
    free_func: SDL_free_func,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetNumAllocations() -> c_int;
}
extern "C" {
  pub fn SDL_getenv(name: *const c_char) -> *mut c_char;
}
extern "C" {
  pub fn SDL_setenv(
    name: *const c_char,
    value: *const c_char,
    overwrite: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_qsort(
    base: *mut c_void,
    nmemb: usize,
    size: usize,
    compare: Option<
      unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int,
    >,
  );
}
extern "C" {
  pub fn SDL_abs(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_isdigit(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_isspace(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_isupper(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_islower(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_toupper(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_tolower(x: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_memset(dst: *mut c_void, c: c_int, len: usize) -> *mut c_void;
}
extern "C" {
  pub fn SDL_memcpy(
    dst: *mut c_void,
    src: *const c_void,
    len: usize,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_memmove(
    dst: *mut c_void,
    src: *const c_void,
    len: usize,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_memcmp(s1: *const c_void, s2: *const c_void, len: usize) -> c_int;
}
extern "C" {
  pub fn SDL_wcslen(wstr: *const wchar_t) -> usize;
}
extern "C" {
  pub fn SDL_wcslcpy(
    dst: *mut wchar_t,
    src: *const wchar_t,
    maxlen: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_wcslcat(
    dst: *mut wchar_t,
    src: *const wchar_t,
    maxlen: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_wcsdup(wstr: *const wchar_t) -> *mut wchar_t;
}
extern "C" {
  pub fn SDL_wcsstr(
    haystack: *const wchar_t,
    needle: *const wchar_t,
  ) -> *mut wchar_t;
}
extern "C" {
  pub fn SDL_wcscmp(str1: *const wchar_t, str2: *const wchar_t) -> c_int;
}
extern "C" {
  pub fn SDL_wcsncmp(
    str1: *const wchar_t,
    str2: *const wchar_t,
    maxlen: usize,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_strlen(str: *const c_char) -> usize;
}
extern "C" {
  pub fn SDL_strlcpy(
    dst: *mut c_char,
    src: *const c_char,
    maxlen: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_utf8strlcpy(
    dst: *mut c_char,
    src: *const c_char,
    dst_bytes: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_strlcat(
    dst: *mut c_char,
    src: *const c_char,
    maxlen: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_strdup(str: *const c_char) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strrev(str: *mut c_char) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strupr(str: *mut c_char) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strlwr(str: *mut c_char) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strchr(str: *const c_char, c: c_int) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strrchr(str: *const c_char, c: c_int) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strstr(
    haystack: *const c_char,
    needle: *const c_char,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_strtokr(
    s1: *mut c_char,
    s2: *const c_char,
    saveptr: *mut *mut c_char,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_utf8strlen(str: *const c_char) -> usize;
}
extern "C" {
  pub fn SDL_itoa(value: c_int, str: *mut c_char, radix: c_int) -> *mut c_char;
}
extern "C" {
  pub fn SDL_uitoa(
    value: c_uint,
    str: *mut c_char,
    radix: c_int,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_ltoa(value: c_long, str: *mut c_char, radix: c_int)
    -> *mut c_char;
}
extern "C" {
  pub fn SDL_ultoa(
    value: c_ulong,
    str: *mut c_char,
    radix: c_int,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_lltoa(
    value: Sint64,
    str: *mut c_char,
    radix: c_int,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_ulltoa(
    value: Uint64,
    str: *mut c_char,
    radix: c_int,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_atoi(str: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_atof(str: *const c_char) -> f64;
}
extern "C" {
  pub fn SDL_strtol(
    str: *const c_char,
    endp: *mut *mut c_char,
    base: c_int,
  ) -> c_long;
}
extern "C" {
  pub fn SDL_strtoul(
    str: *const c_char,
    endp: *mut *mut c_char,
    base: c_int,
  ) -> c_ulong;
}
extern "C" {
  pub fn SDL_strtoll(
    str: *const c_char,
    endp: *mut *mut c_char,
    base: c_int,
  ) -> Sint64;
}
extern "C" {
  pub fn SDL_strtoull(
    str: *const c_char,
    endp: *mut *mut c_char,
    base: c_int,
  ) -> Uint64;
}
extern "C" {
  pub fn SDL_strtod(str: *const c_char, endp: *mut *mut c_char) -> f64;
}
extern "C" {
  pub fn SDL_strcmp(str1: *const c_char, str2: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_strncmp(
    str1: *const c_char,
    str2: *const c_char,
    maxlen: usize,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_strcasecmp(str1: *const c_char, str2: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_strncasecmp(
    str1: *const c_char,
    str2: *const c_char,
    len: usize,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_sscanf(text: *const c_char, fmt: *const c_char, ...) -> c_int;
}
extern "C" {
  pub fn SDL_vsscanf(
    text: *const c_char,
    fmt: *const c_char,
    ap: *mut __va_list_tag,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_snprintf(
    text: *mut c_char,
    maxlen: usize,
    fmt: *const c_char,
    ...
  ) -> c_int;
}
extern "C" {
  pub fn SDL_vsnprintf(
    text: *mut c_char,
    maxlen: usize,
    fmt: *const c_char,
    ap: *mut __va_list_tag,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_acos(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_acosf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_asin(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_asinf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_atan(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_atanf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_atan2(x: f64, y: f64) -> f64;
}
extern "C" {
  pub fn SDL_atan2f(x: f32, y: f32) -> f32;
}
extern "C" {
  pub fn SDL_ceil(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_ceilf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_copysign(x: f64, y: f64) -> f64;
}
extern "C" {
  pub fn SDL_copysignf(x: f32, y: f32) -> f32;
}
extern "C" {
  pub fn SDL_cos(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_cosf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_exp(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_expf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_fabs(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_fabsf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_floor(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_floorf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_fmod(x: f64, y: f64) -> f64;
}
extern "C" {
  pub fn SDL_fmodf(x: f32, y: f32) -> f32;
}
extern "C" {
  pub fn SDL_log(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_logf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_log10(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_log10f(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_pow(x: f64, y: f64) -> f64;
}
extern "C" {
  pub fn SDL_powf(x: f32, y: f32) -> f32;
}
extern "C" {
  pub fn SDL_scalbn(x: f64, n: c_int) -> f64;
}
extern "C" {
  pub fn SDL_scalbnf(x: f32, n: c_int) -> f32;
}
extern "C" {
  pub fn SDL_sin(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_sinf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_sqrt(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_sqrtf(x: f32) -> f32;
}
extern "C" {
  pub fn SDL_tan(x: f64) -> f64;
}
extern "C" {
  pub fn SDL_tanf(x: f32) -> f32;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_iconv_t {
  _unused: [u8; 0],
}
pub type SDL_iconv_t = *mut _SDL_iconv_t;
extern "C" {
  pub fn SDL_iconv_open(
    tocode: *const c_char,
    fromcode: *const c_char,
  ) -> SDL_iconv_t;
}
extern "C" {
  pub fn SDL_iconv_close(cd: SDL_iconv_t) -> c_int;
}
extern "C" {
  pub fn SDL_iconv(
    cd: SDL_iconv_t,
    inbuf: *mut *const c_char,
    inbytesleft: *mut usize,
    outbuf: *mut *mut c_char,
    outbytesleft: *mut usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_iconv_string(
    tocode: *const c_char,
    fromcode: *const c_char,
    inbuf: *const c_char,
    inbytesleft: usize,
  ) -> *mut c_char;
}
pub type SDL_main_func =
  Option<unsafe extern "C" fn(argc: c_int, argv: *mut *mut c_char) -> c_int>;
extern "C" {
  pub fn SDL_main(argc: c_int, argv: *mut *mut c_char) -> c_int;
}
extern "C" {
  pub fn SDL_SetMainReady();
}
pub const SDL_ASSERTION_RETRY: SDL_AssertState = 0;
pub const SDL_ASSERTION_BREAK: SDL_AssertState = 1;
pub const SDL_ASSERTION_ABORT: SDL_AssertState = 2;
pub const SDL_ASSERTION_IGNORE: SDL_AssertState = 3;
pub const SDL_ASSERTION_ALWAYS_IGNORE: SDL_AssertState = 4;
pub type SDL_AssertState = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_AssertData {
  pub always_ignore: c_int,
  pub trigger_count: c_uint,
  pub condition: *const c_char,
  pub filename: *const c_char,
  pub linenum: c_int,
  pub function: *const c_char,
  pub next: *const SDL_AssertData,
}
impl Default for SDL_AssertData {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
extern "C" {
  pub fn SDL_ReportAssertion(
    arg1: *mut SDL_AssertData,
    arg2: *const c_char,
    arg3: *const c_char,
    arg4: c_int,
  ) -> SDL_AssertState;
}
pub type SDL_AssertionHandler = Option<
  unsafe extern "C" fn(
    data: *const SDL_AssertData,
    userdata: *mut c_void,
  ) -> SDL_AssertState,
>;
extern "C" {
  pub fn SDL_SetAssertionHandler(
    handler: SDL_AssertionHandler,
    userdata: *mut c_void,
  );
}
extern "C" {
  pub fn SDL_GetDefaultAssertionHandler() -> SDL_AssertionHandler;
}
extern "C" {
  pub fn SDL_GetAssertionHandler(
    puserdata: *mut *mut c_void,
  ) -> SDL_AssertionHandler;
}
extern "C" {
  pub fn SDL_GetAssertionReport() -> *const SDL_AssertData;
}
extern "C" {
  pub fn SDL_ResetAssertionReport();
}
pub type SDL_SpinLock = c_int;
extern "C" {
  pub fn SDL_AtomicTryLock(lock: *mut SDL_SpinLock) -> SDL_bool;
}
extern "C" {
  pub fn SDL_AtomicLock(lock: *mut SDL_SpinLock);
}
extern "C" {
  pub fn SDL_AtomicUnlock(lock: *mut SDL_SpinLock);
}
extern "C" {
  pub fn SDL_MemoryBarrierReleaseFunction();
}
extern "C" {
  pub fn SDL_MemoryBarrierAcquireFunction();
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_atomic_t {
  pub value: c_int,
}
extern "C" {
  pub fn SDL_AtomicCAS(
    a: *mut SDL_atomic_t,
    oldval: c_int,
    newval: c_int,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_AtomicSet(a: *mut SDL_atomic_t, v: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_AtomicGet(a: *mut SDL_atomic_t) -> c_int;
}
extern "C" {
  pub fn SDL_AtomicAdd(a: *mut SDL_atomic_t, v: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_AtomicCASPtr(
    a: *mut *mut c_void,
    oldval: *mut c_void,
    newval: *mut c_void,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_AtomicSetPtr(a: *mut *mut c_void, v: *mut c_void) -> *mut c_void;
}
extern "C" {
  pub fn SDL_AtomicGetPtr(a: *mut *mut c_void) -> *mut c_void;
}
extern "C" {
  pub fn SDL_SetError(fmt: *const c_char, ...) -> c_int;
}
extern "C" {
  pub fn SDL_GetError() -> *const c_char;
}
extern "C" {
  pub fn SDL_ClearError();
}
pub const SDL_ENOMEM: SDL_errorcode = 0;
pub const SDL_EFREAD: SDL_errorcode = 1;
pub const SDL_EFWRITE: SDL_errorcode = 2;
pub const SDL_EFSEEK: SDL_errorcode = 3;
pub const SDL_UNSUPPORTED: SDL_errorcode = 4;
pub const SDL_LASTERROR: SDL_errorcode = 5;
pub type SDL_errorcode = u32;
extern "C" {
  pub fn SDL_Error(code: SDL_errorcode) -> c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_mutex {
  _unused: [u8; 0],
}
extern "C" {
  pub fn SDL_CreateMutex() -> *mut SDL_mutex;
}
extern "C" {
  pub fn SDL_LockMutex(mutex: *mut SDL_mutex) -> c_int;
}
extern "C" {
  pub fn SDL_TryLockMutex(mutex: *mut SDL_mutex) -> c_int;
}
extern "C" {
  pub fn SDL_UnlockMutex(mutex: *mut SDL_mutex) -> c_int;
}
extern "C" {
  pub fn SDL_DestroyMutex(mutex: *mut SDL_mutex);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_semaphore {
  _unused: [u8; 0],
}
pub type SDL_sem = SDL_semaphore;
extern "C" {
  pub fn SDL_CreateSemaphore(initial_value: Uint32) -> *mut SDL_sem;
}
extern "C" {
  pub fn SDL_DestroySemaphore(sem: *mut SDL_sem);
}
extern "C" {
  pub fn SDL_SemWait(sem: *mut SDL_sem) -> c_int;
}
extern "C" {
  pub fn SDL_SemTryWait(sem: *mut SDL_sem) -> c_int;
}
extern "C" {
  pub fn SDL_SemWaitTimeout(sem: *mut SDL_sem, ms: Uint32) -> c_int;
}
extern "C" {
  pub fn SDL_SemPost(sem: *mut SDL_sem) -> c_int;
}
extern "C" {
  pub fn SDL_SemValue(sem: *mut SDL_sem) -> Uint32;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_cond {
  _unused: [u8; 0],
}
extern "C" {
  pub fn SDL_CreateCond() -> *mut SDL_cond;
}
extern "C" {
  pub fn SDL_DestroyCond(cond: *mut SDL_cond);
}
extern "C" {
  pub fn SDL_CondSignal(cond: *mut SDL_cond) -> c_int;
}
extern "C" {
  pub fn SDL_CondBroadcast(cond: *mut SDL_cond) -> c_int;
}
extern "C" {
  pub fn SDL_CondWait(cond: *mut SDL_cond, mutex: *mut SDL_mutex) -> c_int;
}
extern "C" {
  pub fn SDL_CondWaitTimeout(
    cond: *mut SDL_cond,
    mutex: *mut SDL_mutex,
    ms: Uint32,
  ) -> c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_Thread {
  _unused: [u8; 0],
}
pub type SDL_threadID = c_ulong;
pub type SDL_TLSID = c_uint;
pub const SDL_THREAD_PRIORITY_LOW: SDL_ThreadPriority = 0;
pub const SDL_THREAD_PRIORITY_NORMAL: SDL_ThreadPriority = 1;
pub const SDL_THREAD_PRIORITY_HIGH: SDL_ThreadPriority = 2;
pub const SDL_THREAD_PRIORITY_TIME_CRITICAL: SDL_ThreadPriority = 3;
pub type SDL_ThreadPriority = u32;
pub type SDL_ThreadFunction =
  Option<unsafe extern "C" fn(data: *mut c_void) -> c_int>;
extern "C" {
  pub fn SDL_CreateThread(
    fn_: SDL_ThreadFunction,
    name: *const c_char,
    data: *mut c_void,
  ) -> *mut SDL_Thread;
}
extern "C" {
  pub fn SDL_CreateThreadWithStackSize(
    fn_: SDL_ThreadFunction,
    name: *const c_char,
    stacksize: usize,
    data: *mut c_void,
  ) -> *mut SDL_Thread;
}
extern "C" {
  pub fn SDL_GetThreadName(thread: *mut SDL_Thread) -> *const c_char;
}
extern "C" {
  pub fn SDL_ThreadID() -> SDL_threadID;
}
extern "C" {
  pub fn SDL_GetThreadID(thread: *mut SDL_Thread) -> SDL_threadID;
}
extern "C" {
  pub fn SDL_SetThreadPriority(priority: SDL_ThreadPriority) -> c_int;
}
extern "C" {
  pub fn SDL_WaitThread(thread: *mut SDL_Thread, status: *mut c_int);
}
extern "C" {
  pub fn SDL_DetachThread(thread: *mut SDL_Thread);
}
extern "C" {
  pub fn SDL_TLSCreate() -> SDL_TLSID;
}
extern "C" {
  pub fn SDL_TLSGet(id: SDL_TLSID) -> *mut c_void;
}
extern "C" {
  pub fn SDL_TLSSet(
    id: SDL_TLSID,
    value: *const c_void,
    destructor: Option<unsafe extern "C" fn(arg1: *mut c_void)>,
  ) -> c_int;
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SDL_RWops {
  pub size: Option<unsafe extern "C" fn(context: *mut SDL_RWops) -> Sint64>,
  pub seek: Option<
    unsafe extern "C" fn(
      context: *mut SDL_RWops,
      offset: Sint64,
      whence: c_int,
    ) -> Sint64,
  >,
  pub read: Option<
    unsafe extern "C" fn(
      context: *mut SDL_RWops,
      ptr: *mut c_void,
      size: usize,
      maxnum: usize,
    ) -> usize,
  >,
  pub write: Option<
    unsafe extern "C" fn(
      context: *mut SDL_RWops,
      ptr: *const c_void,
      size: usize,
      num: usize,
    ) -> usize,
  >,
  pub close: Option<unsafe extern "C" fn(context: *mut SDL_RWops) -> c_int>,
  pub type_: Uint32,
  pub hidden: SDL_RWops__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_RWops__bindgen_ty_1 {
  pub stdio: SDL_RWops__bindgen_ty_1__bindgen_ty_1,
  pub mem: SDL_RWops__bindgen_ty_1__bindgen_ty_2,
  pub unknown: SDL_RWops__bindgen_ty_1__bindgen_ty_3,
  _bindgen_union_align: [u64; 3],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_1 {
  pub autoclose: SDL_bool,
  pub fp: *mut FILE,
}
impl Default for SDL_RWops__bindgen_ty_1__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_2 {
  pub base: *mut Uint8,
  pub here: *mut Uint8,
  pub stop: *mut Uint8,
}
impl Default for SDL_RWops__bindgen_ty_1__bindgen_ty_2 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_3 {
  pub data1: *mut c_void,
  pub data2: *mut c_void,
}
impl Default for SDL_RWops__bindgen_ty_1__bindgen_ty_3 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Default for SDL_RWops__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_RWops__bindgen_ty_1 {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_RWops__bindgen_ty_1 {{ union }}")
  }
}
impl Default for SDL_RWops {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_RWops {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write ! ( f , "SDL_RWops {{ size: {:?}, seek: {:?}, read: {:?}, write: {:?}, close: {:?}, type: {:?}, hidden: {:?} }}" , self . size , self . seek , self . read , self . write , self . close , self . type_ , self . hidden )
  }
}
extern "C" {
  pub fn SDL_RWFromFile(
    file: *const c_char,
    mode: *const c_char,
  ) -> *mut SDL_RWops;
}
extern "C" {
  pub fn SDL_RWFromFP(fp: *mut FILE, autoclose: SDL_bool) -> *mut SDL_RWops;
}
extern "C" {
  pub fn SDL_RWFromMem(mem: *mut c_void, size: c_int) -> *mut SDL_RWops;
}
extern "C" {
  pub fn SDL_RWFromConstMem(mem: *const c_void, size: c_int) -> *mut SDL_RWops;
}
extern "C" {
  pub fn SDL_AllocRW() -> *mut SDL_RWops;
}
extern "C" {
  pub fn SDL_FreeRW(area: *mut SDL_RWops);
}
extern "C" {
  pub fn SDL_RWsize(context: *mut SDL_RWops) -> Sint64;
}
extern "C" {
  pub fn SDL_RWseek(
    context: *mut SDL_RWops,
    offset: Sint64,
    whence: c_int,
  ) -> Sint64;
}
extern "C" {
  pub fn SDL_RWtell(context: *mut SDL_RWops) -> Sint64;
}
extern "C" {
  pub fn SDL_RWread(
    context: *mut SDL_RWops,
    ptr: *mut c_void,
    size: usize,
    maxnum: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_RWwrite(
    context: *mut SDL_RWops,
    ptr: *const c_void,
    size: usize,
    num: usize,
  ) -> usize;
}
extern "C" {
  pub fn SDL_RWclose(context: *mut SDL_RWops) -> c_int;
}
extern "C" {
  pub fn SDL_LoadFile_RW(
    src: *mut SDL_RWops,
    datasize: *mut usize,
    freesrc: c_int,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_LoadFile(file: *const c_char, datasize: *mut usize)
    -> *mut c_void;
}
extern "C" {
  pub fn SDL_ReadU8(src: *mut SDL_RWops) -> Uint8;
}
extern "C" {
  pub fn SDL_ReadLE16(src: *mut SDL_RWops) -> Uint16;
}
extern "C" {
  pub fn SDL_ReadBE16(src: *mut SDL_RWops) -> Uint16;
}
extern "C" {
  pub fn SDL_ReadLE32(src: *mut SDL_RWops) -> Uint32;
}
extern "C" {
  pub fn SDL_ReadBE32(src: *mut SDL_RWops) -> Uint32;
}
extern "C" {
  pub fn SDL_ReadLE64(src: *mut SDL_RWops) -> Uint64;
}
extern "C" {
  pub fn SDL_ReadBE64(src: *mut SDL_RWops) -> Uint64;
}
extern "C" {
  pub fn SDL_WriteU8(dst: *mut SDL_RWops, value: Uint8) -> usize;
}
extern "C" {
  pub fn SDL_WriteLE16(dst: *mut SDL_RWops, value: Uint16) -> usize;
}
extern "C" {
  pub fn SDL_WriteBE16(dst: *mut SDL_RWops, value: Uint16) -> usize;
}
extern "C" {
  pub fn SDL_WriteLE32(dst: *mut SDL_RWops, value: Uint32) -> usize;
}
extern "C" {
  pub fn SDL_WriteBE32(dst: *mut SDL_RWops, value: Uint32) -> usize;
}
extern "C" {
  pub fn SDL_WriteLE64(dst: *mut SDL_RWops, value: Uint64) -> usize;
}
extern "C" {
  pub fn SDL_WriteBE64(dst: *mut SDL_RWops, value: Uint64) -> usize;
}
pub type SDL_AudioFormat = Uint16;
pub type SDL_AudioCallback = Option<
  unsafe extern "C" fn(userdata: *mut c_void, stream: *mut Uint8, len: c_int),
>;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_AudioSpec {
  pub freq: c_int,
  pub format: SDL_AudioFormat,
  pub channels: Uint8,
  pub silence: Uint8,
  pub samples: Uint16,
  pub padding: Uint16,
  pub size: Uint32,
  pub callback: SDL_AudioCallback,
  pub userdata: *mut c_void,
}
impl Default for SDL_AudioSpec {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
pub type SDL_AudioFilter =
  Option<unsafe extern "C" fn(cvt: *mut SDL_AudioCVT, format: SDL_AudioFormat)>;
#[repr(C, packed)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_AudioCVT {
  pub needed: c_int,
  pub src_format: SDL_AudioFormat,
  pub dst_format: SDL_AudioFormat,
  pub rate_incr: f64,
  pub buf: *mut Uint8,
  pub len: c_int,
  pub len_cvt: c_int,
  pub len_mult: c_int,
  pub len_ratio: f64,
  pub filters: [SDL_AudioFilter; 10],
  pub filter_index: c_int,
}
impl Default for SDL_AudioCVT {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
extern "C" {
  pub fn SDL_GetNumAudioDrivers() -> c_int;
}
extern "C" {
  pub fn SDL_GetAudioDriver(index: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_AudioInit(driver_name: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_AudioQuit();
}
extern "C" {
  pub fn SDL_GetCurrentAudioDriver() -> *const c_char;
}
extern "C" {
  pub fn SDL_OpenAudio(
    desired: *mut SDL_AudioSpec,
    obtained: *mut SDL_AudioSpec,
  ) -> c_int;
}
pub type SDL_AudioDeviceID = Uint32;
extern "C" {
  pub fn SDL_GetNumAudioDevices(iscapture: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GetAudioDeviceName(
    index: c_int,
    iscapture: c_int,
  ) -> *const c_char;
}
extern "C" {
  pub fn SDL_OpenAudioDevice(
    device: *const c_char,
    iscapture: c_int,
    desired: *const SDL_AudioSpec,
    obtained: *mut SDL_AudioSpec,
    allowed_changes: c_int,
  ) -> SDL_AudioDeviceID;
}
pub const SDL_AUDIO_STOPPED: SDL_AudioStatus = 0;
pub const SDL_AUDIO_PLAYING: SDL_AudioStatus = 1;
pub const SDL_AUDIO_PAUSED: SDL_AudioStatus = 2;
pub type SDL_AudioStatus = u32;
extern "C" {
  pub fn SDL_GetAudioStatus() -> SDL_AudioStatus;
}
extern "C" {
  pub fn SDL_GetAudioDeviceStatus(dev: SDL_AudioDeviceID) -> SDL_AudioStatus;
}
extern "C" {
  pub fn SDL_PauseAudio(pause_on: c_int);
}
extern "C" {
  pub fn SDL_PauseAudioDevice(dev: SDL_AudioDeviceID, pause_on: c_int);
}
extern "C" {
  pub fn SDL_LoadWAV_RW(
    src: *mut SDL_RWops,
    freesrc: c_int,
    spec: *mut SDL_AudioSpec,
    audio_buf: *mut *mut Uint8,
    audio_len: *mut Uint32,
  ) -> *mut SDL_AudioSpec;
}
extern "C" {
  pub fn SDL_FreeWAV(audio_buf: *mut Uint8);
}
extern "C" {
  pub fn SDL_BuildAudioCVT(
    cvt: *mut SDL_AudioCVT,
    src_format: SDL_AudioFormat,
    src_channels: Uint8,
    src_rate: c_int,
    dst_format: SDL_AudioFormat,
    dst_channels: Uint8,
    dst_rate: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_ConvertAudio(cvt: *mut SDL_AudioCVT) -> c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_AudioStream {
  _unused: [u8; 0],
}
pub type SDL_AudioStream = _SDL_AudioStream;
extern "C" {
  pub fn SDL_NewAudioStream(
    src_format: SDL_AudioFormat,
    src_channels: Uint8,
    src_rate: c_int,
    dst_format: SDL_AudioFormat,
    dst_channels: Uint8,
    dst_rate: c_int,
  ) -> *mut SDL_AudioStream;
}
extern "C" {
  pub fn SDL_AudioStreamPut(
    stream: *mut SDL_AudioStream,
    buf: *const c_void,
    len: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_AudioStreamGet(
    stream: *mut SDL_AudioStream,
    buf: *mut c_void,
    len: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_AudioStreamAvailable(stream: *mut SDL_AudioStream) -> c_int;
}
extern "C" {
  pub fn SDL_AudioStreamFlush(stream: *mut SDL_AudioStream) -> c_int;
}
extern "C" {
  pub fn SDL_AudioStreamClear(stream: *mut SDL_AudioStream);
}
extern "C" {
  pub fn SDL_FreeAudioStream(stream: *mut SDL_AudioStream);
}
extern "C" {
  pub fn SDL_MixAudio(
    dst: *mut Uint8,
    src: *const Uint8,
    len: Uint32,
    volume: c_int,
  );
}
extern "C" {
  pub fn SDL_MixAudioFormat(
    dst: *mut Uint8,
    src: *const Uint8,
    format: SDL_AudioFormat,
    len: Uint32,
    volume: c_int,
  );
}
extern "C" {
  pub fn SDL_QueueAudio(
    dev: SDL_AudioDeviceID,
    data: *const c_void,
    len: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_DequeueAudio(
    dev: SDL_AudioDeviceID,
    data: *mut c_void,
    len: Uint32,
  ) -> Uint32;
}
extern "C" {
  pub fn SDL_GetQueuedAudioSize(dev: SDL_AudioDeviceID) -> Uint32;
}
extern "C" {
  pub fn SDL_ClearQueuedAudio(dev: SDL_AudioDeviceID);
}
extern "C" {
  pub fn SDL_LockAudio();
}
extern "C" {
  pub fn SDL_LockAudioDevice(dev: SDL_AudioDeviceID);
}
extern "C" {
  pub fn SDL_UnlockAudio();
}
extern "C" {
  pub fn SDL_UnlockAudioDevice(dev: SDL_AudioDeviceID);
}
extern "C" {
  pub fn SDL_CloseAudio();
}
extern "C" {
  pub fn SDL_CloseAudioDevice(dev: SDL_AudioDeviceID);
}
extern "C" {
  pub fn SDL_SetClipboardText(text: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_GetClipboardText() -> *mut c_char;
}
extern "C" {
  pub fn SDL_HasClipboardText() -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetCPUCount() -> c_int;
}
extern "C" {
  pub fn SDL_GetCPUCacheLineSize() -> c_int;
}
extern "C" {
  pub fn SDL_HasRDTSC() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasAltiVec() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasMMX() -> SDL_bool;
}
extern "C" {
  pub fn SDL_Has3DNow() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasSSE() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasSSE2() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasSSE3() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasSSE41() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasSSE42() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasAVX() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasAVX2() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasAVX512F() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasARMSIMD() -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasNEON() -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetSystemRAM() -> c_int;
}
extern "C" {
  pub fn SDL_SIMDGetAlignment() -> usize;
}
extern "C" {
  pub fn SDL_SIMDAlloc(len: usize) -> *mut c_void;
}
extern "C" {
  pub fn SDL_SIMDFree(ptr: *mut c_void);
}
pub const SDL_PIXELTYPE_UNKNOWN: SDL_PixelType = 0;
pub const SDL_PIXELTYPE_INDEX1: SDL_PixelType = 1;
pub const SDL_PIXELTYPE_INDEX4: SDL_PixelType = 2;
pub const SDL_PIXELTYPE_INDEX8: SDL_PixelType = 3;
pub const SDL_PIXELTYPE_PACKED8: SDL_PixelType = 4;
pub const SDL_PIXELTYPE_PACKED16: SDL_PixelType = 5;
pub const SDL_PIXELTYPE_PACKED32: SDL_PixelType = 6;
pub const SDL_PIXELTYPE_ARRAYU8: SDL_PixelType = 7;
pub const SDL_PIXELTYPE_ARRAYU16: SDL_PixelType = 8;
pub const SDL_PIXELTYPE_ARRAYU32: SDL_PixelType = 9;
pub const SDL_PIXELTYPE_ARRAYF16: SDL_PixelType = 10;
pub const SDL_PIXELTYPE_ARRAYF32: SDL_PixelType = 11;
pub type SDL_PixelType = u32;
pub const SDL_BITMAPORDER_NONE: SDL_BitmapOrder = 0;
pub const SDL_BITMAPORDER_4321: SDL_BitmapOrder = 1;
pub const SDL_BITMAPORDER_1234: SDL_BitmapOrder = 2;
pub type SDL_BitmapOrder = u32;
pub const SDL_PACKEDORDER_NONE: SDL_PackedOrder = 0;
pub const SDL_PACKEDORDER_XRGB: SDL_PackedOrder = 1;
pub const SDL_PACKEDORDER_RGBX: SDL_PackedOrder = 2;
pub const SDL_PACKEDORDER_ARGB: SDL_PackedOrder = 3;
pub const SDL_PACKEDORDER_RGBA: SDL_PackedOrder = 4;
pub const SDL_PACKEDORDER_XBGR: SDL_PackedOrder = 5;
pub const SDL_PACKEDORDER_BGRX: SDL_PackedOrder = 6;
pub const SDL_PACKEDORDER_ABGR: SDL_PackedOrder = 7;
pub const SDL_PACKEDORDER_BGRA: SDL_PackedOrder = 8;
pub type SDL_PackedOrder = u32;
pub const SDL_ARRAYORDER_NONE: SDL_ArrayOrder = 0;
pub const SDL_ARRAYORDER_RGB: SDL_ArrayOrder = 1;
pub const SDL_ARRAYORDER_RGBA: SDL_ArrayOrder = 2;
pub const SDL_ARRAYORDER_ARGB: SDL_ArrayOrder = 3;
pub const SDL_ARRAYORDER_BGR: SDL_ArrayOrder = 4;
pub const SDL_ARRAYORDER_BGRA: SDL_ArrayOrder = 5;
pub const SDL_ARRAYORDER_ABGR: SDL_ArrayOrder = 6;
pub type SDL_ArrayOrder = u32;
pub const SDL_PACKEDLAYOUT_NONE: SDL_PackedLayout = 0;
pub const SDL_PACKEDLAYOUT_332: SDL_PackedLayout = 1;
pub const SDL_PACKEDLAYOUT_4444: SDL_PackedLayout = 2;
pub const SDL_PACKEDLAYOUT_1555: SDL_PackedLayout = 3;
pub const SDL_PACKEDLAYOUT_5551: SDL_PackedLayout = 4;
pub const SDL_PACKEDLAYOUT_565: SDL_PackedLayout = 5;
pub const SDL_PACKEDLAYOUT_8888: SDL_PackedLayout = 6;
pub const SDL_PACKEDLAYOUT_2101010: SDL_PackedLayout = 7;
pub const SDL_PACKEDLAYOUT_1010102: SDL_PackedLayout = 8;
pub type SDL_PackedLayout = u32;
pub const SDL_PIXELFORMAT_UNKNOWN: SDL_PixelFormatEnum = 0;
pub const SDL_PIXELFORMAT_INDEX1LSB: SDL_PixelFormatEnum = 286261504;
pub const SDL_PIXELFORMAT_INDEX1MSB: SDL_PixelFormatEnum = 287310080;
pub const SDL_PIXELFORMAT_INDEX4LSB: SDL_PixelFormatEnum = 303039488;
pub const SDL_PIXELFORMAT_INDEX4MSB: SDL_PixelFormatEnum = 304088064;
pub const SDL_PIXELFORMAT_INDEX8: SDL_PixelFormatEnum = 318769153;
pub const SDL_PIXELFORMAT_RGB332: SDL_PixelFormatEnum = 336660481;
pub const SDL_PIXELFORMAT_RGB444: SDL_PixelFormatEnum = 353504258;
pub const SDL_PIXELFORMAT_BGR444: SDL_PixelFormatEnum = 357698562;
pub const SDL_PIXELFORMAT_RGB555: SDL_PixelFormatEnum = 353570562;
pub const SDL_PIXELFORMAT_BGR555: SDL_PixelFormatEnum = 357764866;
pub const SDL_PIXELFORMAT_ARGB4444: SDL_PixelFormatEnum = 355602434;
pub const SDL_PIXELFORMAT_RGBA4444: SDL_PixelFormatEnum = 356651010;
pub const SDL_PIXELFORMAT_ABGR4444: SDL_PixelFormatEnum = 359796738;
pub const SDL_PIXELFORMAT_BGRA4444: SDL_PixelFormatEnum = 360845314;
pub const SDL_PIXELFORMAT_ARGB1555: SDL_PixelFormatEnum = 355667970;
pub const SDL_PIXELFORMAT_RGBA5551: SDL_PixelFormatEnum = 356782082;
pub const SDL_PIXELFORMAT_ABGR1555: SDL_PixelFormatEnum = 359862274;
pub const SDL_PIXELFORMAT_BGRA5551: SDL_PixelFormatEnum = 360976386;
pub const SDL_PIXELFORMAT_RGB565: SDL_PixelFormatEnum = 353701890;
pub const SDL_PIXELFORMAT_BGR565: SDL_PixelFormatEnum = 357896194;
pub const SDL_PIXELFORMAT_RGB24: SDL_PixelFormatEnum = 386930691;
pub const SDL_PIXELFORMAT_BGR24: SDL_PixelFormatEnum = 390076419;
pub const SDL_PIXELFORMAT_RGB888: SDL_PixelFormatEnum = 370546692;
pub const SDL_PIXELFORMAT_RGBX8888: SDL_PixelFormatEnum = 371595268;
pub const SDL_PIXELFORMAT_BGR888: SDL_PixelFormatEnum = 374740996;
pub const SDL_PIXELFORMAT_BGRX8888: SDL_PixelFormatEnum = 375789572;
pub const SDL_PIXELFORMAT_ARGB8888: SDL_PixelFormatEnum = 372645892;
pub const SDL_PIXELFORMAT_RGBA8888: SDL_PixelFormatEnum = 373694468;
pub const SDL_PIXELFORMAT_ABGR8888: SDL_PixelFormatEnum = 376840196;
pub const SDL_PIXELFORMAT_BGRA8888: SDL_PixelFormatEnum = 377888772;
pub const SDL_PIXELFORMAT_ARGB2101010: SDL_PixelFormatEnum = 372711428;
pub const SDL_PIXELFORMAT_RGBA32: SDL_PixelFormatEnum = 376840196;
pub const SDL_PIXELFORMAT_ARGB32: SDL_PixelFormatEnum = 377888772;
pub const SDL_PIXELFORMAT_BGRA32: SDL_PixelFormatEnum = 372645892;
pub const SDL_PIXELFORMAT_ABGR32: SDL_PixelFormatEnum = 373694468;
pub const SDL_PIXELFORMAT_YV12: SDL_PixelFormatEnum = 842094169;
pub const SDL_PIXELFORMAT_IYUV: SDL_PixelFormatEnum = 1448433993;
pub const SDL_PIXELFORMAT_YUY2: SDL_PixelFormatEnum = 844715353;
pub const SDL_PIXELFORMAT_UYVY: SDL_PixelFormatEnum = 1498831189;
pub const SDL_PIXELFORMAT_YVYU: SDL_PixelFormatEnum = 1431918169;
pub const SDL_PIXELFORMAT_NV12: SDL_PixelFormatEnum = 842094158;
pub const SDL_PIXELFORMAT_NV21: SDL_PixelFormatEnum = 825382478;
pub const SDL_PIXELFORMAT_EXTERNAL_OES: SDL_PixelFormatEnum = 542328143;
pub type SDL_PixelFormatEnum = u32;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_Color {
  pub r: Uint8,
  pub g: Uint8,
  pub b: Uint8,
  pub a: Uint8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_Palette {
  pub ncolors: c_int,
  pub colors: *mut SDL_Color,
  pub version: Uint32,
  pub refcount: c_int,
}
impl Default for SDL_Palette {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_PixelFormat {
  pub format: Uint32,
  pub palette: *mut SDL_Palette,
  pub BitsPerPixel: Uint8,
  pub BytesPerPixel: Uint8,
  pub padding: [Uint8; 2],
  pub Rmask: Uint32,
  pub Gmask: Uint32,
  pub Bmask: Uint32,
  pub Amask: Uint32,
  pub Rloss: Uint8,
  pub Gloss: Uint8,
  pub Bloss: Uint8,
  pub Aloss: Uint8,
  pub Rshift: Uint8,
  pub Gshift: Uint8,
  pub Bshift: Uint8,
  pub Ashift: Uint8,
  pub refcount: c_int,
  pub next: *mut SDL_PixelFormat,
}
impl Default for SDL_PixelFormat {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
extern "C" {
  pub fn SDL_GetPixelFormatName(format: Uint32) -> *const c_char;
}
extern "C" {
  pub fn SDL_PixelFormatEnumToMasks(
    format: Uint32,
    bpp: *mut c_int,
    Rmask: *mut Uint32,
    Gmask: *mut Uint32,
    Bmask: *mut Uint32,
    Amask: *mut Uint32,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_MasksToPixelFormatEnum(
    bpp: c_int,
    Rmask: Uint32,
    Gmask: Uint32,
    Bmask: Uint32,
    Amask: Uint32,
  ) -> Uint32;
}
extern "C" {
  pub fn SDL_AllocFormat(pixel_format: Uint32) -> *mut SDL_PixelFormat;
}
extern "C" {
  pub fn SDL_FreeFormat(format: *mut SDL_PixelFormat);
}
extern "C" {
  pub fn SDL_AllocPalette(ncolors: c_int) -> *mut SDL_Palette;
}
extern "C" {
  pub fn SDL_SetPixelFormatPalette(
    format: *mut SDL_PixelFormat,
    palette: *mut SDL_Palette,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetPaletteColors(
    palette: *mut SDL_Palette,
    colors: *const SDL_Color,
    firstcolor: c_int,
    ncolors: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_FreePalette(palette: *mut SDL_Palette);
}
extern "C" {
  pub fn SDL_MapRGB(
    format: *const SDL_PixelFormat,
    r: Uint8,
    g: Uint8,
    b: Uint8,
  ) -> Uint32;
}
extern "C" {
  pub fn SDL_MapRGBA(
    format: *const SDL_PixelFormat,
    r: Uint8,
    g: Uint8,
    b: Uint8,
    a: Uint8,
  ) -> Uint32;
}
extern "C" {
  pub fn SDL_GetRGB(
    pixel: Uint32,
    format: *const SDL_PixelFormat,
    r: *mut Uint8,
    g: *mut Uint8,
    b: *mut Uint8,
  );
}
extern "C" {
  pub fn SDL_GetRGBA(
    pixel: Uint32,
    format: *const SDL_PixelFormat,
    r: *mut Uint8,
    g: *mut Uint8,
    b: *mut Uint8,
    a: *mut Uint8,
  );
}
extern "C" {
  pub fn SDL_CalculateGammaRamp(gamma: f32, ramp: *mut Uint16);
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_Point {
  pub x: c_int,
  pub y: c_int,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_FPoint {
  pub x: f32,
  pub y: f32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_Rect {
  pub x: c_int,
  pub y: c_int,
  pub w: c_int,
  pub h: c_int,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_FRect {
  pub x: f32,
  pub y: f32,
  pub w: f32,
  pub h: f32,
}
extern "C" {
  pub fn SDL_HasIntersection(
    A: *const SDL_Rect,
    B: *const SDL_Rect,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_IntersectRect(
    A: *const SDL_Rect,
    B: *const SDL_Rect,
    result: *mut SDL_Rect,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_UnionRect(
    A: *const SDL_Rect,
    B: *const SDL_Rect,
    result: *mut SDL_Rect,
  );
}
extern "C" {
  pub fn SDL_EnclosePoints(
    points: *const SDL_Point,
    count: c_int,
    clip: *const SDL_Rect,
    result: *mut SDL_Rect,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_IntersectRectAndLine(
    rect: *const SDL_Rect,
    X1: *mut c_int,
    Y1: *mut c_int,
    X2: *mut c_int,
    Y2: *mut c_int,
  ) -> SDL_bool;
}
pub const SDL_BLENDMODE_NONE: SDL_BlendMode = 0;
pub const SDL_BLENDMODE_BLEND: SDL_BlendMode = 1;
pub const SDL_BLENDMODE_ADD: SDL_BlendMode = 2;
pub const SDL_BLENDMODE_MOD: SDL_BlendMode = 4;
pub const SDL_BLENDMODE_MUL: SDL_BlendMode = 8;
pub const SDL_BLENDMODE_INVALID: SDL_BlendMode = 2147483647;
pub type SDL_BlendMode = u32;
pub const SDL_BLENDOPERATION_ADD: SDL_BlendOperation = 1;
pub const SDL_BLENDOPERATION_SUBTRACT: SDL_BlendOperation = 2;
pub const SDL_BLENDOPERATION_REV_SUBTRACT: SDL_BlendOperation = 3;
pub const SDL_BLENDOPERATION_MINIMUM: SDL_BlendOperation = 4;
pub const SDL_BLENDOPERATION_MAXIMUM: SDL_BlendOperation = 5;
pub type SDL_BlendOperation = u32;
pub const SDL_BLENDFACTOR_ZERO: SDL_BlendFactor = 1;
pub const SDL_BLENDFACTOR_ONE: SDL_BlendFactor = 2;
pub const SDL_BLENDFACTOR_SRC_COLOR: SDL_BlendFactor = 3;
pub const SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR: SDL_BlendFactor = 4;
pub const SDL_BLENDFACTOR_SRC_ALPHA: SDL_BlendFactor = 5;
pub const SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA: SDL_BlendFactor = 6;
pub const SDL_BLENDFACTOR_DST_COLOR: SDL_BlendFactor = 7;
pub const SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR: SDL_BlendFactor = 8;
pub const SDL_BLENDFACTOR_DST_ALPHA: SDL_BlendFactor = 9;
pub const SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA: SDL_BlendFactor = 10;
pub type SDL_BlendFactor = u32;
extern "C" {
  pub fn SDL_ComposeCustomBlendMode(
    srcColorFactor: SDL_BlendFactor,
    dstColorFactor: SDL_BlendFactor,
    colorOperation: SDL_BlendOperation,
    srcAlphaFactor: SDL_BlendFactor,
    dstAlphaFactor: SDL_BlendFactor,
    alphaOperation: SDL_BlendOperation,
  ) -> SDL_BlendMode;
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_Surface {
  pub flags: Uint32,
  pub format: *mut SDL_PixelFormat,
  pub w: c_int,
  pub h: c_int,
  pub pitch: c_int,
  pub pixels: *mut c_void,
  pub userdata: *mut c_void,
  pub locked: c_int,
  pub lock_data: *mut c_void,
  pub clip_rect: SDL_Rect,
  pub map: *mut SDL_BlitMap,
  pub refcount: c_int,
}
impl Default for SDL_Surface {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
pub type SDL_blit = Option<
  unsafe extern "C" fn(
    src: *mut SDL_Surface,
    srcrect: *mut SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *mut SDL_Rect,
  ) -> c_int,
>;
pub const SDL_YUV_CONVERSION_JPEG: SDL_YUV_CONVERSION_MODE = 0;
pub const SDL_YUV_CONVERSION_BT601: SDL_YUV_CONVERSION_MODE = 1;
pub const SDL_YUV_CONVERSION_BT709: SDL_YUV_CONVERSION_MODE = 2;
pub const SDL_YUV_CONVERSION_AUTOMATIC: SDL_YUV_CONVERSION_MODE = 3;
pub type SDL_YUV_CONVERSION_MODE = u32;
extern "C" {
  pub fn SDL_CreateRGBSurface(
    flags: Uint32,
    width: c_int,
    height: c_int,
    depth: c_int,
    Rmask: Uint32,
    Gmask: Uint32,
    Bmask: Uint32,
    Amask: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_CreateRGBSurfaceWithFormat(
    flags: Uint32,
    width: c_int,
    height: c_int,
    depth: c_int,
    format: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_CreateRGBSurfaceFrom(
    pixels: *mut c_void,
    width: c_int,
    height: c_int,
    depth: c_int,
    pitch: c_int,
    Rmask: Uint32,
    Gmask: Uint32,
    Bmask: Uint32,
    Amask: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_CreateRGBSurfaceWithFormatFrom(
    pixels: *mut c_void,
    width: c_int,
    height: c_int,
    depth: c_int,
    pitch: c_int,
    format: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_FreeSurface(surface: *mut SDL_Surface);
}
extern "C" {
  pub fn SDL_SetSurfacePalette(
    surface: *mut SDL_Surface,
    palette: *mut SDL_Palette,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LockSurface(surface: *mut SDL_Surface) -> c_int;
}
extern "C" {
  pub fn SDL_UnlockSurface(surface: *mut SDL_Surface);
}
extern "C" {
  pub fn SDL_LoadBMP_RW(
    src: *mut SDL_RWops,
    freesrc: c_int,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_SaveBMP_RW(
    surface: *mut SDL_Surface,
    dst: *mut SDL_RWops,
    freedst: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetSurfaceRLE(surface: *mut SDL_Surface, flag: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_SetColorKey(
    surface: *mut SDL_Surface,
    flag: c_int,
    key: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HasColorKey(surface: *mut SDL_Surface) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetColorKey(surface: *mut SDL_Surface, key: *mut Uint32) -> c_int;
}
extern "C" {
  pub fn SDL_SetSurfaceColorMod(
    surface: *mut SDL_Surface,
    r: Uint8,
    g: Uint8,
    b: Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetSurfaceColorMod(
    surface: *mut SDL_Surface,
    r: *mut Uint8,
    g: *mut Uint8,
    b: *mut Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetSurfaceAlphaMod(
    surface: *mut SDL_Surface,
    alpha: Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetSurfaceAlphaMod(
    surface: *mut SDL_Surface,
    alpha: *mut Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetSurfaceBlendMode(
    surface: *mut SDL_Surface,
    blendMode: SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetSurfaceBlendMode(
    surface: *mut SDL_Surface,
    blendMode: *mut SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetClipRect(
    surface: *mut SDL_Surface,
    rect: *const SDL_Rect,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetClipRect(surface: *mut SDL_Surface, rect: *mut SDL_Rect);
}
extern "C" {
  pub fn SDL_DuplicateSurface(surface: *mut SDL_Surface) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_ConvertSurface(
    src: *mut SDL_Surface,
    fmt: *const SDL_PixelFormat,
    flags: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_ConvertSurfaceFormat(
    src: *mut SDL_Surface,
    pixel_format: Uint32,
    flags: Uint32,
  ) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_ConvertPixels(
    width: c_int,
    height: c_int,
    src_format: Uint32,
    src: *const c_void,
    src_pitch: c_int,
    dst_format: Uint32,
    dst: *mut c_void,
    dst_pitch: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_FillRect(
    dst: *mut SDL_Surface,
    rect: *const SDL_Rect,
    color: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_FillRects(
    dst: *mut SDL_Surface,
    rects: *const SDL_Rect,
    count: c_int,
    color: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_UpperBlit(
    src: *mut SDL_Surface,
    srcrect: *const SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LowerBlit(
    src: *mut SDL_Surface,
    srcrect: *mut SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SoftStretch(
    src: *mut SDL_Surface,
    srcrect: *const SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_UpperBlitScaled(
    src: *mut SDL_Surface,
    srcrect: *const SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LowerBlitScaled(
    src: *mut SDL_Surface,
    srcrect: *mut SDL_Rect,
    dst: *mut SDL_Surface,
    dstrect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetYUVConversionMode(mode: SDL_YUV_CONVERSION_MODE);
}
extern "C" {
  pub fn SDL_GetYUVConversionMode() -> SDL_YUV_CONVERSION_MODE;
}
extern "C" {
  pub fn SDL_GetYUVConversionModeForResolution(
    width: c_int,
    height: c_int,
  ) -> SDL_YUV_CONVERSION_MODE;
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_DisplayMode {
  pub format: Uint32,
  pub w: c_int,
  pub h: c_int,
  pub refresh_rate: c_int,
  pub driverdata: *mut c_void,
}
impl Default for SDL_DisplayMode {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_Window {
  _unused: [u8; 0],
}
pub const SDL_WINDOW_FULLSCREEN: SDL_WindowFlags = 1;
pub const SDL_WINDOW_OPENGL: SDL_WindowFlags = 2;
pub const SDL_WINDOW_SHOWN: SDL_WindowFlags = 4;
pub const SDL_WINDOW_HIDDEN: SDL_WindowFlags = 8;
pub const SDL_WINDOW_BORDERLESS: SDL_WindowFlags = 16;
pub const SDL_WINDOW_RESIZABLE: SDL_WindowFlags = 32;
pub const SDL_WINDOW_MINIMIZED: SDL_WindowFlags = 64;
pub const SDL_WINDOW_MAXIMIZED: SDL_WindowFlags = 128;
pub const SDL_WINDOW_INPUT_GRABBED: SDL_WindowFlags = 256;
pub const SDL_WINDOW_INPUT_FOCUS: SDL_WindowFlags = 512;
pub const SDL_WINDOW_MOUSE_FOCUS: SDL_WindowFlags = 1024;
pub const SDL_WINDOW_FULLSCREEN_DESKTOP: SDL_WindowFlags = 4097;
pub const SDL_WINDOW_FOREIGN: SDL_WindowFlags = 2048;
pub const SDL_WINDOW_ALLOW_HIGHDPI: SDL_WindowFlags = 8192;
pub const SDL_WINDOW_MOUSE_CAPTURE: SDL_WindowFlags = 16384;
pub const SDL_WINDOW_ALWAYS_ON_TOP: SDL_WindowFlags = 32768;
pub const SDL_WINDOW_SKIP_TASKBAR: SDL_WindowFlags = 65536;
pub const SDL_WINDOW_UTILITY: SDL_WindowFlags = 131072;
pub const SDL_WINDOW_TOOLTIP: SDL_WindowFlags = 262144;
pub const SDL_WINDOW_POPUP_MENU: SDL_WindowFlags = 524288;
pub const SDL_WINDOW_VULKAN: SDL_WindowFlags = 268435456;
pub type SDL_WindowFlags = u32;
pub const SDL_WINDOWEVENT_NONE: SDL_WindowEventID = 0;
pub const SDL_WINDOWEVENT_SHOWN: SDL_WindowEventID = 1;
pub const SDL_WINDOWEVENT_HIDDEN: SDL_WindowEventID = 2;
pub const SDL_WINDOWEVENT_EXPOSED: SDL_WindowEventID = 3;
pub const SDL_WINDOWEVENT_MOVED: SDL_WindowEventID = 4;
pub const SDL_WINDOWEVENT_RESIZED: SDL_WindowEventID = 5;
pub const SDL_WINDOWEVENT_SIZE_CHANGED: SDL_WindowEventID = 6;
pub const SDL_WINDOWEVENT_MINIMIZED: SDL_WindowEventID = 7;
pub const SDL_WINDOWEVENT_MAXIMIZED: SDL_WindowEventID = 8;
pub const SDL_WINDOWEVENT_RESTORED: SDL_WindowEventID = 9;
pub const SDL_WINDOWEVENT_ENTER: SDL_WindowEventID = 10;
pub const SDL_WINDOWEVENT_LEAVE: SDL_WindowEventID = 11;
pub const SDL_WINDOWEVENT_FOCUS_GAINED: SDL_WindowEventID = 12;
pub const SDL_WINDOWEVENT_FOCUS_LOST: SDL_WindowEventID = 13;
pub const SDL_WINDOWEVENT_CLOSE: SDL_WindowEventID = 14;
pub const SDL_WINDOWEVENT_TAKE_FOCUS: SDL_WindowEventID = 15;
pub const SDL_WINDOWEVENT_HIT_TEST: SDL_WindowEventID = 16;
pub type SDL_WindowEventID = u32;
pub const SDL_DISPLAYEVENT_NONE: SDL_DisplayEventID = 0;
pub const SDL_DISPLAYEVENT_ORIENTATION: SDL_DisplayEventID = 1;
pub type SDL_DisplayEventID = u32;
pub const SDL_ORIENTATION_UNKNOWN: SDL_DisplayOrientation = 0;
pub const SDL_ORIENTATION_LANDSCAPE: SDL_DisplayOrientation = 1;
pub const SDL_ORIENTATION_LANDSCAPE_FLIPPED: SDL_DisplayOrientation = 2;
pub const SDL_ORIENTATION_PORTRAIT: SDL_DisplayOrientation = 3;
pub const SDL_ORIENTATION_PORTRAIT_FLIPPED: SDL_DisplayOrientation = 4;
pub type SDL_DisplayOrientation = u32;
pub type SDL_GLContext = *mut c_void;
pub const SDL_GL_RED_SIZE: SDL_GLattr = 0;
pub const SDL_GL_GREEN_SIZE: SDL_GLattr = 1;
pub const SDL_GL_BLUE_SIZE: SDL_GLattr = 2;
pub const SDL_GL_ALPHA_SIZE: SDL_GLattr = 3;
pub const SDL_GL_BUFFER_SIZE: SDL_GLattr = 4;
pub const SDL_GL_DOUBLEBUFFER: SDL_GLattr = 5;
pub const SDL_GL_DEPTH_SIZE: SDL_GLattr = 6;
pub const SDL_GL_STENCIL_SIZE: SDL_GLattr = 7;
pub const SDL_GL_ACCUM_RED_SIZE: SDL_GLattr = 8;
pub const SDL_GL_ACCUM_GREEN_SIZE: SDL_GLattr = 9;
pub const SDL_GL_ACCUM_BLUE_SIZE: SDL_GLattr = 10;
pub const SDL_GL_ACCUM_ALPHA_SIZE: SDL_GLattr = 11;
pub const SDL_GL_STEREO: SDL_GLattr = 12;
pub const SDL_GL_MULTISAMPLEBUFFERS: SDL_GLattr = 13;
pub const SDL_GL_MULTISAMPLESAMPLES: SDL_GLattr = 14;
pub const SDL_GL_ACCELERATED_VISUAL: SDL_GLattr = 15;
pub const SDL_GL_RETAINED_BACKING: SDL_GLattr = 16;
pub const SDL_GL_CONTEXT_MAJOR_VERSION: SDL_GLattr = 17;
pub const SDL_GL_CONTEXT_MINOR_VERSION: SDL_GLattr = 18;
pub const SDL_GL_CONTEXT_EGL: SDL_GLattr = 19;
pub const SDL_GL_CONTEXT_FLAGS: SDL_GLattr = 20;
pub const SDL_GL_CONTEXT_PROFILE_MASK: SDL_GLattr = 21;
pub const SDL_GL_SHARE_WITH_CURRENT_CONTEXT: SDL_GLattr = 22;
pub const SDL_GL_FRAMEBUFFER_SRGB_CAPABLE: SDL_GLattr = 23;
pub const SDL_GL_CONTEXT_RELEASE_BEHAVIOR: SDL_GLattr = 24;
pub const SDL_GL_CONTEXT_RESET_NOTIFICATION: SDL_GLattr = 25;
pub const SDL_GL_CONTEXT_NO_ERROR: SDL_GLattr = 26;
pub type SDL_GLattr = u32;
pub const SDL_GL_CONTEXT_PROFILE_CORE: SDL_GLprofile = 1;
pub const SDL_GL_CONTEXT_PROFILE_COMPATIBILITY: SDL_GLprofile = 2;
pub const SDL_GL_CONTEXT_PROFILE_ES: SDL_GLprofile = 4;
pub type SDL_GLprofile = u32;
pub const SDL_GL_CONTEXT_DEBUG_FLAG: SDL_GLcontextFlag = 1;
pub const SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG: SDL_GLcontextFlag = 2;
pub const SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG: SDL_GLcontextFlag = 4;
pub const SDL_GL_CONTEXT_RESET_ISOLATION_FLAG: SDL_GLcontextFlag = 8;
pub type SDL_GLcontextFlag = u32;
pub const SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE: SDL_GLcontextReleaseFlag = 0;
pub const SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH: SDL_GLcontextReleaseFlag = 1;
pub type SDL_GLcontextReleaseFlag = u32;
pub const SDL_GL_CONTEXT_RESET_NO_NOTIFICATION: SDL_GLContextResetNotification =
  0;
pub const SDL_GL_CONTEXT_RESET_LOSE_CONTEXT: SDL_GLContextResetNotification = 1;
pub type SDL_GLContextResetNotification = u32;
extern "C" {
  pub fn SDL_GetNumVideoDrivers() -> c_int;
}
extern "C" {
  pub fn SDL_GetVideoDriver(index: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_VideoInit(driver_name: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_VideoQuit();
}
extern "C" {
  pub fn SDL_GetCurrentVideoDriver() -> *const c_char;
}
extern "C" {
  pub fn SDL_GetNumVideoDisplays() -> c_int;
}
extern "C" {
  pub fn SDL_GetDisplayName(displayIndex: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_GetDisplayBounds(
    displayIndex: c_int,
    rect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetDisplayUsableBounds(
    displayIndex: c_int,
    rect: *mut SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetDisplayDPI(
    displayIndex: c_int,
    ddpi: *mut f32,
    hdpi: *mut f32,
    vdpi: *mut f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetDisplayOrientation(
    displayIndex: c_int,
  ) -> SDL_DisplayOrientation;
}
extern "C" {
  pub fn SDL_GetNumDisplayModes(displayIndex: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GetDisplayMode(
    displayIndex: c_int,
    modeIndex: c_int,
    mode: *mut SDL_DisplayMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetDesktopDisplayMode(
    displayIndex: c_int,
    mode: *mut SDL_DisplayMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetCurrentDisplayMode(
    displayIndex: c_int,
    mode: *mut SDL_DisplayMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetClosestDisplayMode(
    displayIndex: c_int,
    mode: *const SDL_DisplayMode,
    closest: *mut SDL_DisplayMode,
  ) -> *mut SDL_DisplayMode;
}
extern "C" {
  pub fn SDL_GetWindowDisplayIndex(window: *mut SDL_Window) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowDisplayMode(
    window: *mut SDL_Window,
    mode: *const SDL_DisplayMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowDisplayMode(
    window: *mut SDL_Window,
    mode: *mut SDL_DisplayMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowPixelFormat(window: *mut SDL_Window) -> Uint32;
}
extern "C" {
  pub fn SDL_CreateWindow(
    title: *const c_char,
    x: c_int,
    y: c_int,
    w: c_int,
    h: c_int,
    flags: Uint32,
  ) -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_CreateWindowFrom(data: *const c_void) -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_GetWindowID(window: *mut SDL_Window) -> Uint32;
}
extern "C" {
  pub fn SDL_GetWindowFromID(id: Uint32) -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_GetWindowFlags(window: *mut SDL_Window) -> Uint32;
}
extern "C" {
  pub fn SDL_SetWindowTitle(window: *mut SDL_Window, title: *const c_char);
}
extern "C" {
  pub fn SDL_GetWindowTitle(window: *mut SDL_Window) -> *const c_char;
}
extern "C" {
  pub fn SDL_SetWindowIcon(window: *mut SDL_Window, icon: *mut SDL_Surface);
}
extern "C" {
  pub fn SDL_SetWindowData(
    window: *mut SDL_Window,
    name: *const c_char,
    userdata: *mut c_void,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_GetWindowData(
    window: *mut SDL_Window,
    name: *const c_char,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_SetWindowPosition(window: *mut SDL_Window, x: c_int, y: c_int);
}
extern "C" {
  pub fn SDL_GetWindowPosition(
    window: *mut SDL_Window,
    x: *mut c_int,
    y: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_SetWindowSize(window: *mut SDL_Window, w: c_int, h: c_int);
}
extern "C" {
  pub fn SDL_GetWindowSize(
    window: *mut SDL_Window,
    w: *mut c_int,
    h: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_GetWindowBordersSize(
    window: *mut SDL_Window,
    top: *mut c_int,
    left: *mut c_int,
    bottom: *mut c_int,
    right: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowMinimumSize(
    window: *mut SDL_Window,
    min_w: c_int,
    min_h: c_int,
  );
}
extern "C" {
  pub fn SDL_GetWindowMinimumSize(
    window: *mut SDL_Window,
    w: *mut c_int,
    h: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_SetWindowMaximumSize(
    window: *mut SDL_Window,
    max_w: c_int,
    max_h: c_int,
  );
}
extern "C" {
  pub fn SDL_GetWindowMaximumSize(
    window: *mut SDL_Window,
    w: *mut c_int,
    h: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_SetWindowBordered(window: *mut SDL_Window, bordered: SDL_bool);
}
extern "C" {
  pub fn SDL_SetWindowResizable(window: *mut SDL_Window, resizable: SDL_bool);
}
extern "C" {
  pub fn SDL_ShowWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_HideWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_RaiseWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_MaximizeWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_MinimizeWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_RestoreWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_SetWindowFullscreen(
    window: *mut SDL_Window,
    flags: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowSurface(window: *mut SDL_Window) -> *mut SDL_Surface;
}
extern "C" {
  pub fn SDL_UpdateWindowSurface(window: *mut SDL_Window) -> c_int;
}
extern "C" {
  pub fn SDL_UpdateWindowSurfaceRects(
    window: *mut SDL_Window,
    rects: *const SDL_Rect,
    numrects: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowGrab(window: *mut SDL_Window, grabbed: SDL_bool);
}
extern "C" {
  pub fn SDL_GetWindowGrab(window: *mut SDL_Window) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetGrabbedWindow() -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_SetWindowBrightness(
    window: *mut SDL_Window,
    brightness: f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowBrightness(window: *mut SDL_Window) -> f32;
}
extern "C" {
  pub fn SDL_SetWindowOpacity(window: *mut SDL_Window, opacity: f32) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowOpacity(
    window: *mut SDL_Window,
    out_opacity: *mut f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowModalFor(
    modal_window: *mut SDL_Window,
    parent_window: *mut SDL_Window,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowInputFocus(window: *mut SDL_Window) -> c_int;
}
extern "C" {
  pub fn SDL_SetWindowGammaRamp(
    window: *mut SDL_Window,
    red: *const Uint16,
    green: *const Uint16,
    blue: *const Uint16,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetWindowGammaRamp(
    window: *mut SDL_Window,
    red: *mut Uint16,
    green: *mut Uint16,
    blue: *mut Uint16,
  ) -> c_int;
}
pub const SDL_HITTEST_NORMAL: SDL_HitTestResult = 0;
pub const SDL_HITTEST_DRAGGABLE: SDL_HitTestResult = 1;
pub const SDL_HITTEST_RESIZE_TOPLEFT: SDL_HitTestResult = 2;
pub const SDL_HITTEST_RESIZE_TOP: SDL_HitTestResult = 3;
pub const SDL_HITTEST_RESIZE_TOPRIGHT: SDL_HitTestResult = 4;
pub const SDL_HITTEST_RESIZE_RIGHT: SDL_HitTestResult = 5;
pub const SDL_HITTEST_RESIZE_BOTTOMRIGHT: SDL_HitTestResult = 6;
pub const SDL_HITTEST_RESIZE_BOTTOM: SDL_HitTestResult = 7;
pub const SDL_HITTEST_RESIZE_BOTTOMLEFT: SDL_HitTestResult = 8;
pub const SDL_HITTEST_RESIZE_LEFT: SDL_HitTestResult = 9;
pub type SDL_HitTestResult = u32;
pub type SDL_HitTest = Option<
  unsafe extern "C" fn(
    win: *mut SDL_Window,
    area: *const SDL_Point,
    data: *mut c_void,
  ) -> SDL_HitTestResult,
>;
extern "C" {
  pub fn SDL_SetWindowHitTest(
    window: *mut SDL_Window,
    callback: SDL_HitTest,
    callback_data: *mut c_void,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_DestroyWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_IsScreenSaverEnabled() -> SDL_bool;
}
extern "C" {
  pub fn SDL_EnableScreenSaver();
}
extern "C" {
  pub fn SDL_DisableScreenSaver();
}
extern "C" {
  pub fn SDL_GL_LoadLibrary(path: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_GL_GetProcAddress(proc_: *const c_char) -> *mut c_void;
}
extern "C" {
  pub fn SDL_GL_UnloadLibrary();
}
extern "C" {
  pub fn SDL_GL_ExtensionSupported(extension: *const c_char) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GL_ResetAttributes();
}
extern "C" {
  pub fn SDL_GL_SetAttribute(attr: SDL_GLattr, value: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GL_GetAttribute(attr: SDL_GLattr, value: *mut c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GL_CreateContext(window: *mut SDL_Window) -> SDL_GLContext;
}
extern "C" {
  pub fn SDL_GL_MakeCurrent(
    window: *mut SDL_Window,
    context: SDL_GLContext,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GL_GetCurrentWindow() -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_GL_GetCurrentContext() -> SDL_GLContext;
}
extern "C" {
  pub fn SDL_GL_GetDrawableSize(
    window: *mut SDL_Window,
    w: *mut c_int,
    h: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_GL_SetSwapInterval(interval: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GL_GetSwapInterval() -> c_int;
}
extern "C" {
  pub fn SDL_GL_SwapWindow(window: *mut SDL_Window);
}
extern "C" {
  pub fn SDL_GL_DeleteContext(context: SDL_GLContext);
}
pub const SDL_SCANCODE_UNKNOWN: SDL_Scancode = 0;
pub const SDL_SCANCODE_A: SDL_Scancode = 4;
pub const SDL_SCANCODE_B: SDL_Scancode = 5;
pub const SDL_SCANCODE_C: SDL_Scancode = 6;
pub const SDL_SCANCODE_D: SDL_Scancode = 7;
pub const SDL_SCANCODE_E: SDL_Scancode = 8;
pub const SDL_SCANCODE_F: SDL_Scancode = 9;
pub const SDL_SCANCODE_G: SDL_Scancode = 10;
pub const SDL_SCANCODE_H: SDL_Scancode = 11;
pub const SDL_SCANCODE_I: SDL_Scancode = 12;
pub const SDL_SCANCODE_J: SDL_Scancode = 13;
pub const SDL_SCANCODE_K: SDL_Scancode = 14;
pub const SDL_SCANCODE_L: SDL_Scancode = 15;
pub const SDL_SCANCODE_M: SDL_Scancode = 16;
pub const SDL_SCANCODE_N: SDL_Scancode = 17;
pub const SDL_SCANCODE_O: SDL_Scancode = 18;
pub const SDL_SCANCODE_P: SDL_Scancode = 19;
pub const SDL_SCANCODE_Q: SDL_Scancode = 20;
pub const SDL_SCANCODE_R: SDL_Scancode = 21;
pub const SDL_SCANCODE_S: SDL_Scancode = 22;
pub const SDL_SCANCODE_T: SDL_Scancode = 23;
pub const SDL_SCANCODE_U: SDL_Scancode = 24;
pub const SDL_SCANCODE_V: SDL_Scancode = 25;
pub const SDL_SCANCODE_W: SDL_Scancode = 26;
pub const SDL_SCANCODE_X: SDL_Scancode = 27;
pub const SDL_SCANCODE_Y: SDL_Scancode = 28;
pub const SDL_SCANCODE_Z: SDL_Scancode = 29;
pub const SDL_SCANCODE_1: SDL_Scancode = 30;
pub const SDL_SCANCODE_2: SDL_Scancode = 31;
pub const SDL_SCANCODE_3: SDL_Scancode = 32;
pub const SDL_SCANCODE_4: SDL_Scancode = 33;
pub const SDL_SCANCODE_5: SDL_Scancode = 34;
pub const SDL_SCANCODE_6: SDL_Scancode = 35;
pub const SDL_SCANCODE_7: SDL_Scancode = 36;
pub const SDL_SCANCODE_8: SDL_Scancode = 37;
pub const SDL_SCANCODE_9: SDL_Scancode = 38;
pub const SDL_SCANCODE_0: SDL_Scancode = 39;
pub const SDL_SCANCODE_RETURN: SDL_Scancode = 40;
pub const SDL_SCANCODE_ESCAPE: SDL_Scancode = 41;
pub const SDL_SCANCODE_BACKSPACE: SDL_Scancode = 42;
pub const SDL_SCANCODE_TAB: SDL_Scancode = 43;
pub const SDL_SCANCODE_SPACE: SDL_Scancode = 44;
pub const SDL_SCANCODE_MINUS: SDL_Scancode = 45;
pub const SDL_SCANCODE_EQUALS: SDL_Scancode = 46;
pub const SDL_SCANCODE_LEFTBRACKET: SDL_Scancode = 47;
pub const SDL_SCANCODE_RIGHTBRACKET: SDL_Scancode = 48;
pub const SDL_SCANCODE_BACKSLASH: SDL_Scancode = 49;
pub const SDL_SCANCODE_NONUSHASH: SDL_Scancode = 50;
pub const SDL_SCANCODE_SEMICOLON: SDL_Scancode = 51;
pub const SDL_SCANCODE_APOSTROPHE: SDL_Scancode = 52;
pub const SDL_SCANCODE_GRAVE: SDL_Scancode = 53;
pub const SDL_SCANCODE_COMMA: SDL_Scancode = 54;
pub const SDL_SCANCODE_PERIOD: SDL_Scancode = 55;
pub const SDL_SCANCODE_SLASH: SDL_Scancode = 56;
pub const SDL_SCANCODE_CAPSLOCK: SDL_Scancode = 57;
pub const SDL_SCANCODE_F1: SDL_Scancode = 58;
pub const SDL_SCANCODE_F2: SDL_Scancode = 59;
pub const SDL_SCANCODE_F3: SDL_Scancode = 60;
pub const SDL_SCANCODE_F4: SDL_Scancode = 61;
pub const SDL_SCANCODE_F5: SDL_Scancode = 62;
pub const SDL_SCANCODE_F6: SDL_Scancode = 63;
pub const SDL_SCANCODE_F7: SDL_Scancode = 64;
pub const SDL_SCANCODE_F8: SDL_Scancode = 65;
pub const SDL_SCANCODE_F9: SDL_Scancode = 66;
pub const SDL_SCANCODE_F10: SDL_Scancode = 67;
pub const SDL_SCANCODE_F11: SDL_Scancode = 68;
pub const SDL_SCANCODE_F12: SDL_Scancode = 69;
pub const SDL_SCANCODE_PRINTSCREEN: SDL_Scancode = 70;
pub const SDL_SCANCODE_SCROLLLOCK: SDL_Scancode = 71;
pub const SDL_SCANCODE_PAUSE: SDL_Scancode = 72;
pub const SDL_SCANCODE_INSERT: SDL_Scancode = 73;
pub const SDL_SCANCODE_HOME: SDL_Scancode = 74;
pub const SDL_SCANCODE_PAGEUP: SDL_Scancode = 75;
pub const SDL_SCANCODE_DELETE: SDL_Scancode = 76;
pub const SDL_SCANCODE_END: SDL_Scancode = 77;
pub const SDL_SCANCODE_PAGEDOWN: SDL_Scancode = 78;
pub const SDL_SCANCODE_RIGHT: SDL_Scancode = 79;
pub const SDL_SCANCODE_LEFT: SDL_Scancode = 80;
pub const SDL_SCANCODE_DOWN: SDL_Scancode = 81;
pub const SDL_SCANCODE_UP: SDL_Scancode = 82;
pub const SDL_SCANCODE_NUMLOCKCLEAR: SDL_Scancode = 83;
pub const SDL_SCANCODE_KP_DIVIDE: SDL_Scancode = 84;
pub const SDL_SCANCODE_KP_MULTIPLY: SDL_Scancode = 85;
pub const SDL_SCANCODE_KP_MINUS: SDL_Scancode = 86;
pub const SDL_SCANCODE_KP_PLUS: SDL_Scancode = 87;
pub const SDL_SCANCODE_KP_ENTER: SDL_Scancode = 88;
pub const SDL_SCANCODE_KP_1: SDL_Scancode = 89;
pub const SDL_SCANCODE_KP_2: SDL_Scancode = 90;
pub const SDL_SCANCODE_KP_3: SDL_Scancode = 91;
pub const SDL_SCANCODE_KP_4: SDL_Scancode = 92;
pub const SDL_SCANCODE_KP_5: SDL_Scancode = 93;
pub const SDL_SCANCODE_KP_6: SDL_Scancode = 94;
pub const SDL_SCANCODE_KP_7: SDL_Scancode = 95;
pub const SDL_SCANCODE_KP_8: SDL_Scancode = 96;
pub const SDL_SCANCODE_KP_9: SDL_Scancode = 97;
pub const SDL_SCANCODE_KP_0: SDL_Scancode = 98;
pub const SDL_SCANCODE_KP_PERIOD: SDL_Scancode = 99;
pub const SDL_SCANCODE_NONUSBACKSLASH: SDL_Scancode = 100;
pub const SDL_SCANCODE_APPLICATION: SDL_Scancode = 101;
pub const SDL_SCANCODE_POWER: SDL_Scancode = 102;
pub const SDL_SCANCODE_KP_EQUALS: SDL_Scancode = 103;
pub const SDL_SCANCODE_F13: SDL_Scancode = 104;
pub const SDL_SCANCODE_F14: SDL_Scancode = 105;
pub const SDL_SCANCODE_F15: SDL_Scancode = 106;
pub const SDL_SCANCODE_F16: SDL_Scancode = 107;
pub const SDL_SCANCODE_F17: SDL_Scancode = 108;
pub const SDL_SCANCODE_F18: SDL_Scancode = 109;
pub const SDL_SCANCODE_F19: SDL_Scancode = 110;
pub const SDL_SCANCODE_F20: SDL_Scancode = 111;
pub const SDL_SCANCODE_F21: SDL_Scancode = 112;
pub const SDL_SCANCODE_F22: SDL_Scancode = 113;
pub const SDL_SCANCODE_F23: SDL_Scancode = 114;
pub const SDL_SCANCODE_F24: SDL_Scancode = 115;
pub const SDL_SCANCODE_EXECUTE: SDL_Scancode = 116;
pub const SDL_SCANCODE_HELP: SDL_Scancode = 117;
pub const SDL_SCANCODE_MENU: SDL_Scancode = 118;
pub const SDL_SCANCODE_SELECT: SDL_Scancode = 119;
pub const SDL_SCANCODE_STOP: SDL_Scancode = 120;
pub const SDL_SCANCODE_AGAIN: SDL_Scancode = 121;
pub const SDL_SCANCODE_UNDO: SDL_Scancode = 122;
pub const SDL_SCANCODE_CUT: SDL_Scancode = 123;
pub const SDL_SCANCODE_COPY: SDL_Scancode = 124;
pub const SDL_SCANCODE_PASTE: SDL_Scancode = 125;
pub const SDL_SCANCODE_FIND: SDL_Scancode = 126;
pub const SDL_SCANCODE_MUTE: SDL_Scancode = 127;
pub const SDL_SCANCODE_VOLUMEUP: SDL_Scancode = 128;
pub const SDL_SCANCODE_VOLUMEDOWN: SDL_Scancode = 129;
pub const SDL_SCANCODE_KP_COMMA: SDL_Scancode = 133;
pub const SDL_SCANCODE_KP_EQUALSAS400: SDL_Scancode = 134;
pub const SDL_SCANCODE_INTERNATIONAL1: SDL_Scancode = 135;
pub const SDL_SCANCODE_INTERNATIONAL2: SDL_Scancode = 136;
pub const SDL_SCANCODE_INTERNATIONAL3: SDL_Scancode = 137;
pub const SDL_SCANCODE_INTERNATIONAL4: SDL_Scancode = 138;
pub const SDL_SCANCODE_INTERNATIONAL5: SDL_Scancode = 139;
pub const SDL_SCANCODE_INTERNATIONAL6: SDL_Scancode = 140;
pub const SDL_SCANCODE_INTERNATIONAL7: SDL_Scancode = 141;
pub const SDL_SCANCODE_INTERNATIONAL8: SDL_Scancode = 142;
pub const SDL_SCANCODE_INTERNATIONAL9: SDL_Scancode = 143;
pub const SDL_SCANCODE_LANG1: SDL_Scancode = 144;
pub const SDL_SCANCODE_LANG2: SDL_Scancode = 145;
pub const SDL_SCANCODE_LANG3: SDL_Scancode = 146;
pub const SDL_SCANCODE_LANG4: SDL_Scancode = 147;
pub const SDL_SCANCODE_LANG5: SDL_Scancode = 148;
pub const SDL_SCANCODE_LANG6: SDL_Scancode = 149;
pub const SDL_SCANCODE_LANG7: SDL_Scancode = 150;
pub const SDL_SCANCODE_LANG8: SDL_Scancode = 151;
pub const SDL_SCANCODE_LANG9: SDL_Scancode = 152;
pub const SDL_SCANCODE_ALTERASE: SDL_Scancode = 153;
pub const SDL_SCANCODE_SYSREQ: SDL_Scancode = 154;
pub const SDL_SCANCODE_CANCEL: SDL_Scancode = 155;
pub const SDL_SCANCODE_CLEAR: SDL_Scancode = 156;
pub const SDL_SCANCODE_PRIOR: SDL_Scancode = 157;
pub const SDL_SCANCODE_RETURN2: SDL_Scancode = 158;
pub const SDL_SCANCODE_SEPARATOR: SDL_Scancode = 159;
pub const SDL_SCANCODE_OUT: SDL_Scancode = 160;
pub const SDL_SCANCODE_OPER: SDL_Scancode = 161;
pub const SDL_SCANCODE_CLEARAGAIN: SDL_Scancode = 162;
pub const SDL_SCANCODE_CRSEL: SDL_Scancode = 163;
pub const SDL_SCANCODE_EXSEL: SDL_Scancode = 164;
pub const SDL_SCANCODE_KP_00: SDL_Scancode = 176;
pub const SDL_SCANCODE_KP_000: SDL_Scancode = 177;
pub const SDL_SCANCODE_THOUSANDSSEPARATOR: SDL_Scancode = 178;
pub const SDL_SCANCODE_DECIMALSEPARATOR: SDL_Scancode = 179;
pub const SDL_SCANCODE_CURRENCYUNIT: SDL_Scancode = 180;
pub const SDL_SCANCODE_CURRENCYSUBUNIT: SDL_Scancode = 181;
pub const SDL_SCANCODE_KP_LEFTPAREN: SDL_Scancode = 182;
pub const SDL_SCANCODE_KP_RIGHTPAREN: SDL_Scancode = 183;
pub const SDL_SCANCODE_KP_LEFTBRACE: SDL_Scancode = 184;
pub const SDL_SCANCODE_KP_RIGHTBRACE: SDL_Scancode = 185;
pub const SDL_SCANCODE_KP_TAB: SDL_Scancode = 186;
pub const SDL_SCANCODE_KP_BACKSPACE: SDL_Scancode = 187;
pub const SDL_SCANCODE_KP_A: SDL_Scancode = 188;
pub const SDL_SCANCODE_KP_B: SDL_Scancode = 189;
pub const SDL_SCANCODE_KP_C: SDL_Scancode = 190;
pub const SDL_SCANCODE_KP_D: SDL_Scancode = 191;
pub const SDL_SCANCODE_KP_E: SDL_Scancode = 192;
pub const SDL_SCANCODE_KP_F: SDL_Scancode = 193;
pub const SDL_SCANCODE_KP_XOR: SDL_Scancode = 194;
pub const SDL_SCANCODE_KP_POWER: SDL_Scancode = 195;
pub const SDL_SCANCODE_KP_PERCENT: SDL_Scancode = 196;
pub const SDL_SCANCODE_KP_LESS: SDL_Scancode = 197;
pub const SDL_SCANCODE_KP_GREATER: SDL_Scancode = 198;
pub const SDL_SCANCODE_KP_AMPERSAND: SDL_Scancode = 199;
pub const SDL_SCANCODE_KP_DBLAMPERSAND: SDL_Scancode = 200;
pub const SDL_SCANCODE_KP_VERTICALBAR: SDL_Scancode = 201;
pub const SDL_SCANCODE_KP_DBLVERTICALBAR: SDL_Scancode = 202;
pub const SDL_SCANCODE_KP_COLON: SDL_Scancode = 203;
pub const SDL_SCANCODE_KP_HASH: SDL_Scancode = 204;
pub const SDL_SCANCODE_KP_SPACE: SDL_Scancode = 205;
pub const SDL_SCANCODE_KP_AT: SDL_Scancode = 206;
pub const SDL_SCANCODE_KP_EXCLAM: SDL_Scancode = 207;
pub const SDL_SCANCODE_KP_MEMSTORE: SDL_Scancode = 208;
pub const SDL_SCANCODE_KP_MEMRECALL: SDL_Scancode = 209;
pub const SDL_SCANCODE_KP_MEMCLEAR: SDL_Scancode = 210;
pub const SDL_SCANCODE_KP_MEMADD: SDL_Scancode = 211;
pub const SDL_SCANCODE_KP_MEMSUBTRACT: SDL_Scancode = 212;
pub const SDL_SCANCODE_KP_MEMMULTIPLY: SDL_Scancode = 213;
pub const SDL_SCANCODE_KP_MEMDIVIDE: SDL_Scancode = 214;
pub const SDL_SCANCODE_KP_PLUSMINUS: SDL_Scancode = 215;
pub const SDL_SCANCODE_KP_CLEAR: SDL_Scancode = 216;
pub const SDL_SCANCODE_KP_CLEARENTRY: SDL_Scancode = 217;
pub const SDL_SCANCODE_KP_BINARY: SDL_Scancode = 218;
pub const SDL_SCANCODE_KP_OCTAL: SDL_Scancode = 219;
pub const SDL_SCANCODE_KP_DECIMAL: SDL_Scancode = 220;
pub const SDL_SCANCODE_KP_HEXADECIMAL: SDL_Scancode = 221;
pub const SDL_SCANCODE_LCTRL: SDL_Scancode = 224;
pub const SDL_SCANCODE_LSHIFT: SDL_Scancode = 225;
pub const SDL_SCANCODE_LALT: SDL_Scancode = 226;
pub const SDL_SCANCODE_LGUI: SDL_Scancode = 227;
pub const SDL_SCANCODE_RCTRL: SDL_Scancode = 228;
pub const SDL_SCANCODE_RSHIFT: SDL_Scancode = 229;
pub const SDL_SCANCODE_RALT: SDL_Scancode = 230;
pub const SDL_SCANCODE_RGUI: SDL_Scancode = 231;
pub const SDL_SCANCODE_MODE: SDL_Scancode = 257;
pub const SDL_SCANCODE_AUDIONEXT: SDL_Scancode = 258;
pub const SDL_SCANCODE_AUDIOPREV: SDL_Scancode = 259;
pub const SDL_SCANCODE_AUDIOSTOP: SDL_Scancode = 260;
pub const SDL_SCANCODE_AUDIOPLAY: SDL_Scancode = 261;
pub const SDL_SCANCODE_AUDIOMUTE: SDL_Scancode = 262;
pub const SDL_SCANCODE_MEDIASELECT: SDL_Scancode = 263;
pub const SDL_SCANCODE_WWW: SDL_Scancode = 264;
pub const SDL_SCANCODE_MAIL: SDL_Scancode = 265;
pub const SDL_SCANCODE_CALCULATOR: SDL_Scancode = 266;
pub const SDL_SCANCODE_COMPUTER: SDL_Scancode = 267;
pub const SDL_SCANCODE_AC_SEARCH: SDL_Scancode = 268;
pub const SDL_SCANCODE_AC_HOME: SDL_Scancode = 269;
pub const SDL_SCANCODE_AC_BACK: SDL_Scancode = 270;
pub const SDL_SCANCODE_AC_FORWARD: SDL_Scancode = 271;
pub const SDL_SCANCODE_AC_STOP: SDL_Scancode = 272;
pub const SDL_SCANCODE_AC_REFRESH: SDL_Scancode = 273;
pub const SDL_SCANCODE_AC_BOOKMARKS: SDL_Scancode = 274;
pub const SDL_SCANCODE_BRIGHTNESSDOWN: SDL_Scancode = 275;
pub const SDL_SCANCODE_BRIGHTNESSUP: SDL_Scancode = 276;
pub const SDL_SCANCODE_DISPLAYSWITCH: SDL_Scancode = 277;
pub const SDL_SCANCODE_KBDILLUMTOGGLE: SDL_Scancode = 278;
pub const SDL_SCANCODE_KBDILLUMDOWN: SDL_Scancode = 279;
pub const SDL_SCANCODE_KBDILLUMUP: SDL_Scancode = 280;
pub const SDL_SCANCODE_EJECT: SDL_Scancode = 281;
pub const SDL_SCANCODE_SLEEP: SDL_Scancode = 282;
pub const SDL_SCANCODE_APP1: SDL_Scancode = 283;
pub const SDL_SCANCODE_APP2: SDL_Scancode = 284;
pub const SDL_SCANCODE_AUDIOREWIND: SDL_Scancode = 285;
pub const SDL_SCANCODE_AUDIOFASTFORWARD: SDL_Scancode = 286;
pub const SDL_NUM_SCANCODES: SDL_Scancode = 512;
pub type SDL_Scancode = u32;
pub type SDL_Keycode = Sint32;
pub const SDLK_UNKNOWN: SDL_KeyCode = 0;
pub const SDLK_RETURN: SDL_KeyCode = 13;
pub const SDLK_ESCAPE: SDL_KeyCode = 27;
pub const SDLK_BACKSPACE: SDL_KeyCode = 8;
pub const SDLK_TAB: SDL_KeyCode = 9;
pub const SDLK_SPACE: SDL_KeyCode = 32;
pub const SDLK_EXCLAIM: SDL_KeyCode = 33;
pub const SDLK_QUOTEDBL: SDL_KeyCode = 34;
pub const SDLK_HASH: SDL_KeyCode = 35;
pub const SDLK_PERCENT: SDL_KeyCode = 37;
pub const SDLK_DOLLAR: SDL_KeyCode = 36;
pub const SDLK_AMPERSAND: SDL_KeyCode = 38;
pub const SDLK_QUOTE: SDL_KeyCode = 39;
pub const SDLK_LEFTPAREN: SDL_KeyCode = 40;
pub const SDLK_RIGHTPAREN: SDL_KeyCode = 41;
pub const SDLK_ASTERISK: SDL_KeyCode = 42;
pub const SDLK_PLUS: SDL_KeyCode = 43;
pub const SDLK_COMMA: SDL_KeyCode = 44;
pub const SDLK_MINUS: SDL_KeyCode = 45;
pub const SDLK_PERIOD: SDL_KeyCode = 46;
pub const SDLK_SLASH: SDL_KeyCode = 47;
pub const SDLK_0: SDL_KeyCode = 48;
pub const SDLK_1: SDL_KeyCode = 49;
pub const SDLK_2: SDL_KeyCode = 50;
pub const SDLK_3: SDL_KeyCode = 51;
pub const SDLK_4: SDL_KeyCode = 52;
pub const SDLK_5: SDL_KeyCode = 53;
pub const SDLK_6: SDL_KeyCode = 54;
pub const SDLK_7: SDL_KeyCode = 55;
pub const SDLK_8: SDL_KeyCode = 56;
pub const SDLK_9: SDL_KeyCode = 57;
pub const SDLK_COLON: SDL_KeyCode = 58;
pub const SDLK_SEMICOLON: SDL_KeyCode = 59;
pub const SDLK_LESS: SDL_KeyCode = 60;
pub const SDLK_EQUALS: SDL_KeyCode = 61;
pub const SDLK_GREATER: SDL_KeyCode = 62;
pub const SDLK_QUESTION: SDL_KeyCode = 63;
pub const SDLK_AT: SDL_KeyCode = 64;
pub const SDLK_LEFTBRACKET: SDL_KeyCode = 91;
pub const SDLK_BACKSLASH: SDL_KeyCode = 92;
pub const SDLK_RIGHTBRACKET: SDL_KeyCode = 93;
pub const SDLK_CARET: SDL_KeyCode = 94;
pub const SDLK_UNDERSCORE: SDL_KeyCode = 95;
pub const SDLK_BACKQUOTE: SDL_KeyCode = 96;
pub const SDLK_a: SDL_KeyCode = 97;
pub const SDLK_b: SDL_KeyCode = 98;
pub const SDLK_c: SDL_KeyCode = 99;
pub const SDLK_d: SDL_KeyCode = 100;
pub const SDLK_e: SDL_KeyCode = 101;
pub const SDLK_f: SDL_KeyCode = 102;
pub const SDLK_g: SDL_KeyCode = 103;
pub const SDLK_h: SDL_KeyCode = 104;
pub const SDLK_i: SDL_KeyCode = 105;
pub const SDLK_j: SDL_KeyCode = 106;
pub const SDLK_k: SDL_KeyCode = 107;
pub const SDLK_l: SDL_KeyCode = 108;
pub const SDLK_m: SDL_KeyCode = 109;
pub const SDLK_n: SDL_KeyCode = 110;
pub const SDLK_o: SDL_KeyCode = 111;
pub const SDLK_p: SDL_KeyCode = 112;
pub const SDLK_q: SDL_KeyCode = 113;
pub const SDLK_r: SDL_KeyCode = 114;
pub const SDLK_s: SDL_KeyCode = 115;
pub const SDLK_t: SDL_KeyCode = 116;
pub const SDLK_u: SDL_KeyCode = 117;
pub const SDLK_v: SDL_KeyCode = 118;
pub const SDLK_w: SDL_KeyCode = 119;
pub const SDLK_x: SDL_KeyCode = 120;
pub const SDLK_y: SDL_KeyCode = 121;
pub const SDLK_z: SDL_KeyCode = 122;
pub const SDLK_CAPSLOCK: SDL_KeyCode = 1073741881;
pub const SDLK_F1: SDL_KeyCode = 1073741882;
pub const SDLK_F2: SDL_KeyCode = 1073741883;
pub const SDLK_F3: SDL_KeyCode = 1073741884;
pub const SDLK_F4: SDL_KeyCode = 1073741885;
pub const SDLK_F5: SDL_KeyCode = 1073741886;
pub const SDLK_F6: SDL_KeyCode = 1073741887;
pub const SDLK_F7: SDL_KeyCode = 1073741888;
pub const SDLK_F8: SDL_KeyCode = 1073741889;
pub const SDLK_F9: SDL_KeyCode = 1073741890;
pub const SDLK_F10: SDL_KeyCode = 1073741891;
pub const SDLK_F11: SDL_KeyCode = 1073741892;
pub const SDLK_F12: SDL_KeyCode = 1073741893;
pub const SDLK_PRINTSCREEN: SDL_KeyCode = 1073741894;
pub const SDLK_SCROLLLOCK: SDL_KeyCode = 1073741895;
pub const SDLK_PAUSE: SDL_KeyCode = 1073741896;
pub const SDLK_INSERT: SDL_KeyCode = 1073741897;
pub const SDLK_HOME: SDL_KeyCode = 1073741898;
pub const SDLK_PAGEUP: SDL_KeyCode = 1073741899;
pub const SDLK_DELETE: SDL_KeyCode = 127;
pub const SDLK_END: SDL_KeyCode = 1073741901;
pub const SDLK_PAGEDOWN: SDL_KeyCode = 1073741902;
pub const SDLK_RIGHT: SDL_KeyCode = 1073741903;
pub const SDLK_LEFT: SDL_KeyCode = 1073741904;
pub const SDLK_DOWN: SDL_KeyCode = 1073741905;
pub const SDLK_UP: SDL_KeyCode = 1073741906;
pub const SDLK_NUMLOCKCLEAR: SDL_KeyCode = 1073741907;
pub const SDLK_KP_DIVIDE: SDL_KeyCode = 1073741908;
pub const SDLK_KP_MULTIPLY: SDL_KeyCode = 1073741909;
pub const SDLK_KP_MINUS: SDL_KeyCode = 1073741910;
pub const SDLK_KP_PLUS: SDL_KeyCode = 1073741911;
pub const SDLK_KP_ENTER: SDL_KeyCode = 1073741912;
pub const SDLK_KP_1: SDL_KeyCode = 1073741913;
pub const SDLK_KP_2: SDL_KeyCode = 1073741914;
pub const SDLK_KP_3: SDL_KeyCode = 1073741915;
pub const SDLK_KP_4: SDL_KeyCode = 1073741916;
pub const SDLK_KP_5: SDL_KeyCode = 1073741917;
pub const SDLK_KP_6: SDL_KeyCode = 1073741918;
pub const SDLK_KP_7: SDL_KeyCode = 1073741919;
pub const SDLK_KP_8: SDL_KeyCode = 1073741920;
pub const SDLK_KP_9: SDL_KeyCode = 1073741921;
pub const SDLK_KP_0: SDL_KeyCode = 1073741922;
pub const SDLK_KP_PERIOD: SDL_KeyCode = 1073741923;
pub const SDLK_APPLICATION: SDL_KeyCode = 1073741925;
pub const SDLK_POWER: SDL_KeyCode = 1073741926;
pub const SDLK_KP_EQUALS: SDL_KeyCode = 1073741927;
pub const SDLK_F13: SDL_KeyCode = 1073741928;
pub const SDLK_F14: SDL_KeyCode = 1073741929;
pub const SDLK_F15: SDL_KeyCode = 1073741930;
pub const SDLK_F16: SDL_KeyCode = 1073741931;
pub const SDLK_F17: SDL_KeyCode = 1073741932;
pub const SDLK_F18: SDL_KeyCode = 1073741933;
pub const SDLK_F19: SDL_KeyCode = 1073741934;
pub const SDLK_F20: SDL_KeyCode = 1073741935;
pub const SDLK_F21: SDL_KeyCode = 1073741936;
pub const SDLK_F22: SDL_KeyCode = 1073741937;
pub const SDLK_F23: SDL_KeyCode = 1073741938;
pub const SDLK_F24: SDL_KeyCode = 1073741939;
pub const SDLK_EXECUTE: SDL_KeyCode = 1073741940;
pub const SDLK_HELP: SDL_KeyCode = 1073741941;
pub const SDLK_MENU: SDL_KeyCode = 1073741942;
pub const SDLK_SELECT: SDL_KeyCode = 1073741943;
pub const SDLK_STOP: SDL_KeyCode = 1073741944;
pub const SDLK_AGAIN: SDL_KeyCode = 1073741945;
pub const SDLK_UNDO: SDL_KeyCode = 1073741946;
pub const SDLK_CUT: SDL_KeyCode = 1073741947;
pub const SDLK_COPY: SDL_KeyCode = 1073741948;
pub const SDLK_PASTE: SDL_KeyCode = 1073741949;
pub const SDLK_FIND: SDL_KeyCode = 1073741950;
pub const SDLK_MUTE: SDL_KeyCode = 1073741951;
pub const SDLK_VOLUMEUP: SDL_KeyCode = 1073741952;
pub const SDLK_VOLUMEDOWN: SDL_KeyCode = 1073741953;
pub const SDLK_KP_COMMA: SDL_KeyCode = 1073741957;
pub const SDLK_KP_EQUALSAS400: SDL_KeyCode = 1073741958;
pub const SDLK_ALTERASE: SDL_KeyCode = 1073741977;
pub const SDLK_SYSREQ: SDL_KeyCode = 1073741978;
pub const SDLK_CANCEL: SDL_KeyCode = 1073741979;
pub const SDLK_CLEAR: SDL_KeyCode = 1073741980;
pub const SDLK_PRIOR: SDL_KeyCode = 1073741981;
pub const SDLK_RETURN2: SDL_KeyCode = 1073741982;
pub const SDLK_SEPARATOR: SDL_KeyCode = 1073741983;
pub const SDLK_OUT: SDL_KeyCode = 1073741984;
pub const SDLK_OPER: SDL_KeyCode = 1073741985;
pub const SDLK_CLEARAGAIN: SDL_KeyCode = 1073741986;
pub const SDLK_CRSEL: SDL_KeyCode = 1073741987;
pub const SDLK_EXSEL: SDL_KeyCode = 1073741988;
pub const SDLK_KP_00: SDL_KeyCode = 1073742000;
pub const SDLK_KP_000: SDL_KeyCode = 1073742001;
pub const SDLK_THOUSANDSSEPARATOR: SDL_KeyCode = 1073742002;
pub const SDLK_DECIMALSEPARATOR: SDL_KeyCode = 1073742003;
pub const SDLK_CURRENCYUNIT: SDL_KeyCode = 1073742004;
pub const SDLK_CURRENCYSUBUNIT: SDL_KeyCode = 1073742005;
pub const SDLK_KP_LEFTPAREN: SDL_KeyCode = 1073742006;
pub const SDLK_KP_RIGHTPAREN: SDL_KeyCode = 1073742007;
pub const SDLK_KP_LEFTBRACE: SDL_KeyCode = 1073742008;
pub const SDLK_KP_RIGHTBRACE: SDL_KeyCode = 1073742009;
pub const SDLK_KP_TAB: SDL_KeyCode = 1073742010;
pub const SDLK_KP_BACKSPACE: SDL_KeyCode = 1073742011;
pub const SDLK_KP_A: SDL_KeyCode = 1073742012;
pub const SDLK_KP_B: SDL_KeyCode = 1073742013;
pub const SDLK_KP_C: SDL_KeyCode = 1073742014;
pub const SDLK_KP_D: SDL_KeyCode = 1073742015;
pub const SDLK_KP_E: SDL_KeyCode = 1073742016;
pub const SDLK_KP_F: SDL_KeyCode = 1073742017;
pub const SDLK_KP_XOR: SDL_KeyCode = 1073742018;
pub const SDLK_KP_POWER: SDL_KeyCode = 1073742019;
pub const SDLK_KP_PERCENT: SDL_KeyCode = 1073742020;
pub const SDLK_KP_LESS: SDL_KeyCode = 1073742021;
pub const SDLK_KP_GREATER: SDL_KeyCode = 1073742022;
pub const SDLK_KP_AMPERSAND: SDL_KeyCode = 1073742023;
pub const SDLK_KP_DBLAMPERSAND: SDL_KeyCode = 1073742024;
pub const SDLK_KP_VERTICALBAR: SDL_KeyCode = 1073742025;
pub const SDLK_KP_DBLVERTICALBAR: SDL_KeyCode = 1073742026;
pub const SDLK_KP_COLON: SDL_KeyCode = 1073742027;
pub const SDLK_KP_HASH: SDL_KeyCode = 1073742028;
pub const SDLK_KP_SPACE: SDL_KeyCode = 1073742029;
pub const SDLK_KP_AT: SDL_KeyCode = 1073742030;
pub const SDLK_KP_EXCLAM: SDL_KeyCode = 1073742031;
pub const SDLK_KP_MEMSTORE: SDL_KeyCode = 1073742032;
pub const SDLK_KP_MEMRECALL: SDL_KeyCode = 1073742033;
pub const SDLK_KP_MEMCLEAR: SDL_KeyCode = 1073742034;
pub const SDLK_KP_MEMADD: SDL_KeyCode = 1073742035;
pub const SDLK_KP_MEMSUBTRACT: SDL_KeyCode = 1073742036;
pub const SDLK_KP_MEMMULTIPLY: SDL_KeyCode = 1073742037;
pub const SDLK_KP_MEMDIVIDE: SDL_KeyCode = 1073742038;
pub const SDLK_KP_PLUSMINUS: SDL_KeyCode = 1073742039;
pub const SDLK_KP_CLEAR: SDL_KeyCode = 1073742040;
pub const SDLK_KP_CLEARENTRY: SDL_KeyCode = 1073742041;
pub const SDLK_KP_BINARY: SDL_KeyCode = 1073742042;
pub const SDLK_KP_OCTAL: SDL_KeyCode = 1073742043;
pub const SDLK_KP_DECIMAL: SDL_KeyCode = 1073742044;
pub const SDLK_KP_HEXADECIMAL: SDL_KeyCode = 1073742045;
pub const SDLK_LCTRL: SDL_KeyCode = 1073742048;
pub const SDLK_LSHIFT: SDL_KeyCode = 1073742049;
pub const SDLK_LALT: SDL_KeyCode = 1073742050;
pub const SDLK_LGUI: SDL_KeyCode = 1073742051;
pub const SDLK_RCTRL: SDL_KeyCode = 1073742052;
pub const SDLK_RSHIFT: SDL_KeyCode = 1073742053;
pub const SDLK_RALT: SDL_KeyCode = 1073742054;
pub const SDLK_RGUI: SDL_KeyCode = 1073742055;
pub const SDLK_MODE: SDL_KeyCode = 1073742081;
pub const SDLK_AUDIONEXT: SDL_KeyCode = 1073742082;
pub const SDLK_AUDIOPREV: SDL_KeyCode = 1073742083;
pub const SDLK_AUDIOSTOP: SDL_KeyCode = 1073742084;
pub const SDLK_AUDIOPLAY: SDL_KeyCode = 1073742085;
pub const SDLK_AUDIOMUTE: SDL_KeyCode = 1073742086;
pub const SDLK_MEDIASELECT: SDL_KeyCode = 1073742087;
pub const SDLK_WWW: SDL_KeyCode = 1073742088;
pub const SDLK_MAIL: SDL_KeyCode = 1073742089;
pub const SDLK_CALCULATOR: SDL_KeyCode = 1073742090;
pub const SDLK_COMPUTER: SDL_KeyCode = 1073742091;
pub const SDLK_AC_SEARCH: SDL_KeyCode = 1073742092;
pub const SDLK_AC_HOME: SDL_KeyCode = 1073742093;
pub const SDLK_AC_BACK: SDL_KeyCode = 1073742094;
pub const SDLK_AC_FORWARD: SDL_KeyCode = 1073742095;
pub const SDLK_AC_STOP: SDL_KeyCode = 1073742096;
pub const SDLK_AC_REFRESH: SDL_KeyCode = 1073742097;
pub const SDLK_AC_BOOKMARKS: SDL_KeyCode = 1073742098;
pub const SDLK_BRIGHTNESSDOWN: SDL_KeyCode = 1073742099;
pub const SDLK_BRIGHTNESSUP: SDL_KeyCode = 1073742100;
pub const SDLK_DISPLAYSWITCH: SDL_KeyCode = 1073742101;
pub const SDLK_KBDILLUMTOGGLE: SDL_KeyCode = 1073742102;
pub const SDLK_KBDILLUMDOWN: SDL_KeyCode = 1073742103;
pub const SDLK_KBDILLUMUP: SDL_KeyCode = 1073742104;
pub const SDLK_EJECT: SDL_KeyCode = 1073742105;
pub const SDLK_SLEEP: SDL_KeyCode = 1073742106;
pub const SDLK_APP1: SDL_KeyCode = 1073742107;
pub const SDLK_APP2: SDL_KeyCode = 1073742108;
pub const SDLK_AUDIOREWIND: SDL_KeyCode = 1073742109;
pub const SDLK_AUDIOFASTFORWARD: SDL_KeyCode = 1073742110;
pub type SDL_KeyCode = u32;
pub const KMOD_NONE: SDL_Keymod = 0;
pub const KMOD_LSHIFT: SDL_Keymod = 1;
pub const KMOD_RSHIFT: SDL_Keymod = 2;
pub const KMOD_LCTRL: SDL_Keymod = 64;
pub const KMOD_RCTRL: SDL_Keymod = 128;
pub const KMOD_LALT: SDL_Keymod = 256;
pub const KMOD_RALT: SDL_Keymod = 512;
pub const KMOD_LGUI: SDL_Keymod = 1024;
pub const KMOD_RGUI: SDL_Keymod = 2048;
pub const KMOD_NUM: SDL_Keymod = 4096;
pub const KMOD_CAPS: SDL_Keymod = 8192;
pub const KMOD_MODE: SDL_Keymod = 16384;
pub const KMOD_RESERVED: SDL_Keymod = 32768;
pub type SDL_Keymod = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_Keysym {
  pub scancode: SDL_Scancode,
  pub sym: SDL_Keycode,
  pub mod_: Uint16,
  pub unused: Uint32,
}
impl Default for SDL_Keysym {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
extern "C" {
  pub fn SDL_GetKeyboardFocus() -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_GetKeyboardState(numkeys: *mut c_int) -> *const Uint8;
}
extern "C" {
  pub fn SDL_GetModState() -> SDL_Keymod;
}
extern "C" {
  pub fn SDL_SetModState(modstate: SDL_Keymod);
}
extern "C" {
  pub fn SDL_GetKeyFromScancode(scancode: SDL_Scancode) -> SDL_Keycode;
}
extern "C" {
  pub fn SDL_GetScancodeFromKey(key: SDL_Keycode) -> SDL_Scancode;
}
extern "C" {
  pub fn SDL_GetScancodeName(scancode: SDL_Scancode) -> *const c_char;
}
extern "C" {
  pub fn SDL_GetScancodeFromName(name: *const c_char) -> SDL_Scancode;
}
extern "C" {
  pub fn SDL_GetKeyName(key: SDL_Keycode) -> *const c_char;
}
extern "C" {
  pub fn SDL_GetKeyFromName(name: *const c_char) -> SDL_Keycode;
}
extern "C" {
  pub fn SDL_StartTextInput();
}
extern "C" {
  pub fn SDL_IsTextInputActive() -> SDL_bool;
}
extern "C" {
  pub fn SDL_StopTextInput();
}
extern "C" {
  pub fn SDL_SetTextInputRect(rect: *mut SDL_Rect);
}
extern "C" {
  pub fn SDL_HasScreenKeyboardSupport() -> SDL_bool;
}
extern "C" {
  pub fn SDL_IsScreenKeyboardShown(window: *mut SDL_Window) -> SDL_bool;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_Cursor {
  _unused: [u8; 0],
}
pub const SDL_SYSTEM_CURSOR_ARROW: SDL_SystemCursor = 0;
pub const SDL_SYSTEM_CURSOR_IBEAM: SDL_SystemCursor = 1;
pub const SDL_SYSTEM_CURSOR_WAIT: SDL_SystemCursor = 2;
pub const SDL_SYSTEM_CURSOR_CROSSHAIR: SDL_SystemCursor = 3;
pub const SDL_SYSTEM_CURSOR_WAITARROW: SDL_SystemCursor = 4;
pub const SDL_SYSTEM_CURSOR_SIZENWSE: SDL_SystemCursor = 5;
pub const SDL_SYSTEM_CURSOR_SIZENESW: SDL_SystemCursor = 6;
pub const SDL_SYSTEM_CURSOR_SIZEWE: SDL_SystemCursor = 7;
pub const SDL_SYSTEM_CURSOR_SIZENS: SDL_SystemCursor = 8;
pub const SDL_SYSTEM_CURSOR_SIZEALL: SDL_SystemCursor = 9;
pub const SDL_SYSTEM_CURSOR_NO: SDL_SystemCursor = 10;
pub const SDL_SYSTEM_CURSOR_HAND: SDL_SystemCursor = 11;
pub const SDL_NUM_SYSTEM_CURSORS: SDL_SystemCursor = 12;
pub type SDL_SystemCursor = u32;
pub const SDL_MOUSEWHEEL_NORMAL: SDL_MouseWheelDirection = 0;
pub const SDL_MOUSEWHEEL_FLIPPED: SDL_MouseWheelDirection = 1;
pub type SDL_MouseWheelDirection = u32;
extern "C" {
  pub fn SDL_GetMouseFocus() -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_GetMouseState(x: *mut c_int, y: *mut c_int) -> Uint32;
}
extern "C" {
  pub fn SDL_GetGlobalMouseState(x: *mut c_int, y: *mut c_int) -> Uint32;
}
extern "C" {
  pub fn SDL_GetRelativeMouseState(x: *mut c_int, y: *mut c_int) -> Uint32;
}
extern "C" {
  pub fn SDL_WarpMouseInWindow(window: *mut SDL_Window, x: c_int, y: c_int);
}
extern "C" {
  pub fn SDL_WarpMouseGlobal(x: c_int, y: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_SetRelativeMouseMode(enabled: SDL_bool) -> c_int;
}
extern "C" {
  pub fn SDL_CaptureMouse(enabled: SDL_bool) -> c_int;
}
extern "C" {
  pub fn SDL_GetRelativeMouseMode() -> SDL_bool;
}
extern "C" {
  pub fn SDL_CreateCursor(
    data: *const Uint8,
    mask: *const Uint8,
    w: c_int,
    h: c_int,
    hot_x: c_int,
    hot_y: c_int,
  ) -> *mut SDL_Cursor;
}
extern "C" {
  pub fn SDL_CreateColorCursor(
    surface: *mut SDL_Surface,
    hot_x: c_int,
    hot_y: c_int,
  ) -> *mut SDL_Cursor;
}
extern "C" {
  pub fn SDL_CreateSystemCursor(id: SDL_SystemCursor) -> *mut SDL_Cursor;
}
extern "C" {
  pub fn SDL_SetCursor(cursor: *mut SDL_Cursor);
}
extern "C" {
  pub fn SDL_GetCursor() -> *mut SDL_Cursor;
}
extern "C" {
  pub fn SDL_GetDefaultCursor() -> *mut SDL_Cursor;
}
extern "C" {
  pub fn SDL_FreeCursor(cursor: *mut SDL_Cursor);
}
extern "C" {
  pub fn SDL_ShowCursor(toggle: c_int) -> c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_Joystick {
  _unused: [u8; 0],
}
pub type SDL_Joystick = _SDL_Joystick;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoystickGUID {
  pub data: [Uint8; 16],
}
pub type SDL_JoystickID = Sint32;
pub const SDL_JOYSTICK_TYPE_UNKNOWN: SDL_JoystickType = 0;
pub const SDL_JOYSTICK_TYPE_GAMECONTROLLER: SDL_JoystickType = 1;
pub const SDL_JOYSTICK_TYPE_WHEEL: SDL_JoystickType = 2;
pub const SDL_JOYSTICK_TYPE_ARCADE_STICK: SDL_JoystickType = 3;
pub const SDL_JOYSTICK_TYPE_FLIGHT_STICK: SDL_JoystickType = 4;
pub const SDL_JOYSTICK_TYPE_DANCE_PAD: SDL_JoystickType = 5;
pub const SDL_JOYSTICK_TYPE_GUITAR: SDL_JoystickType = 6;
pub const SDL_JOYSTICK_TYPE_DRUM_KIT: SDL_JoystickType = 7;
pub const SDL_JOYSTICK_TYPE_ARCADE_PAD: SDL_JoystickType = 8;
pub const SDL_JOYSTICK_TYPE_THROTTLE: SDL_JoystickType = 9;
pub type SDL_JoystickType = u32;
pub const SDL_JOYSTICK_POWER_UNKNOWN: SDL_JoystickPowerLevel = -1;
pub const SDL_JOYSTICK_POWER_EMPTY: SDL_JoystickPowerLevel = 0;
pub const SDL_JOYSTICK_POWER_LOW: SDL_JoystickPowerLevel = 1;
pub const SDL_JOYSTICK_POWER_MEDIUM: SDL_JoystickPowerLevel = 2;
pub const SDL_JOYSTICK_POWER_FULL: SDL_JoystickPowerLevel = 3;
pub const SDL_JOYSTICK_POWER_WIRED: SDL_JoystickPowerLevel = 4;
pub const SDL_JOYSTICK_POWER_MAX: SDL_JoystickPowerLevel = 5;
pub type SDL_JoystickPowerLevel = i32;
extern "C" {
  pub fn SDL_LockJoysticks();
}
extern "C" {
  pub fn SDL_UnlockJoysticks();
}
extern "C" {
  pub fn SDL_NumJoysticks() -> c_int;
}
extern "C" {
  pub fn SDL_JoystickNameForIndex(device_index: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_JoystickGetDevicePlayerIndex(device_index: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceGUID(device_index: c_int) -> SDL_JoystickGUID;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceVendor(device_index: c_int) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceProduct(device_index: c_int) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceProductVersion(device_index: c_int) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceType(device_index: c_int) -> SDL_JoystickType;
}
extern "C" {
  pub fn SDL_JoystickGetDeviceInstanceID(device_index: c_int)
    -> SDL_JoystickID;
}
extern "C" {
  pub fn SDL_JoystickOpen(device_index: c_int) -> *mut SDL_Joystick;
}
extern "C" {
  pub fn SDL_JoystickFromInstanceID(
    instance_id: SDL_JoystickID,
  ) -> *mut SDL_Joystick;
}
extern "C" {
  pub fn SDL_JoystickFromPlayerIndex(player_index: c_int) -> *mut SDL_Joystick;
}
extern "C" {
  pub fn SDL_JoystickName(joystick: *mut SDL_Joystick) -> *const c_char;
}
extern "C" {
  pub fn SDL_JoystickGetPlayerIndex(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickSetPlayerIndex(
    joystick: *mut SDL_Joystick,
    player_index: c_int,
  );
}
extern "C" {
  pub fn SDL_JoystickGetGUID(joystick: *mut SDL_Joystick) -> SDL_JoystickGUID;
}
extern "C" {
  pub fn SDL_JoystickGetVendor(joystick: *mut SDL_Joystick) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetProduct(joystick: *mut SDL_Joystick) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetProductVersion(joystick: *mut SDL_Joystick) -> Uint16;
}
extern "C" {
  pub fn SDL_JoystickGetType(joystick: *mut SDL_Joystick) -> SDL_JoystickType;
}
extern "C" {
  pub fn SDL_JoystickGetGUIDString(
    guid: SDL_JoystickGUID,
    pszGUID: *mut c_char,
    cbGUID: c_int,
  );
}
extern "C" {
  pub fn SDL_JoystickGetGUIDFromString(
    pchGUID: *const c_char,
  ) -> SDL_JoystickGUID;
}
extern "C" {
  pub fn SDL_JoystickGetAttached(joystick: *mut SDL_Joystick) -> SDL_bool;
}
extern "C" {
  pub fn SDL_JoystickInstanceID(joystick: *mut SDL_Joystick) -> SDL_JoystickID;
}
extern "C" {
  pub fn SDL_JoystickNumAxes(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickNumBalls(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickNumHats(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickNumButtons(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickUpdate();
}
extern "C" {
  pub fn SDL_JoystickEventState(state: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickGetAxis(
    joystick: *mut SDL_Joystick,
    axis: c_int,
  ) -> Sint16;
}
extern "C" {
  pub fn SDL_JoystickGetAxisInitialState(
    joystick: *mut SDL_Joystick,
    axis: c_int,
    state: *mut Sint16,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_JoystickGetHat(joystick: *mut SDL_Joystick, hat: c_int) -> Uint8;
}
extern "C" {
  pub fn SDL_JoystickGetBall(
    joystick: *mut SDL_Joystick,
    ball: c_int,
    dx: *mut c_int,
    dy: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickGetButton(
    joystick: *mut SDL_Joystick,
    button: c_int,
  ) -> Uint8;
}
extern "C" {
  pub fn SDL_JoystickRumble(
    joystick: *mut SDL_Joystick,
    low_frequency_rumble: Uint16,
    high_frequency_rumble: Uint16,
    duration_ms: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_JoystickClose(joystick: *mut SDL_Joystick);
}
extern "C" {
  pub fn SDL_JoystickCurrentPowerLevel(
    joystick: *mut SDL_Joystick,
  ) -> SDL_JoystickPowerLevel;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_GameController {
  _unused: [u8; 0],
}
pub type SDL_GameController = _SDL_GameController;
pub const SDL_CONTROLLER_TYPE_UNKNOWN: SDL_GameControllerType = 0;
pub const SDL_CONTROLLER_TYPE_XBOX360: SDL_GameControllerType = 1;
pub const SDL_CONTROLLER_TYPE_XBOXONE: SDL_GameControllerType = 2;
pub const SDL_CONTROLLER_TYPE_PS3: SDL_GameControllerType = 3;
pub const SDL_CONTROLLER_TYPE_PS4: SDL_GameControllerType = 4;
pub const SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO: SDL_GameControllerType = 5;
pub type SDL_GameControllerType = u32;
pub const SDL_CONTROLLER_BINDTYPE_NONE: SDL_GameControllerBindType = 0;
pub const SDL_CONTROLLER_BINDTYPE_BUTTON: SDL_GameControllerBindType = 1;
pub const SDL_CONTROLLER_BINDTYPE_AXIS: SDL_GameControllerBindType = 2;
pub const SDL_CONTROLLER_BINDTYPE_HAT: SDL_GameControllerBindType = 3;
pub type SDL_GameControllerBindType = u32;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SDL_GameControllerButtonBind {
  pub bindType: SDL_GameControllerBindType,
  pub value: SDL_GameControllerButtonBind__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_GameControllerButtonBind__bindgen_ty_1 {
  pub button: c_int,
  pub axis: c_int,
  pub hat: SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1,
  _bindgen_union_align: [u32; 2],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 {
  pub hat: c_int,
  pub hat_mask: c_int,
}
impl Default for SDL_GameControllerButtonBind__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_GameControllerButtonBind__bindgen_ty_1 {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_GameControllerButtonBind__bindgen_ty_1 {{ union }}")
  }
}
impl Default for SDL_GameControllerButtonBind {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_GameControllerButtonBind {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(
      f,
      "SDL_GameControllerButtonBind {{ bindType: {:?}, value: {:?} }}",
      self.bindType, self.value
    )
  }
}
extern "C" {
  pub fn SDL_GameControllerAddMappingsFromRW(
    rw: *mut SDL_RWops,
    freerw: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerAddMapping(mappingString: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerNumMappings() -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerMappingForIndex(mapping_index: c_int)
    -> *mut c_char;
}
extern "C" {
  pub fn SDL_GameControllerMappingForGUID(
    guid: SDL_JoystickGUID,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_GameControllerMapping(
    gamecontroller: *mut SDL_GameController,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_IsGameController(joystick_index: c_int) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GameControllerNameForIndex(joystick_index: c_int)
    -> *const c_char;
}
extern "C" {
  pub fn SDL_GameControllerTypeForIndex(
    joystick_index: c_int,
  ) -> SDL_GameControllerType;
}
extern "C" {
  pub fn SDL_GameControllerMappingForDeviceIndex(
    joystick_index: c_int,
  ) -> *mut c_char;
}
extern "C" {
  pub fn SDL_GameControllerOpen(
    joystick_index: c_int,
  ) -> *mut SDL_GameController;
}
extern "C" {
  pub fn SDL_GameControllerFromInstanceID(
    joyid: SDL_JoystickID,
  ) -> *mut SDL_GameController;
}
extern "C" {
  pub fn SDL_GameControllerFromPlayerIndex(
    player_index: c_int,
  ) -> *mut SDL_GameController;
}
extern "C" {
  pub fn SDL_GameControllerName(
    gamecontroller: *mut SDL_GameController,
  ) -> *const c_char;
}
extern "C" {
  pub fn SDL_GameControllerGetType(
    gamecontroller: *mut SDL_GameController,
  ) -> SDL_GameControllerType;
}
extern "C" {
  pub fn SDL_GameControllerGetPlayerIndex(
    gamecontroller: *mut SDL_GameController,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerSetPlayerIndex(
    gamecontroller: *mut SDL_GameController,
    player_index: c_int,
  );
}
extern "C" {
  pub fn SDL_GameControllerGetVendor(
    gamecontroller: *mut SDL_GameController,
  ) -> Uint16;
}
extern "C" {
  pub fn SDL_GameControllerGetProduct(
    gamecontroller: *mut SDL_GameController,
  ) -> Uint16;
}
extern "C" {
  pub fn SDL_GameControllerGetProductVersion(
    gamecontroller: *mut SDL_GameController,
  ) -> Uint16;
}
extern "C" {
  pub fn SDL_GameControllerGetAttached(
    gamecontroller: *mut SDL_GameController,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GameControllerGetJoystick(
    gamecontroller: *mut SDL_GameController,
  ) -> *mut SDL_Joystick;
}
extern "C" {
  pub fn SDL_GameControllerEventState(state: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerUpdate();
}
pub const SDL_CONTROLLER_AXIS_INVALID: SDL_GameControllerAxis = -1;
pub const SDL_CONTROLLER_AXIS_LEFTX: SDL_GameControllerAxis = 0;
pub const SDL_CONTROLLER_AXIS_LEFTY: SDL_GameControllerAxis = 1;
pub const SDL_CONTROLLER_AXIS_RIGHTX: SDL_GameControllerAxis = 2;
pub const SDL_CONTROLLER_AXIS_RIGHTY: SDL_GameControllerAxis = 3;
pub const SDL_CONTROLLER_AXIS_TRIGGERLEFT: SDL_GameControllerAxis = 4;
pub const SDL_CONTROLLER_AXIS_TRIGGERRIGHT: SDL_GameControllerAxis = 5;
pub const SDL_CONTROLLER_AXIS_MAX: SDL_GameControllerAxis = 6;
pub type SDL_GameControllerAxis = i32;
extern "C" {
  pub fn SDL_GameControllerGetAxisFromString(
    pchString: *const c_char,
  ) -> SDL_GameControllerAxis;
}
extern "C" {
  pub fn SDL_GameControllerGetStringForAxis(
    axis: SDL_GameControllerAxis,
  ) -> *const c_char;
}
extern "C" {
  pub fn SDL_GameControllerGetBindForAxis(
    gamecontroller: *mut SDL_GameController,
    axis: SDL_GameControllerAxis,
  ) -> SDL_GameControllerButtonBind;
}
extern "C" {
  pub fn SDL_GameControllerGetAxis(
    gamecontroller: *mut SDL_GameController,
    axis: SDL_GameControllerAxis,
  ) -> Sint16;
}
pub const SDL_CONTROLLER_BUTTON_INVALID: SDL_GameControllerButton = -1;
pub const SDL_CONTROLLER_BUTTON_A: SDL_GameControllerButton = 0;
pub const SDL_CONTROLLER_BUTTON_B: SDL_GameControllerButton = 1;
pub const SDL_CONTROLLER_BUTTON_X: SDL_GameControllerButton = 2;
pub const SDL_CONTROLLER_BUTTON_Y: SDL_GameControllerButton = 3;
pub const SDL_CONTROLLER_BUTTON_BACK: SDL_GameControllerButton = 4;
pub const SDL_CONTROLLER_BUTTON_GUIDE: SDL_GameControllerButton = 5;
pub const SDL_CONTROLLER_BUTTON_START: SDL_GameControllerButton = 6;
pub const SDL_CONTROLLER_BUTTON_LEFTSTICK: SDL_GameControllerButton = 7;
pub const SDL_CONTROLLER_BUTTON_RIGHTSTICK: SDL_GameControllerButton = 8;
pub const SDL_CONTROLLER_BUTTON_LEFTSHOULDER: SDL_GameControllerButton = 9;
pub const SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: SDL_GameControllerButton = 10;
pub const SDL_CONTROLLER_BUTTON_DPAD_UP: SDL_GameControllerButton = 11;
pub const SDL_CONTROLLER_BUTTON_DPAD_DOWN: SDL_GameControllerButton = 12;
pub const SDL_CONTROLLER_BUTTON_DPAD_LEFT: SDL_GameControllerButton = 13;
pub const SDL_CONTROLLER_BUTTON_DPAD_RIGHT: SDL_GameControllerButton = 14;
pub const SDL_CONTROLLER_BUTTON_MAX: SDL_GameControllerButton = 15;
pub type SDL_GameControllerButton = i32;
extern "C" {
  pub fn SDL_GameControllerGetButtonFromString(
    pchString: *const c_char,
  ) -> SDL_GameControllerButton;
}
extern "C" {
  pub fn SDL_GameControllerGetStringForButton(
    button: SDL_GameControllerButton,
  ) -> *const c_char;
}
extern "C" {
  pub fn SDL_GameControllerGetBindForButton(
    gamecontroller: *mut SDL_GameController,
    button: SDL_GameControllerButton,
  ) -> SDL_GameControllerButtonBind;
}
extern "C" {
  pub fn SDL_GameControllerGetButton(
    gamecontroller: *mut SDL_GameController,
    button: SDL_GameControllerButton,
  ) -> Uint8;
}
extern "C" {
  pub fn SDL_GameControllerRumble(
    gamecontroller: *mut SDL_GameController,
    low_frequency_rumble: Uint16,
    high_frequency_rumble: Uint16,
    duration_ms: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GameControllerClose(gamecontroller: *mut SDL_GameController);
}
pub type SDL_TouchID = Sint64;
pub type SDL_FingerID = Sint64;
pub const SDL_TOUCH_DEVICE_INVALID: SDL_TouchDeviceType = -1;
pub const SDL_TOUCH_DEVICE_DIRECT: SDL_TouchDeviceType = 0;
pub const SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE: SDL_TouchDeviceType = 1;
pub const SDL_TOUCH_DEVICE_INDIRECT_RELATIVE: SDL_TouchDeviceType = 2;
pub type SDL_TouchDeviceType = i32;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_Finger {
  pub id: SDL_FingerID,
  pub x: f32,
  pub y: f32,
  pub pressure: f32,
}
extern "C" {
  pub fn SDL_GetNumTouchDevices() -> c_int;
}
extern "C" {
  pub fn SDL_GetTouchDevice(index: c_int) -> SDL_TouchID;
}
extern "C" {
  pub fn SDL_GetTouchDeviceType(touchID: SDL_TouchID) -> SDL_TouchDeviceType;
}
extern "C" {
  pub fn SDL_GetNumTouchFingers(touchID: SDL_TouchID) -> c_int;
}
extern "C" {
  pub fn SDL_GetTouchFinger(
    touchID: SDL_TouchID,
    index: c_int,
  ) -> *mut SDL_Finger;
}
pub type SDL_GestureID = Sint64;
extern "C" {
  pub fn SDL_RecordGesture(touchId: SDL_TouchID) -> c_int;
}
extern "C" {
  pub fn SDL_SaveAllDollarTemplates(dst: *mut SDL_RWops) -> c_int;
}
extern "C" {
  pub fn SDL_SaveDollarTemplate(
    gestureId: SDL_GestureID,
    dst: *mut SDL_RWops,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LoadDollarTemplates(
    touchId: SDL_TouchID,
    src: *mut SDL_RWops,
  ) -> c_int;
}
pub const SDL_FIRSTEVENT: SDL_EventType = 0;
pub const SDL_QUIT: SDL_EventType = 256;
pub const SDL_APP_TERMINATING: SDL_EventType = 257;
pub const SDL_APP_LOWMEMORY: SDL_EventType = 258;
pub const SDL_APP_WILLENTERBACKGROUND: SDL_EventType = 259;
pub const SDL_APP_DIDENTERBACKGROUND: SDL_EventType = 260;
pub const SDL_APP_WILLENTERFOREGROUND: SDL_EventType = 261;
pub const SDL_APP_DIDENTERFOREGROUND: SDL_EventType = 262;
pub const SDL_DISPLAYEVENT: SDL_EventType = 336;
pub const SDL_WINDOWEVENT: SDL_EventType = 512;
pub const SDL_SYSWMEVENT: SDL_EventType = 513;
pub const SDL_KEYDOWN: SDL_EventType = 768;
pub const SDL_KEYUP: SDL_EventType = 769;
pub const SDL_TEXTEDITING: SDL_EventType = 770;
pub const SDL_TEXTINPUT: SDL_EventType = 771;
pub const SDL_KEYMAPCHANGED: SDL_EventType = 772;
pub const SDL_MOUSEMOTION: SDL_EventType = 1024;
pub const SDL_MOUSEBUTTONDOWN: SDL_EventType = 1025;
pub const SDL_MOUSEBUTTONUP: SDL_EventType = 1026;
pub const SDL_MOUSEWHEEL: SDL_EventType = 1027;
pub const SDL_JOYAXISMOTION: SDL_EventType = 1536;
pub const SDL_JOYBALLMOTION: SDL_EventType = 1537;
pub const SDL_JOYHATMOTION: SDL_EventType = 1538;
pub const SDL_JOYBUTTONDOWN: SDL_EventType = 1539;
pub const SDL_JOYBUTTONUP: SDL_EventType = 1540;
pub const SDL_JOYDEVICEADDED: SDL_EventType = 1541;
pub const SDL_JOYDEVICEREMOVED: SDL_EventType = 1542;
pub const SDL_CONTROLLERAXISMOTION: SDL_EventType = 1616;
pub const SDL_CONTROLLERBUTTONDOWN: SDL_EventType = 1617;
pub const SDL_CONTROLLERBUTTONUP: SDL_EventType = 1618;
pub const SDL_CONTROLLERDEVICEADDED: SDL_EventType = 1619;
pub const SDL_CONTROLLERDEVICEREMOVED: SDL_EventType = 1620;
pub const SDL_CONTROLLERDEVICEREMAPPED: SDL_EventType = 1621;
pub const SDL_FINGERDOWN: SDL_EventType = 1792;
pub const SDL_FINGERUP: SDL_EventType = 1793;
pub const SDL_FINGERMOTION: SDL_EventType = 1794;
pub const SDL_DOLLARGESTURE: SDL_EventType = 2048;
pub const SDL_DOLLARRECORD: SDL_EventType = 2049;
pub const SDL_MULTIGESTURE: SDL_EventType = 2050;
pub const SDL_CLIPBOARDUPDATE: SDL_EventType = 2304;
pub const SDL_DROPFILE: SDL_EventType = 4096;
pub const SDL_DROPTEXT: SDL_EventType = 4097;
pub const SDL_DROPBEGIN: SDL_EventType = 4098;
pub const SDL_DROPCOMPLETE: SDL_EventType = 4099;
pub const SDL_AUDIODEVICEADDED: SDL_EventType = 4352;
pub const SDL_AUDIODEVICEREMOVED: SDL_EventType = 4353;
pub const SDL_SENSORUPDATE: SDL_EventType = 4608;
pub const SDL_RENDER_TARGETS_RESET: SDL_EventType = 8192;
pub const SDL_RENDER_DEVICE_RESET: SDL_EventType = 8193;
pub const SDL_USEREVENT: SDL_EventType = 32768;
pub const SDL_LASTEVENT: SDL_EventType = 65535;
pub type SDL_EventType = u32;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_CommonEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_DisplayEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub display: Uint32,
  pub event: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub data1: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_WindowEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub event: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub data1: Sint32,
  pub data2: Sint32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_KeyboardEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub state: Uint8,
  pub repeat: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub keysym: SDL_Keysym,
}
impl Default for SDL_KeyboardEvent {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_TextEditingEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub text: [c_char; 32],
  pub start: Sint32,
  pub length: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_TextInputEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub text: [c_char; 32],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MouseMotionEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub which: Uint32,
  pub state: Uint32,
  pub x: Sint32,
  pub y: Sint32,
  pub xrel: Sint32,
  pub yrel: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MouseButtonEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub which: Uint32,
  pub button: Uint8,
  pub state: Uint8,
  pub clicks: Uint8,
  pub padding1: Uint8,
  pub x: Sint32,
  pub y: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MouseWheelEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub which: Uint32,
  pub x: Sint32,
  pub y: Sint32,
  pub direction: Uint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoyAxisEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub axis: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub value: Sint16,
  pub padding4: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoyBallEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub ball: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub xrel: Sint16,
  pub yrel: Sint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoyHatEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub hat: Uint8,
  pub value: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoyButtonEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub button: Uint8,
  pub state: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_JoyDeviceEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_ControllerAxisEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub axis: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
  pub value: Sint16,
  pub padding4: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_ControllerButtonEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: SDL_JoystickID,
  pub button: Uint8,
  pub state: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_ControllerDeviceEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: Sint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_AudioDeviceEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: Uint32,
  pub iscapture: Uint8,
  pub padding1: Uint8,
  pub padding2: Uint8,
  pub padding3: Uint8,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_TouchFingerEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub touchId: SDL_TouchID,
  pub fingerId: SDL_FingerID,
  pub x: f32,
  pub y: f32,
  pub dx: f32,
  pub dy: f32,
  pub pressure: f32,
  pub windowID: Uint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MultiGestureEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub touchId: SDL_TouchID,
  pub dTheta: f32,
  pub dDist: f32,
  pub x: f32,
  pub y: f32,
  pub numFingers: Uint16,
  pub padding: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_DollarGestureEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub touchId: SDL_TouchID,
  pub gestureId: SDL_GestureID,
  pub numFingers: Uint32,
  pub error: f32,
  pub x: f32,
  pub y: f32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_DropEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub file: *mut c_char,
  pub windowID: Uint32,
}
impl Default for SDL_DropEvent {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_SensorEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub which: Sint32,
  pub data: [f32; 6],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_QuitEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_OSEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_UserEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub windowID: Uint32,
  pub code: Sint32,
  pub data1: *mut c_void,
  pub data2: *mut c_void,
}
impl Default for SDL_UserEvent {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_SysWMEvent {
  pub type_: Uint32,
  pub timestamp: Uint32,
  pub msg: *mut SDL_SysWMmsg,
}
impl Default for SDL_SysWMEvent {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_Event {
  pub type_: Uint32,
  pub common: SDL_CommonEvent,
  pub display: SDL_DisplayEvent,
  pub window: SDL_WindowEvent,
  pub key: SDL_KeyboardEvent,
  pub edit: SDL_TextEditingEvent,
  pub text: SDL_TextInputEvent,
  pub motion: SDL_MouseMotionEvent,
  pub button: SDL_MouseButtonEvent,
  pub wheel: SDL_MouseWheelEvent,
  pub jaxis: SDL_JoyAxisEvent,
  pub jball: SDL_JoyBallEvent,
  pub jhat: SDL_JoyHatEvent,
  pub jbutton: SDL_JoyButtonEvent,
  pub jdevice: SDL_JoyDeviceEvent,
  pub caxis: SDL_ControllerAxisEvent,
  pub cbutton: SDL_ControllerButtonEvent,
  pub cdevice: SDL_ControllerDeviceEvent,
  pub adevice: SDL_AudioDeviceEvent,
  pub sensor: SDL_SensorEvent,
  pub quit: SDL_QuitEvent,
  pub user: SDL_UserEvent,
  pub syswm: SDL_SysWMEvent,
  pub tfinger: SDL_TouchFingerEvent,
  pub mgesture: SDL_MultiGestureEvent,
  pub dgesture: SDL_DollarGestureEvent,
  pub drop: SDL_DropEvent,
  pub padding: [Uint8; 56],
  _bindgen_union_align: [u64; 7],
}
impl Default for SDL_Event {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_Event {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_Event {{ union }}")
  }
}
pub type SDL_compile_time_assert_SDL_Event = [c_int; 1];
extern "C" {
  pub fn SDL_PumpEvents();
}
pub const SDL_ADDEVENT: SDL_eventaction = 0;
pub const SDL_PEEKEVENT: SDL_eventaction = 1;
pub const SDL_GETEVENT: SDL_eventaction = 2;
pub type SDL_eventaction = u32;
extern "C" {
  pub fn SDL_PeepEvents(
    events: *mut SDL_Event,
    numevents: c_int,
    action: SDL_eventaction,
    minType: Uint32,
    maxType: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HasEvent(type_: Uint32) -> SDL_bool;
}
extern "C" {
  pub fn SDL_HasEvents(minType: Uint32, maxType: Uint32) -> SDL_bool;
}
extern "C" {
  pub fn SDL_FlushEvent(type_: Uint32);
}
extern "C" {
  pub fn SDL_FlushEvents(minType: Uint32, maxType: Uint32);
}
extern "C" {
  pub fn SDL_PollEvent(event: *mut SDL_Event) -> c_int;
}
extern "C" {
  pub fn SDL_WaitEvent(event: *mut SDL_Event) -> c_int;
}
extern "C" {
  pub fn SDL_WaitEventTimeout(event: *mut SDL_Event, timeout: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_PushEvent(event: *mut SDL_Event) -> c_int;
}
pub type SDL_EventFilter = Option<
  unsafe extern "C" fn(userdata: *mut c_void, event: *mut SDL_Event) -> c_int,
>;
extern "C" {
  pub fn SDL_SetEventFilter(filter: SDL_EventFilter, userdata: *mut c_void);
}
extern "C" {
  pub fn SDL_GetEventFilter(
    filter: *mut SDL_EventFilter,
    userdata: *mut *mut c_void,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_AddEventWatch(filter: SDL_EventFilter, userdata: *mut c_void);
}
extern "C" {
  pub fn SDL_DelEventWatch(filter: SDL_EventFilter, userdata: *mut c_void);
}
extern "C" {
  pub fn SDL_FilterEvents(filter: SDL_EventFilter, userdata: *mut c_void);
}
extern "C" {
  pub fn SDL_EventState(type_: Uint32, state: c_int) -> Uint8;
}
extern "C" {
  pub fn SDL_RegisterEvents(numevents: c_int) -> Uint32;
}
extern "C" {
  pub fn SDL_GetBasePath() -> *mut c_char;
}
extern "C" {
  pub fn SDL_GetPrefPath(org: *const c_char, app: *const c_char)
    -> *mut c_char;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_Haptic {
  _unused: [u8; 0],
}
pub type SDL_Haptic = _SDL_Haptic;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticDirection {
  pub type_: Uint8,
  pub dir: [Sint32; 3],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticConstant {
  pub type_: Uint16,
  pub direction: SDL_HapticDirection,
  pub length: Uint32,
  pub delay: Uint16,
  pub button: Uint16,
  pub interval: Uint16,
  pub level: Sint16,
  pub attack_length: Uint16,
  pub attack_level: Uint16,
  pub fade_length: Uint16,
  pub fade_level: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticPeriodic {
  pub type_: Uint16,
  pub direction: SDL_HapticDirection,
  pub length: Uint32,
  pub delay: Uint16,
  pub button: Uint16,
  pub interval: Uint16,
  pub period: Uint16,
  pub magnitude: Sint16,
  pub offset: Sint16,
  pub phase: Uint16,
  pub attack_length: Uint16,
  pub attack_level: Uint16,
  pub fade_length: Uint16,
  pub fade_level: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticCondition {
  pub type_: Uint16,
  pub direction: SDL_HapticDirection,
  pub length: Uint32,
  pub delay: Uint16,
  pub button: Uint16,
  pub interval: Uint16,
  pub right_sat: [Uint16; 3],
  pub left_sat: [Uint16; 3],
  pub right_coeff: [Sint16; 3],
  pub left_coeff: [Sint16; 3],
  pub deadband: [Uint16; 3],
  pub center: [Sint16; 3],
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticRamp {
  pub type_: Uint16,
  pub direction: SDL_HapticDirection,
  pub length: Uint32,
  pub delay: Uint16,
  pub button: Uint16,
  pub interval: Uint16,
  pub start: Sint16,
  pub end: Sint16,
  pub attack_length: Uint16,
  pub attack_level: Uint16,
  pub fade_length: Uint16,
  pub fade_level: Uint16,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_HapticLeftRight {
  pub type_: Uint16,
  pub length: Uint32,
  pub large_magnitude: Uint16,
  pub small_magnitude: Uint16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_HapticCustom {
  pub type_: Uint16,
  pub direction: SDL_HapticDirection,
  pub length: Uint32,
  pub delay: Uint16,
  pub button: Uint16,
  pub interval: Uint16,
  pub channels: Uint8,
  pub period: Uint16,
  pub samples: Uint16,
  pub data: *mut Uint16,
  pub attack_length: Uint16,
  pub attack_level: Uint16,
  pub fade_length: Uint16,
  pub fade_level: Uint16,
}
impl Default for SDL_HapticCustom {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_HapticEffect {
  pub type_: Uint16,
  pub constant: SDL_HapticConstant,
  pub periodic: SDL_HapticPeriodic,
  pub condition: SDL_HapticCondition,
  pub ramp: SDL_HapticRamp,
  pub leftright: SDL_HapticLeftRight,
  pub custom: SDL_HapticCustom,
  _bindgen_union_align: [u64; 9],
}
impl Default for SDL_HapticEffect {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_HapticEffect {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_HapticEffect {{ union }}")
  }
}
extern "C" {
  pub fn SDL_NumHaptics() -> c_int;
}
extern "C" {
  pub fn SDL_HapticName(device_index: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_HapticOpen(device_index: c_int) -> *mut SDL_Haptic;
}
extern "C" {
  pub fn SDL_HapticOpened(device_index: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_HapticIndex(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_MouseIsHaptic() -> c_int;
}
extern "C" {
  pub fn SDL_HapticOpenFromMouse() -> *mut SDL_Haptic;
}
extern "C" {
  pub fn SDL_JoystickIsHaptic(joystick: *mut SDL_Joystick) -> c_int;
}
extern "C" {
  pub fn SDL_HapticOpenFromJoystick(
    joystick: *mut SDL_Joystick,
  ) -> *mut SDL_Haptic;
}
extern "C" {
  pub fn SDL_HapticClose(haptic: *mut SDL_Haptic);
}
extern "C" {
  pub fn SDL_HapticNumEffects(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticNumEffectsPlaying(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticQuery(haptic: *mut SDL_Haptic) -> c_uint;
}
extern "C" {
  pub fn SDL_HapticNumAxes(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticEffectSupported(
    haptic: *mut SDL_Haptic,
    effect: *mut SDL_HapticEffect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticNewEffect(
    haptic: *mut SDL_Haptic,
    effect: *mut SDL_HapticEffect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticUpdateEffect(
    haptic: *mut SDL_Haptic,
    effect: c_int,
    data: *mut SDL_HapticEffect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticRunEffect(
    haptic: *mut SDL_Haptic,
    effect: c_int,
    iterations: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticStopEffect(haptic: *mut SDL_Haptic, effect: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_HapticDestroyEffect(haptic: *mut SDL_Haptic, effect: c_int);
}
extern "C" {
  pub fn SDL_HapticGetEffectStatus(
    haptic: *mut SDL_Haptic,
    effect: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticSetGain(haptic: *mut SDL_Haptic, gain: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_HapticSetAutocenter(
    haptic: *mut SDL_Haptic,
    autocenter: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticPause(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticUnpause(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticStopAll(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticRumbleSupported(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticRumbleInit(haptic: *mut SDL_Haptic) -> c_int;
}
extern "C" {
  pub fn SDL_HapticRumblePlay(
    haptic: *mut SDL_Haptic,
    strength: f32,
    length: Uint32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_HapticRumbleStop(haptic: *mut SDL_Haptic) -> c_int;
}
pub const SDL_HINT_DEFAULT: SDL_HintPriority = 0;
pub const SDL_HINT_NORMAL: SDL_HintPriority = 1;
pub const SDL_HINT_OVERRIDE: SDL_HintPriority = 2;
pub type SDL_HintPriority = u32;
extern "C" {
  pub fn SDL_SetHintWithPriority(
    name: *const c_char,
    value: *const c_char,
    priority: SDL_HintPriority,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_SetHint(name: *const c_char, value: *const c_char) -> SDL_bool;
}
extern "C" {
  pub fn SDL_GetHint(name: *const c_char) -> *const c_char;
}
extern "C" {
  pub fn SDL_GetHintBoolean(
    name: *const c_char,
    default_value: SDL_bool,
  ) -> SDL_bool;
}
pub type SDL_HintCallback = Option<
  unsafe extern "C" fn(
    userdata: *mut c_void,
    name: *const c_char,
    oldValue: *const c_char,
    newValue: *const c_char,
  ),
>;
extern "C" {
  pub fn SDL_AddHintCallback(
    name: *const c_char,
    callback: SDL_HintCallback,
    userdata: *mut c_void,
  );
}
extern "C" {
  pub fn SDL_DelHintCallback(
    name: *const c_char,
    callback: SDL_HintCallback,
    userdata: *mut c_void,
  );
}
extern "C" {
  pub fn SDL_ClearHints();
}
extern "C" {
  pub fn SDL_LoadObject(sofile: *const c_char) -> *mut c_void;
}
extern "C" {
  pub fn SDL_LoadFunction(
    handle: *mut c_void,
    name: *const c_char,
  ) -> *mut c_void;
}
extern "C" {
  pub fn SDL_UnloadObject(handle: *mut c_void);
}
pub const SDL_LOG_CATEGORY_APPLICATION: SDL_LogCategory = 0;
pub const SDL_LOG_CATEGORY_ERROR: SDL_LogCategory = 1;
pub const SDL_LOG_CATEGORY_ASSERT: SDL_LogCategory = 2;
pub const SDL_LOG_CATEGORY_SYSTEM: SDL_LogCategory = 3;
pub const SDL_LOG_CATEGORY_AUDIO: SDL_LogCategory = 4;
pub const SDL_LOG_CATEGORY_VIDEO: SDL_LogCategory = 5;
pub const SDL_LOG_CATEGORY_RENDER: SDL_LogCategory = 6;
pub const SDL_LOG_CATEGORY_INPUT: SDL_LogCategory = 7;
pub const SDL_LOG_CATEGORY_TEST: SDL_LogCategory = 8;
pub const SDL_LOG_CATEGORY_RESERVED1: SDL_LogCategory = 9;
pub const SDL_LOG_CATEGORY_RESERVED2: SDL_LogCategory = 10;
pub const SDL_LOG_CATEGORY_RESERVED3: SDL_LogCategory = 11;
pub const SDL_LOG_CATEGORY_RESERVED4: SDL_LogCategory = 12;
pub const SDL_LOG_CATEGORY_RESERVED5: SDL_LogCategory = 13;
pub const SDL_LOG_CATEGORY_RESERVED6: SDL_LogCategory = 14;
pub const SDL_LOG_CATEGORY_RESERVED7: SDL_LogCategory = 15;
pub const SDL_LOG_CATEGORY_RESERVED8: SDL_LogCategory = 16;
pub const SDL_LOG_CATEGORY_RESERVED9: SDL_LogCategory = 17;
pub const SDL_LOG_CATEGORY_RESERVED10: SDL_LogCategory = 18;
pub const SDL_LOG_CATEGORY_CUSTOM: SDL_LogCategory = 19;
pub type SDL_LogCategory = u32;
pub const SDL_LOG_PRIORITY_VERBOSE: SDL_LogPriority = 1;
pub const SDL_LOG_PRIORITY_DEBUG: SDL_LogPriority = 2;
pub const SDL_LOG_PRIORITY_INFO: SDL_LogPriority = 3;
pub const SDL_LOG_PRIORITY_WARN: SDL_LogPriority = 4;
pub const SDL_LOG_PRIORITY_ERROR: SDL_LogPriority = 5;
pub const SDL_LOG_PRIORITY_CRITICAL: SDL_LogPriority = 6;
pub const SDL_NUM_LOG_PRIORITIES: SDL_LogPriority = 7;
pub type SDL_LogPriority = u32;
extern "C" {
  pub fn SDL_LogSetAllPriority(priority: SDL_LogPriority);
}
extern "C" {
  pub fn SDL_LogSetPriority(category: c_int, priority: SDL_LogPriority);
}
extern "C" {
  pub fn SDL_LogGetPriority(category: c_int) -> SDL_LogPriority;
}
extern "C" {
  pub fn SDL_LogResetPriorities();
}
extern "C" {
  pub fn SDL_Log(fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogVerbose(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogDebug(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogInfo(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogWarn(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogError(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogCritical(category: c_int, fmt: *const c_char, ...);
}
extern "C" {
  pub fn SDL_LogMessage(
    category: c_int,
    priority: SDL_LogPriority,
    fmt: *const c_char,
    ...
  );
}
extern "C" {
  pub fn SDL_LogMessageV(
    category: c_int,
    priority: SDL_LogPriority,
    fmt: *const c_char,
    ap: *mut __va_list_tag,
  );
}
pub type SDL_LogOutputFunction = Option<
  unsafe extern "C" fn(
    userdata: *mut c_void,
    category: c_int,
    priority: SDL_LogPriority,
    message: *const c_char,
  ),
>;
extern "C" {
  pub fn SDL_LogGetOutputFunction(
    callback: *mut SDL_LogOutputFunction,
    userdata: *mut *mut c_void,
  );
}
extern "C" {
  pub fn SDL_LogSetOutputFunction(
    callback: SDL_LogOutputFunction,
    userdata: *mut c_void,
  );
}
pub const SDL_MESSAGEBOX_ERROR: SDL_MessageBoxFlags = 16;
pub const SDL_MESSAGEBOX_WARNING: SDL_MessageBoxFlags = 32;
pub const SDL_MESSAGEBOX_INFORMATION: SDL_MessageBoxFlags = 64;
pub const SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT: SDL_MessageBoxFlags = 128;
pub const SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT: SDL_MessageBoxFlags = 256;
pub type SDL_MessageBoxFlags = u32;
pub const SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT: SDL_MessageBoxButtonFlags =
  1;
pub const SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT: SDL_MessageBoxButtonFlags =
  2;
pub type SDL_MessageBoxButtonFlags = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_MessageBoxButtonData {
  pub flags: Uint32,
  pub buttonid: c_int,
  pub text: *const c_char,
}
impl Default for SDL_MessageBoxButtonData {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MessageBoxColor {
  pub r: Uint8,
  pub g: Uint8,
  pub b: Uint8,
}
pub const SDL_MESSAGEBOX_COLOR_BACKGROUND: SDL_MessageBoxColorType = 0;
pub const SDL_MESSAGEBOX_COLOR_TEXT: SDL_MessageBoxColorType = 1;
pub const SDL_MESSAGEBOX_COLOR_BUTTON_BORDER: SDL_MessageBoxColorType = 2;
pub const SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND: SDL_MessageBoxColorType = 3;
pub const SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED: SDL_MessageBoxColorType = 4;
pub const SDL_MESSAGEBOX_COLOR_MAX: SDL_MessageBoxColorType = 5;
pub type SDL_MessageBoxColorType = u32;
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_MessageBoxColorScheme {
  pub colors: [SDL_MessageBoxColor; 5],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_MessageBoxData {
  pub flags: Uint32,
  pub window: *mut SDL_Window,
  pub title: *const c_char,
  pub message: *const c_char,
  pub numbuttons: c_int,
  pub buttons: *const SDL_MessageBoxButtonData,
  pub colorScheme: *const SDL_MessageBoxColorScheme,
}
impl Default for SDL_MessageBoxData {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
extern "C" {
  pub fn SDL_ShowMessageBox(
    messageboxdata: *const SDL_MessageBoxData,
    buttonid: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_ShowSimpleMessageBox(
    flags: Uint32,
    title: *const c_char,
    message: *const c_char,
    window: *mut SDL_Window,
  ) -> c_int;
}
pub type SDL_MetalView = *mut c_void;
extern "C" {
  pub fn SDL_Metal_CreateView(window: *mut SDL_Window) -> SDL_MetalView;
}
extern "C" {
  pub fn SDL_Metal_DestroyView(view: SDL_MetalView);
}
pub const SDL_POWERSTATE_UNKNOWN: SDL_PowerState = 0;
pub const SDL_POWERSTATE_ON_BATTERY: SDL_PowerState = 1;
pub const SDL_POWERSTATE_NO_BATTERY: SDL_PowerState = 2;
pub const SDL_POWERSTATE_CHARGING: SDL_PowerState = 3;
pub const SDL_POWERSTATE_CHARGED: SDL_PowerState = 4;
pub type SDL_PowerState = u32;
extern "C" {
  pub fn SDL_GetPowerInfo(secs: *mut c_int, pct: *mut c_int) -> SDL_PowerState;
}
pub const SDL_RENDERER_SOFTWARE: SDL_RendererFlags = 1;
pub const SDL_RENDERER_ACCELERATED: SDL_RendererFlags = 2;
pub const SDL_RENDERER_PRESENTVSYNC: SDL_RendererFlags = 4;
pub const SDL_RENDERER_TARGETTEXTURE: SDL_RendererFlags = 8;
pub type SDL_RendererFlags = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_RendererInfo {
  pub name: *const c_char,
  pub flags: Uint32,
  pub num_texture_formats: Uint32,
  pub texture_formats: [Uint32; 16],
  pub max_texture_width: c_int,
  pub max_texture_height: c_int,
}
impl Default for SDL_RendererInfo {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
pub const SDL_ScaleModeNearest: SDL_ScaleMode = 0;
pub const SDL_ScaleModeLinear: SDL_ScaleMode = 1;
pub const SDL_ScaleModeBest: SDL_ScaleMode = 2;
pub type SDL_ScaleMode = u32;
pub const SDL_TEXTUREACCESS_STATIC: SDL_TextureAccess = 0;
pub const SDL_TEXTUREACCESS_STREAMING: SDL_TextureAccess = 1;
pub const SDL_TEXTUREACCESS_TARGET: SDL_TextureAccess = 2;
pub type SDL_TextureAccess = u32;
pub const SDL_TEXTUREMODULATE_NONE: SDL_TextureModulate = 0;
pub const SDL_TEXTUREMODULATE_COLOR: SDL_TextureModulate = 1;
pub const SDL_TEXTUREMODULATE_ALPHA: SDL_TextureModulate = 2;
pub type SDL_TextureModulate = u32;
pub const SDL_FLIP_NONE: SDL_RendererFlip = 0;
pub const SDL_FLIP_HORIZONTAL: SDL_RendererFlip = 1;
pub const SDL_FLIP_VERTICAL: SDL_RendererFlip = 2;
pub type SDL_RendererFlip = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_Renderer {
  _unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SDL_Texture {
  _unused: [u8; 0],
}
extern "C" {
  pub fn SDL_GetNumRenderDrivers() -> c_int;
}
extern "C" {
  pub fn SDL_GetRenderDriverInfo(
    index: c_int,
    info: *mut SDL_RendererInfo,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_CreateWindowAndRenderer(
    width: c_int,
    height: c_int,
    window_flags: Uint32,
    window: *mut *mut SDL_Window,
    renderer: *mut *mut SDL_Renderer,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_CreateRenderer(
    window: *mut SDL_Window,
    index: c_int,
    flags: Uint32,
  ) -> *mut SDL_Renderer;
}
extern "C" {
  pub fn SDL_CreateSoftwareRenderer(
    surface: *mut SDL_Surface,
  ) -> *mut SDL_Renderer;
}
extern "C" {
  pub fn SDL_GetRenderer(window: *mut SDL_Window) -> *mut SDL_Renderer;
}
extern "C" {
  pub fn SDL_GetRendererInfo(
    renderer: *mut SDL_Renderer,
    info: *mut SDL_RendererInfo,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetRendererOutputSize(
    renderer: *mut SDL_Renderer,
    w: *mut c_int,
    h: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_CreateTexture(
    renderer: *mut SDL_Renderer,
    format: Uint32,
    access: c_int,
    w: c_int,
    h: c_int,
  ) -> *mut SDL_Texture;
}
extern "C" {
  pub fn SDL_CreateTextureFromSurface(
    renderer: *mut SDL_Renderer,
    surface: *mut SDL_Surface,
  ) -> *mut SDL_Texture;
}
extern "C" {
  pub fn SDL_QueryTexture(
    texture: *mut SDL_Texture,
    format: *mut Uint32,
    access: *mut c_int,
    w: *mut c_int,
    h: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetTextureColorMod(
    texture: *mut SDL_Texture,
    r: Uint8,
    g: Uint8,
    b: Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetTextureColorMod(
    texture: *mut SDL_Texture,
    r: *mut Uint8,
    g: *mut Uint8,
    b: *mut Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetTextureAlphaMod(
    texture: *mut SDL_Texture,
    alpha: Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetTextureAlphaMod(
    texture: *mut SDL_Texture,
    alpha: *mut Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetTextureBlendMode(
    texture: *mut SDL_Texture,
    blendMode: SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetTextureBlendMode(
    texture: *mut SDL_Texture,
    blendMode: *mut SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetTextureScaleMode(
    texture: *mut SDL_Texture,
    scaleMode: SDL_ScaleMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetTextureScaleMode(
    texture: *mut SDL_Texture,
    scaleMode: *mut SDL_ScaleMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_UpdateTexture(
    texture: *mut SDL_Texture,
    rect: *const SDL_Rect,
    pixels: *const c_void,
    pitch: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_UpdateYUVTexture(
    texture: *mut SDL_Texture,
    rect: *const SDL_Rect,
    Yplane: *const Uint8,
    Ypitch: c_int,
    Uplane: *const Uint8,
    Upitch: c_int,
    Vplane: *const Uint8,
    Vpitch: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LockTexture(
    texture: *mut SDL_Texture,
    rect: *const SDL_Rect,
    pixels: *mut *mut c_void,
    pitch: *mut c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_LockTextureToSurface(
    texture: *mut SDL_Texture,
    rect: *const SDL_Rect,
    surface: *mut *mut SDL_Surface,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_UnlockTexture(texture: *mut SDL_Texture);
}
extern "C" {
  pub fn SDL_RenderTargetSupported(renderer: *mut SDL_Renderer) -> SDL_bool;
}
extern "C" {
  pub fn SDL_SetRenderTarget(
    renderer: *mut SDL_Renderer,
    texture: *mut SDL_Texture,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetRenderTarget(renderer: *mut SDL_Renderer) -> *mut SDL_Texture;
}
extern "C" {
  pub fn SDL_RenderSetLogicalSize(
    renderer: *mut SDL_Renderer,
    w: c_int,
    h: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetLogicalSize(
    renderer: *mut SDL_Renderer,
    w: *mut c_int,
    h: *mut c_int,
  );
}
extern "C" {
  pub fn SDL_RenderSetIntegerScale(
    renderer: *mut SDL_Renderer,
    enable: SDL_bool,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetIntegerScale(renderer: *mut SDL_Renderer) -> SDL_bool;
}
extern "C" {
  pub fn SDL_RenderSetViewport(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetViewport(
    renderer: *mut SDL_Renderer,
    rect: *mut SDL_Rect,
  );
}
extern "C" {
  pub fn SDL_RenderSetClipRect(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetClipRect(
    renderer: *mut SDL_Renderer,
    rect: *mut SDL_Rect,
  );
}
extern "C" {
  pub fn SDL_RenderIsClipEnabled(renderer: *mut SDL_Renderer) -> SDL_bool;
}
extern "C" {
  pub fn SDL_RenderSetScale(
    renderer: *mut SDL_Renderer,
    scaleX: f32,
    scaleY: f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetScale(
    renderer: *mut SDL_Renderer,
    scaleX: *mut f32,
    scaleY: *mut f32,
  );
}
extern "C" {
  pub fn SDL_SetRenderDrawColor(
    renderer: *mut SDL_Renderer,
    r: Uint8,
    g: Uint8,
    b: Uint8,
    a: Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetRenderDrawColor(
    renderer: *mut SDL_Renderer,
    r: *mut Uint8,
    g: *mut Uint8,
    b: *mut Uint8,
    a: *mut Uint8,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SetRenderDrawBlendMode(
    renderer: *mut SDL_Renderer,
    blendMode: SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetRenderDrawBlendMode(
    renderer: *mut SDL_Renderer,
    blendMode: *mut SDL_BlendMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawPoint(
    renderer: *mut SDL_Renderer,
    x: c_int,
    y: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawPoints(
    renderer: *mut SDL_Renderer,
    points: *const SDL_Point,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawLine(
    renderer: *mut SDL_Renderer,
    x1: c_int,
    y1: c_int,
    x2: c_int,
    y2: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawLines(
    renderer: *mut SDL_Renderer,
    points: *const SDL_Point,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawRect(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawRects(
    renderer: *mut SDL_Renderer,
    rects: *const SDL_Rect,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderFillRect(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderFillRects(
    renderer: *mut SDL_Renderer,
    rects: *const SDL_Rect,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderCopy(
    renderer: *mut SDL_Renderer,
    texture: *mut SDL_Texture,
    srcrect: *const SDL_Rect,
    dstrect: *const SDL_Rect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderCopyEx(
    renderer: *mut SDL_Renderer,
    texture: *mut SDL_Texture,
    srcrect: *const SDL_Rect,
    dstrect: *const SDL_Rect,
    angle: f64,
    center: *const SDL_Point,
    flip: SDL_RendererFlip,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawPointF(
    renderer: *mut SDL_Renderer,
    x: f32,
    y: f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawPointsF(
    renderer: *mut SDL_Renderer,
    points: *const SDL_FPoint,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawLineF(
    renderer: *mut SDL_Renderer,
    x1: f32,
    y1: f32,
    x2: f32,
    y2: f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawLinesF(
    renderer: *mut SDL_Renderer,
    points: *const SDL_FPoint,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawRectF(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_FRect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderDrawRectsF(
    renderer: *mut SDL_Renderer,
    rects: *const SDL_FRect,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderFillRectF(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_FRect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderFillRectsF(
    renderer: *mut SDL_Renderer,
    rects: *const SDL_FRect,
    count: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderCopyF(
    renderer: *mut SDL_Renderer,
    texture: *mut SDL_Texture,
    srcrect: *const SDL_Rect,
    dstrect: *const SDL_FRect,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderCopyExF(
    renderer: *mut SDL_Renderer,
    texture: *mut SDL_Texture,
    srcrect: *const SDL_Rect,
    dstrect: *const SDL_FRect,
    angle: f64,
    center: *const SDL_FPoint,
    flip: SDL_RendererFlip,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderReadPixels(
    renderer: *mut SDL_Renderer,
    rect: *const SDL_Rect,
    format: Uint32,
    pixels: *mut c_void,
    pitch: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_RenderPresent(renderer: *mut SDL_Renderer);
}
extern "C" {
  pub fn SDL_DestroyTexture(texture: *mut SDL_Texture);
}
extern "C" {
  pub fn SDL_DestroyRenderer(renderer: *mut SDL_Renderer);
}
extern "C" {
  pub fn SDL_RenderFlush(renderer: *mut SDL_Renderer) -> c_int;
}
extern "C" {
  pub fn SDL_GL_BindTexture(
    texture: *mut SDL_Texture,
    texw: *mut f32,
    texh: *mut f32,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GL_UnbindTexture(texture: *mut SDL_Texture) -> c_int;
}
extern "C" {
  pub fn SDL_RenderGetMetalLayer(renderer: *mut SDL_Renderer) -> *mut c_void;
}
extern "C" {
  pub fn SDL_RenderGetMetalCommandEncoder(
    renderer: *mut SDL_Renderer,
  ) -> *mut c_void;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _SDL_Sensor {
  _unused: [u8; 0],
}
pub type SDL_Sensor = _SDL_Sensor;
pub type SDL_SensorID = Sint32;
pub const SDL_SENSOR_INVALID: SDL_SensorType = -1;
pub const SDL_SENSOR_UNKNOWN: SDL_SensorType = 0;
pub const SDL_SENSOR_ACCEL: SDL_SensorType = 1;
pub const SDL_SENSOR_GYRO: SDL_SensorType = 2;
pub type SDL_SensorType = i32;
extern "C" {
  pub fn SDL_NumSensors() -> c_int;
}
extern "C" {
  pub fn SDL_SensorGetDeviceName(device_index: c_int) -> *const c_char;
}
extern "C" {
  pub fn SDL_SensorGetDeviceType(device_index: c_int) -> SDL_SensorType;
}
extern "C" {
  pub fn SDL_SensorGetDeviceNonPortableType(device_index: c_int) -> c_int;
}
extern "C" {
  pub fn SDL_SensorGetDeviceInstanceID(device_index: c_int) -> SDL_SensorID;
}
extern "C" {
  pub fn SDL_SensorOpen(device_index: c_int) -> *mut SDL_Sensor;
}
extern "C" {
  pub fn SDL_SensorFromInstanceID(instance_id: SDL_SensorID)
    -> *mut SDL_Sensor;
}
extern "C" {
  pub fn SDL_SensorGetName(sensor: *mut SDL_Sensor) -> *const c_char;
}
extern "C" {
  pub fn SDL_SensorGetType(sensor: *mut SDL_Sensor) -> SDL_SensorType;
}
extern "C" {
  pub fn SDL_SensorGetNonPortableType(sensor: *mut SDL_Sensor) -> c_int;
}
extern "C" {
  pub fn SDL_SensorGetInstanceID(sensor: *mut SDL_Sensor) -> SDL_SensorID;
}
extern "C" {
  pub fn SDL_SensorGetData(
    sensor: *mut SDL_Sensor,
    data: *mut f32,
    num_values: c_int,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_SensorClose(sensor: *mut SDL_Sensor);
}
extern "C" {
  pub fn SDL_SensorUpdate();
}
extern "C" {
  pub fn SDL_CreateShapedWindow(
    title: *const c_char,
    x: c_uint,
    y: c_uint,
    w: c_uint,
    h: c_uint,
    flags: Uint32,
  ) -> *mut SDL_Window;
}
extern "C" {
  pub fn SDL_IsShapedWindow(window: *const SDL_Window) -> SDL_bool;
}
pub const ShapeModeDefault: WindowShapeMode = 0;
pub const ShapeModeBinarizeAlpha: WindowShapeMode = 1;
pub const ShapeModeReverseBinarizeAlpha: WindowShapeMode = 2;
pub const ShapeModeColorKey: WindowShapeMode = 3;
pub type WindowShapeMode = u32;
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_WindowShapeParams {
  pub binarizationCutoff: Uint8,
  pub colorKey: SDL_Color,
  _bindgen_union_align: [u8; 4],
}
impl Default for SDL_WindowShapeParams {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_WindowShapeParams {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_WindowShapeParams {{ union }}")
  }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SDL_WindowShapeMode {
  pub mode: WindowShapeMode,
  pub parameters: SDL_WindowShapeParams,
}
impl Default for SDL_WindowShapeMode {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_WindowShapeMode {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(
      f,
      "SDL_WindowShapeMode {{ mode: {:?}, parameters: {:?} }}",
      self.mode, self.parameters
    )
  }
}
extern "C" {
  pub fn SDL_SetWindowShape(
    window: *mut SDL_Window,
    shape: *mut SDL_Surface,
    shape_mode: *mut SDL_WindowShapeMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_GetShapedWindowMode(
    window: *mut SDL_Window,
    shape_mode: *mut SDL_WindowShapeMode,
  ) -> c_int;
}
extern "C" {
  pub fn SDL_IsTablet() -> SDL_bool;
}
extern "C" {
  pub fn SDL_OnApplicationWillTerminate();
}
extern "C" {
  pub fn SDL_OnApplicationDidReceiveMemoryWarning();
}
extern "C" {
  pub fn SDL_OnApplicationWillResignActive();
}
extern "C" {
  pub fn SDL_OnApplicationDidEnterBackground();
}
extern "C" {
  pub fn SDL_OnApplicationWillEnterForeground();
}
extern "C" {
  pub fn SDL_OnApplicationDidBecomeActive();
}
extern "C" {
  pub fn SDL_GetTicks() -> Uint32;
}
extern "C" {
  pub fn SDL_GetPerformanceCounter() -> Uint64;
}
extern "C" {
  pub fn SDL_GetPerformanceFrequency() -> Uint64;
}
extern "C" {
  pub fn SDL_Delay(ms: Uint32);
}
pub type SDL_TimerCallback =
  Option<unsafe extern "C" fn(interval: Uint32, param: *mut c_void) -> Uint32>;
pub type SDL_TimerID = c_int;
extern "C" {
  pub fn SDL_AddTimer(
    interval: Uint32,
    callback: SDL_TimerCallback,
    param: *mut c_void,
  ) -> SDL_TimerID;
}
extern "C" {
  pub fn SDL_RemoveTimer(id: SDL_TimerID) -> SDL_bool;
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_version {
  pub major: Uint8,
  pub minor: Uint8,
  pub patch: Uint8,
}
extern "C" {
  pub fn SDL_GetVersion(ver: *mut SDL_version);
}
extern "C" {
  pub fn SDL_GetRevision() -> *const c_char;
}
extern "C" {
  pub fn SDL_GetRevisionNumber() -> c_int;
}
extern "C" {
  pub fn SDL_Init(flags: Uint32) -> c_int;
}
extern "C" {
  pub fn SDL_InitSubSystem(flags: Uint32) -> c_int;
}
extern "C" {
  pub fn SDL_QuitSubSystem(flags: Uint32);
}
extern "C" {
  pub fn SDL_WasInit(flags: Uint32) -> Uint32;
}
extern "C" {
  pub fn SDL_Quit();
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VkInstance_T {
  _unused: [u8; 0],
}
pub type VkInstance = *mut VkInstance_T;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct VkSurfaceKHR_T {
  _unused: [u8; 0],
}
pub type VkSurfaceKHR = *mut VkSurfaceKHR_T;
pub type SDL_vulkanInstance = VkInstance;
pub type SDL_vulkanSurface = VkSurfaceKHR;
extern "C" {
  pub fn SDL_Vulkan_LoadLibrary(path: *const c_char) -> c_int;
}
extern "C" {
  pub fn SDL_Vulkan_GetVkGetInstanceProcAddr() -> *mut c_void;
}
extern "C" {
  pub fn SDL_Vulkan_UnloadLibrary();
}
extern "C" {
  pub fn SDL_Vulkan_GetInstanceExtensions(
    window: *mut SDL_Window,
    pCount: *mut c_uint,
    pNames: *mut *const c_char,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_Vulkan_CreateSurface(
    window: *mut SDL_Window,
    instance: VkInstance,
    surface: *mut VkSurfaceKHR,
  ) -> SDL_bool;
}
extern "C" {
  pub fn SDL_Vulkan_GetDrawableSize(
    window: *mut SDL_Window,
    w: *mut c_int,
    h: *mut c_int,
  );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _NSWindow {
  _unused: [u8; 0],
}
pub type NSWindow = _NSWindow;
pub const SDL_SYSWM_UNKNOWN: SDL_SYSWM_TYPE = 0;
pub const SDL_SYSWM_WINDOWS: SDL_SYSWM_TYPE = 1;
pub const SDL_SYSWM_X11: SDL_SYSWM_TYPE = 2;
pub const SDL_SYSWM_DIRECTFB: SDL_SYSWM_TYPE = 3;
pub const SDL_SYSWM_COCOA: SDL_SYSWM_TYPE = 4;
pub const SDL_SYSWM_UIKIT: SDL_SYSWM_TYPE = 5;
pub const SDL_SYSWM_WAYLAND: SDL_SYSWM_TYPE = 6;
pub const SDL_SYSWM_MIR: SDL_SYSWM_TYPE = 7;
pub const SDL_SYSWM_WINRT: SDL_SYSWM_TYPE = 8;
pub const SDL_SYSWM_ANDROID: SDL_SYSWM_TYPE = 9;
pub const SDL_SYSWM_VIVANTE: SDL_SYSWM_TYPE = 10;
pub const SDL_SYSWM_OS2: SDL_SYSWM_TYPE = 11;
pub const SDL_SYSWM_HAIKU: SDL_SYSWM_TYPE = 12;
pub type SDL_SYSWM_TYPE = u32;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SDL_SysWMmsg {
  pub version: SDL_version,
  pub subsystem: SDL_SYSWM_TYPE,
  pub msg: SDL_SysWMmsg__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_SysWMmsg__bindgen_ty_1 {
  pub cocoa: SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1,
  pub dummy: c_int,
  _bindgen_union_align: u32,
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1 {
  pub dummy: c_int,
}
impl Default for SDL_SysWMmsg__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_SysWMmsg__bindgen_ty_1 {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_SysWMmsg__bindgen_ty_1 {{ union }}")
  }
}
impl Default for SDL_SysWMmsg {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_SysWMmsg {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(
      f,
      "SDL_SysWMmsg {{ version: {:?}, subsystem: {:?}, msg: {:?} }}",
      self.version, self.subsystem, self.msg
    )
  }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct SDL_SysWMinfo {
  pub version: SDL_version,
  pub subsystem: SDL_SYSWM_TYPE,
  pub info: SDL_SysWMinfo__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union SDL_SysWMinfo__bindgen_ty_1 {
  pub cocoa: SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1,
  pub dummy: [Uint8; 64],
  _bindgen_union_align: [u64; 8],
}
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1 {
  pub window: *mut NSWindow,
}
impl Default for SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Default for SDL_SysWMinfo__bindgen_ty_1 {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_SysWMinfo__bindgen_ty_1 {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(f, "SDL_SysWMinfo__bindgen_ty_1 {{ union }}")
  }
}
impl Default for SDL_SysWMinfo {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
impl Debug for SDL_SysWMinfo {
  fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
    write!(
      f,
      "SDL_SysWMinfo {{ version: {:?}, subsystem: {:?}, info: {:?} }}",
      self.version, self.subsystem, self.info
    )
  }
}
extern "C" {
  pub fn SDL_GetWindowWMInfo(
    window: *mut SDL_Window,
    info: *mut SDL_SysWMinfo,
  ) -> SDL_bool;
}
pub type __builtin_va_list = [__va_list_tag; 1];
#[repr(C)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub struct __va_list_tag {
  pub gp_offset: c_uint,
  pub fp_offset: c_uint,
  pub overflow_arg_area: *mut c_void,
  pub reg_save_area: *mut c_void,
}
impl Default for __va_list_tag {
  fn default() -> Self {
    unsafe { ::core::mem::zeroed() }
  }
}
#[repr(C)]
#[derive(Debug, Default, Copy, Clone, PartialEq)]
pub struct SDL_BlitMap {
  pub _address: u8,
}