29 files modified
1 files added
1 files deleted
| | |
| | | ## OS Targets |
| | | |
| | | ### Windows |
| | | Build via Visual Studio 2013 |
| | | Build via Visual Studio 2015 |
| | | They run in Windows XP and newer, 32bit and 64bit. |
| | | |
| | | ### Mac OS X |
| | | Built via the Xcode project, dylib ONLY |
| | | Mac OS X 10.6 32bit and 64bit. |
| | | Mac OS X 10.7+ 64bit only. |
| | | |
| | | ### Linux |
| | | Built via the configure script |
| | |
| | | set(PACKAGE_VERSION "2.0.8") |
| | | set(PACKAGE_VERSION "2.0.9") |
| | | |
| | | # Check whether the requested PACKAGE_FIND_VERSION is compatible |
| | | if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") |
| | |
| | | #include "SDL_power.h" |
| | | #include "SDL_render.h" |
| | | #include "SDL_rwops.h" |
| | | #include "SDL_sensor.h" |
| | | #include "SDL_shape.h" |
| | | #include "SDL_system.h" |
| | | #include "SDL_thread.h" |
| | |
| | | #define SDL_INIT_HAPTIC 0x00001000u |
| | | #define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ |
| | | #define SDL_INIT_EVENTS 0x00004000u |
| | | #define SDL_INIT_SENSOR 0x00008000u |
| | | #define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ |
| | | #define SDL_INIT_EVERYTHING ( \ |
| | | SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ |
| | | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER \ |
| | | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ |
| | | ) |
| | | /* @} */ |
| | | |
| | |
| | | #define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 |
| | | #define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 |
| | | #define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 |
| | | #define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE) |
| | | #define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 |
| | | #define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) |
| | | /* @} */ |
| | | |
| | | /* @} *//* Audio flags */ |
| | |
| | | 3. This notice may not be removed or altered from any source distribution. |
| | | */ |
| | | |
| | | #ifndef SDL_config_h |
| | | #define SDL_config_h |
| | | #ifndef SDL_config_h_ |
| | | #define SDL_config_h_ |
| | | |
| | | #include "SDL_platform.h" |
| | | |
| | |
| | | #include "SDL_config_android.h" |
| | | #elif defined(__PSP__) |
| | | #include "SDL_config_psp.h" |
| | | #elif defined(__OS2__) |
| | | #include "SDL_config_os2.h" |
| | | #elif defined(__linux__) |
| | | #include "SDL_config_linux.h" |
| | | #elif defined(EMSCRIPTEN) |
| | | #include "SDL_config_emscripten.h" |
| | | #else |
| | | /* This is a minimal configuration just to get SDL running on new platforms */ |
| | | /* This is a minimal configuration just to get SDL running on new platforms. */ |
| | | #include "SDL_config_minimal.h" |
| | | #endif /* platform config */ |
| | | |
| | |
| | | #error Wrong SDL_config.h, check your include path? |
| | | #endif |
| | | |
| | | #endif /* SDL_config_h */ |
| | | #endif /* SDL_config_h_ */ |
| | |
| | | #define HAVE_COPYSIGNF 1 |
| | | #define HAVE_COS 1 |
| | | #define HAVE_COSF 1 |
| | | #define HAVE_EXP 1 |
| | | #define HAVE_EXPF 1 |
| | | #define HAVE_FABS 1 |
| | | #define HAVE_FABSF 1 |
| | | #define HAVE_FLOOR 1 |
| | |
| | | |
| | | /* Enable various input drivers */ |
| | | #define SDL_JOYSTICK_IOKIT 1 |
| | | #define SDL_JOYSTICK_HIDAPI 1 |
| | | #define SDL_HAPTIC_IOKIT 1 |
| | | |
| | | /* Enable the dummy sensor driver */ |
| | | #define SDL_SENSOR_DUMMY 1 |
| | | |
| | | /* Enable various shared object loading systems */ |
| | | #define SDL_LOADSO_DLOPEN 1 |
| | | |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> |
| | | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
| | | |
| | | This software is provided 'as-is', without any express or implied |
| | | warranty. In no event will the authors be held liable for any damages |
| | |
| | | 3. This notice may not be removed or altered from any source distribution. |
| | | */ |
| | | |
| | | #ifndef _SDL_config_windows_h |
| | | #define _SDL_config_windows_h |
| | | #ifndef SDL_config_windows_h_ |
| | | #define SDL_config_windows_h_ |
| | | #define SDL_config_h_ |
| | | |
| | | #include "SDL_platform.h" |
| | | |
| | |
| | | #define HAVE_DSOUND_H 1 |
| | | #define HAVE_DXGI_H 1 |
| | | #define HAVE_XINPUT_H 1 |
| | | #define HAVE_MMDEVICEAPI_H 1 |
| | | #define HAVE_AUDIOCLIENT_H 1 |
| | | #define HAVE_ENDPOINTVOLUME_H 1 |
| | | |
| | | /* This is disabled by default to avoid C runtime dependencies and manifest requirements */ |
| | | #ifdef HAVE_LIBC |
| | | /* Useful headers */ |
| | | #define HAVE_STDIO_H 1 |
| | | #define STDC_HEADERS 1 |
| | | #define HAVE_STRING_H 1 |
| | | #define HAVE_CTYPE_H 1 |
| | | #define HAVE_FLOAT_H 1 |
| | | #define HAVE_LIMITS_H 1 |
| | | #define HAVE_MATH_H 1 |
| | | #define HAVE_SIGNAL_H 1 |
| | | #define HAVE_STDIO_H 1 |
| | | #define HAVE_STRING_H 1 |
| | | |
| | | /* C library functions */ |
| | | #define HAVE_MALLOC 1 |
| | |
| | | #define HAVE_MEMCMP 1 |
| | | #define HAVE_STRLEN 1 |
| | | #define HAVE__STRREV 1 |
| | | #define HAVE__STRUPR 1 |
| | | #define HAVE__STRLWR 1 |
| | | /* These functions have security warnings, so we won't use them */ |
| | | /* #undef HAVE__STRUPR */ |
| | | /* #undef HAVE__STRLWR */ |
| | | #define HAVE_STRCHR 1 |
| | | #define HAVE_STRRCHR 1 |
| | | #define HAVE_STRSTR 1 |
| | | #define HAVE__LTOA 1 |
| | | #define HAVE__ULTOA 1 |
| | | /* These functions have security warnings, so we won't use them */ |
| | | /* #undef HAVE__LTOA */ |
| | | /* #undef HAVE__ULTOA */ |
| | | #define HAVE_STRTOL 1 |
| | | #define HAVE_STRTOUL 1 |
| | | #define HAVE_STRTOD 1 |
| | |
| | | #define HAVE_STRNCMP 1 |
| | | #define HAVE__STRICMP 1 |
| | | #define HAVE__STRNICMP 1 |
| | | #define HAVE_ATAN 1 |
| | | #define HAVE_ATAN2 1 |
| | | #define HAVE_ACOS 1 |
| | | #define HAVE_ASIN 1 |
| | | #define HAVE_CEIL 1 |
| | | #define HAVE_COS 1 |
| | | #define HAVE_COSF 1 |
| | | #define HAVE_FABS 1 |
| | | #define HAVE_FLOOR 1 |
| | | #define HAVE_LOG 1 |
| | | #define HAVE_POW 1 |
| | | #define HAVE_SIN 1 |
| | | #define HAVE_SINF 1 |
| | | #define HAVE_SQRT 1 |
| | | #define HAVE_SQRTF 1 |
| | | #define HAVE_TAN 1 |
| | | #define HAVE_TANF 1 |
| | | #define HAVE_ACOS 1 |
| | | #define HAVE_ACOSF 1 |
| | | #define HAVE_ASIN 1 |
| | | #define HAVE_ASINF 1 |
| | | #define HAVE_ATAN 1 |
| | | #define HAVE_ATANF 1 |
| | | #define HAVE_ATAN2 1 |
| | | #define HAVE_ATAN2F 1 |
| | | #define HAVE_CEILF 1 |
| | | #define HAVE__COPYSIGN 1 |
| | | #define HAVE_COS 1 |
| | | #define HAVE_COSF 1 |
| | | #define HAVE_EXP 1 |
| | | #define HAVE_EXPF 1 |
| | | #define HAVE_FABS 1 |
| | | #define HAVE_FABSF 1 |
| | | #define HAVE_FLOOR 1 |
| | | #define HAVE_FLOORF 1 |
| | | #define HAVE_FMOD 1 |
| | | #define HAVE_FMODF 1 |
| | | #define HAVE_LOG 1 |
| | | #define HAVE_LOGF 1 |
| | | #define HAVE_LOG10 1 |
| | | #define HAVE_LOG10F 1 |
| | | #define HAVE_POW 1 |
| | | #define HAVE_POWF 1 |
| | | #define HAVE_SIN 1 |
| | | #define HAVE_SINF 1 |
| | | #define HAVE_SQRT 1 |
| | | #define HAVE_SQRTF 1 |
| | | #define HAVE_TAN 1 |
| | | #define HAVE_TANF 1 |
| | | #if defined(_MSC_VER) |
| | | /* These functions were added with the VC++ 2013 C runtime library */ |
| | | #if _MSC_VER >= 1800 |
| | | #define HAVE_STRTOLL 1 |
| | | #define HAVE_VSSCANF 1 |
| | | #define HAVE_COPYSIGN 1 |
| | | #define HAVE_SCALBN 1 |
| | | #define HAVE_SCALBNF 1 |
| | | #endif |
| | | /* This function is available with at least the VC++ 2008 C runtime library */ |
| | | #if _MSC_VER >= 1400 |
| | | #define HAVE__FSEEKI64 1 |
| | | #endif |
| | | #endif |
| | | #if !defined(_MSC_VER) || defined(_USE_MATH_DEFINES) |
| | | #define HAVE_M_PI 1 |
| | |
| | | #endif |
| | | |
| | | /* Enable various audio drivers */ |
| | | #define SDL_AUDIO_DRIVER_WASAPI 1 |
| | | #define SDL_AUDIO_DRIVER_DSOUND 1 |
| | | #define SDL_AUDIO_DRIVER_XAUDIO2 1 |
| | | #define SDL_AUDIO_DRIVER_WINMM 1 |
| | | #define SDL_AUDIO_DRIVER_DISK 1 |
| | | #define SDL_AUDIO_DRIVER_DUMMY 1 |
| | |
| | | /* Enable various input drivers */ |
| | | #define SDL_JOYSTICK_DINPUT 1 |
| | | #define SDL_JOYSTICK_XINPUT 1 |
| | | #define SDL_JOYSTICK_HIDAPI 1 |
| | | #define SDL_HAPTIC_DINPUT 1 |
| | | #define SDL_HAPTIC_XINPUT 1 |
| | | |
| | | /* Enable the dummy sensor driver */ |
| | | #define SDL_SENSOR_DUMMY 1 |
| | | |
| | | /* Enable various shared object loading systems */ |
| | | #define SDL_LOADSO_WINDOWS 1 |
| | |
| | | #define SDL_VIDEO_RENDER_D3D 1 |
| | | #endif |
| | | #ifndef SDL_VIDEO_RENDER_D3D11 |
| | | #define SDL_VIDEO_RENDER_D3D11 0 |
| | | #define SDL_VIDEO_RENDER_D3D11 0 |
| | | #endif |
| | | |
| | | /* Enable OpenGL support */ |
| | |
| | | #define SDL_VIDEO_OPENGL_EGL 1 |
| | | #endif |
| | | |
| | | /* Enable Vulkan support */ |
| | | #define SDL_VIDEO_VULKAN 1 |
| | | |
| | | /* Enable system power support */ |
| | | #define SDL_POWER_WINDOWS 1 |
| | |
| | | #define SDL_ASSEMBLY_ROUTINES 1 |
| | | #endif |
| | | |
| | | #endif /* _SDL_config_windows_h */ |
| | | #endif /* SDL_config_windows_h_ */ |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2016 Sam Lantinga <slouken@libsdl.org> |
| | | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
| | | |
| | | This software is provided 'as-is', without any express or implied |
| | | warranty. In no event will the authors be held liable for any damages |
| | |
| | | #include <intrin.h> |
| | | #else |
| | | #ifdef __ALTIVEC__ |
| | | #if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__) && !defined(SDL_DISABLE_ALTIVEC_H) |
| | | #if defined(HAVE_ALTIVEC_H) && !defined(__APPLE_ALTIVEC__) && !defined(SDL_DISABLE_ALTIVEC_H) |
| | | #include <altivec.h> |
| | | #undef pixel |
| | | #undef bool |
| | | #endif |
| | | #endif |
| | | #if defined(__ARM_NEON__) && !defined(SDL_DISABLE_ARM_NEON_H) |
| | | #include <arm_neon.h> |
| | | #endif |
| | | #if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) |
| | | #include <mm3dnow.h> |
| | | #endif |
| | | #if HAVE_IMMINTRIN_H && !defined(SDL_DISABLE_IMMINTRIN_H) |
| | | #if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) |
| | | #include <immintrin.h> |
| | | #else |
| | | #if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) |
| | |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); |
| | | |
| | | /** |
| | | * This function returns true if the CPU has AVX-512F (foundation) features. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); |
| | | |
| | | /** |
| | | * This function returns true if the CPU has NEON (ARM SIMD) features. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); |
| | |
| | | * This function returns the amount of RAM configured in the system, in MB. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); |
| | | |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| | | #ifdef __cplusplus |
| | |
| | | Called on Android in onResume() |
| | | */ |
| | | |
| | | /* Display events */ |
| | | SDL_DISPLAYEVENT = 0x150, /**< Display state change */ |
| | | |
| | | /* Window events */ |
| | | SDL_WINDOWEVENT = 0x200, /**< Window state change */ |
| | | SDL_SYSWMEVENT, /**< System specific event */ |
| | |
| | | SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ |
| | | SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ |
| | | |
| | | /* Sensor events */ |
| | | SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ |
| | | |
| | | /* Render events */ |
| | | SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ |
| | | SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ |
| | |
| | | Uint32 type; |
| | | Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ |
| | | } SDL_CommonEvent; |
| | | |
| | | /** |
| | | * \brief Display state change event data (event.display.*) |
| | | */ |
| | | typedef struct SDL_DisplayEvent |
| | | { |
| | | Uint32 type; /**< ::SDL_DISPLAYEVENT */ |
| | | Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ |
| | | Uint32 display; /**< The associated display index */ |
| | | Uint8 event; /**< ::SDL_DisplayEventID */ |
| | | Uint8 padding1; |
| | | Uint8 padding2; |
| | | Uint8 padding3; |
| | | Sint32 data1; /**< event dependent data */ |
| | | } SDL_DisplayEvent; |
| | | |
| | | /** |
| | | * \brief Window state change event data (event.window.*) |
| | |
| | | |
| | | |
| | | /** |
| | | * \brief Sensor event structure (event.sensor.*) |
| | | */ |
| | | typedef struct SDL_SensorEvent |
| | | { |
| | | Uint32 type; /**< ::SDL_SENSORUPDATE */ |
| | | Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ |
| | | Sint32 which; /**< The instance ID of the sensor */ |
| | | float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ |
| | | } SDL_SensorEvent; |
| | | |
| | | /** |
| | | * \brief The "quit requested" event |
| | | */ |
| | | typedef struct SDL_QuitEvent |
| | |
| | | { |
| | | Uint32 type; /**< Event type, shared with all events */ |
| | | SDL_CommonEvent common; /**< Common event data */ |
| | | SDL_DisplayEvent display; /**< Window event data */ |
| | | SDL_WindowEvent window; /**< Window event data */ |
| | | SDL_KeyboardEvent key; /**< Keyboard event data */ |
| | | SDL_TextEditingEvent edit; /**< Text editing event data */ |
| | |
| | | SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ |
| | | SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ |
| | | SDL_AudioDeviceEvent adevice; /**< Audio device event data */ |
| | | SDL_SensorEvent sensor; /**< Sensor event data */ |
| | | SDL_QuitEvent quit; /**< Quit request event data */ |
| | | SDL_UserEvent user; /**< Custom event data */ |
| | | SDL_SysWMEvent syswm; /**< System dependent window event data */ |
| | |
| | | extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); |
| | | |
| | | /** |
| | | * Get the mapping of a game controller. |
| | | * This can be called before any controllers are opened. |
| | | * |
| | | * \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available |
| | | */ |
| | | extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); |
| | | |
| | | /** |
| | | * Open a game controller for use. |
| | | * The index passed as an argument refers to the N'th game controller on the system. |
| | | * This index is not the value which will identify this controller in future |
| | |
| | | * Return the name for this currently opened controller |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); |
| | | |
| | | /** |
| | | * Get the player index of an opened game controller, or -1 if it's not available |
| | | * |
| | | * For XInput controllers this returns the XInput user index. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); |
| | | |
| | | /** |
| | | * Get the USB vendor ID of an opened controller, if available. |
| | |
| | | SDL_GameControllerButton button); |
| | | |
| | | /** |
| | | * Trigger a rumble effect |
| | | * Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling. |
| | | * |
| | | * \param gamecontroller The controller to vibrate |
| | | * \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF |
| | | * \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF |
| | | * \param duration_ms The duration of the rumble effect, in milliseconds |
| | | * |
| | | * \return 0, or -1 if rumble isn't supported on this joystick |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Close a controller previously opened with SDL_GameControllerOpen(). |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); |
| | |
| | | extern "C" { |
| | | #endif /* __cplusplus */ |
| | | |
| | | /* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). |
| | | * |
| | | * At the moment the magnitude variables are mixed between signed/unsigned, and |
| | | * it is also not made clear that ALL of those variables expect a max of 0x7FFF. |
| | | * |
| | | * Some platforms may have higher precision than that (Linux FF, Windows XInput) |
| | | * so we should fix the inconsistency in favor of higher possible precision, |
| | | * adjusting for platforms that use different scales. |
| | | * -flibit |
| | | */ |
| | | |
| | | /** |
| | | * \typedef SDL_Haptic |
| | | * |
| | |
| | | * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. |
| | | * |
| | | * The Left/Right effect is used to explicitly control the large and small |
| | | * motors, commonly found in modern game controllers. One motor is high |
| | | * frequency, the other is low frequency. |
| | | * motors, commonly found in modern game controllers. The small (right) motor |
| | | * is high frequency, and the large (left) motor is low frequency. |
| | | * |
| | | * \sa SDL_HAPTIC_LEFTRIGHT |
| | | * \sa SDL_HapticEffect |
| | |
| | | Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ |
| | | |
| | | /* Replay */ |
| | | Uint32 length; /**< Duration of the effect. */ |
| | | Uint32 length; /**< Duration of the effect in milliseconds. */ |
| | | |
| | | /* Rumble */ |
| | | Uint16 large_magnitude; /**< Control of the large controller motor. */ |
| | |
| | | #define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" |
| | | |
| | | /** |
| | | * \brief A variable setting the double click time, in milliseconds. |
| | | */ |
| | | #define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" |
| | | |
| | | /** |
| | | * \brief A variable setting the double click radius, in pixels. |
| | | */ |
| | | #define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" |
| | | |
| | | /** |
| | | * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode |
| | | */ |
| | | #define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" |
| | |
| | | #define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" |
| | | |
| | | /** |
| | | * \brief A variable controlling which orientations are allowed on iOS. |
| | | * \brief A variable controlling which orientations are allowed on iOS/Android. |
| | | * |
| | | * In some circumstances it is necessary to be able to explicitly control |
| | | * which UI orientations are allowed. |
| | |
| | | #define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI joystick drivers should be used. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI drivers are not used |
| | | * "1" - HIDAPI drivers are used (the default) |
| | | * |
| | | * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI driver is not used |
| | | * "1" - HIDAPI driver is used |
| | | * |
| | | * The default is the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - extended reports are not enabled (the default) |
| | | * "1" - extended reports |
| | | * |
| | | * Extended input reports allow rumble on Bluetooth PS4 controllers, but |
| | | * break DirectInput handling for applications that don't use SDL. |
| | | * |
| | | * Once extended reports are enabled, they can not be disabled without |
| | | * power cycling the controller. |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for Steam Controllers should be used. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI driver is not used |
| | | * "1" - HIDAPI driver is used |
| | | * |
| | | * The default is the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI driver is not used |
| | | * "1" - HIDAPI driver is used |
| | | * |
| | | * The default is the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI driver is not used |
| | | * "1" - HIDAPI driver is used |
| | | * |
| | | * The default is the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" |
| | | |
| | | /** |
| | | * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs |
| | | * |
| | | * The variable can be set to the following values: |
| | | * "0" - Do not scan for Steam Controllers |
| | | * "1" - Scan for Steam Controllers (the default) |
| | | * |
| | | * The default value is "1". This hint must be set before initializing the joystick subsystem. |
| | | */ |
| | | #define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" |
| | | |
| | | |
| | | /** |
| | | * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. |
| | | * This is a debugging aid for developers and not expected to be used by end users. The default is "1" |
| | | * |
| | |
| | | * This is specially useful if you build SDL against a non glibc libc library (such as musl) which |
| | | * provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). |
| | | * Support for this hint is currently available only in the pthread, Windows, and PSP backend. |
| | | * |
| | | * Instead of this hint, in 2.0.9 and later, you can use |
| | | * SDL_CreateThreadWithStackSize(). This hint only works with the classic |
| | | * SDL_CreateThread(). |
| | | */ |
| | | #define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" |
| | | |
| | |
| | | #define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH" |
| | | |
| | | /** |
| | | * \brief A variable to control whether we trap the Android back button to handle it manually. |
| | | * This is necessary for the right mouse button to work on some Android devices, or |
| | | * to be able to trap the back button for use in your code reliably. If set to true, |
| | | * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of |
| | | * SDL_SCANCODE_AC_BACK. |
| | | * |
| | | * The variable can be set to the following values: |
| | | * "0" - Back button will be handled as usual for system. (default) |
| | | * "1" - Back button will be trapped, allowing you to handle the key press |
| | | * manually. (This will also let right mouse click work on systems |
| | | * where the right mouse button functions as back.) |
| | | * |
| | | * The value of this hint is used at runtime, so it can be changed at any time. |
| | | */ |
| | | #define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" |
| | | |
| | | /** |
| | | * \brief A variable to control whether the return key on the soft keyboard |
| | | * should hide the soft keyboard on Android and iOS. |
| | | * |
| | |
| | | typedef enum |
| | | { |
| | | SDL_JOYSTICK_POWER_UNKNOWN = -1, |
| | | SDL_JOYSTICK_POWER_EMPTY, |
| | | SDL_JOYSTICK_POWER_LOW, |
| | | SDL_JOYSTICK_POWER_MEDIUM, |
| | | SDL_JOYSTICK_POWER_FULL, |
| | | SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ |
| | | SDL_JOYSTICK_POWER_LOW, /* <= 20% */ |
| | | SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ |
| | | SDL_JOYSTICK_POWER_FULL, /* <= 100% */ |
| | | SDL_JOYSTICK_POWER_WIRED, |
| | | SDL_JOYSTICK_POWER_MAX |
| | | } SDL_JoystickPowerLevel; |
| | |
| | | * If no name can be found, this function returns NULL. |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); |
| | | |
| | | /** |
| | | * Get the player index of a joystick, or -1 if it's not available |
| | | * This can be called before any joysticks are opened. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); |
| | | |
| | | /** |
| | | * Return the GUID for the joystick at this index |
| | |
| | | * If no name can be found, this function returns NULL. |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick * joystick); |
| | | |
| | | /** |
| | | * Get the player index of an opened joystick, or -1 if it's not available |
| | | * |
| | | * For XInput controllers this returns the XInput user index. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick * joystick); |
| | | |
| | | /** |
| | | * Return the GUID for this opened joystick |
| | |
| | | int button); |
| | | |
| | | /** |
| | | * Trigger a rumble effect |
| | | * Each call to this function cancels any previous rumble effect, and calling it with 0 intensity stops any rumbling. |
| | | * |
| | | * \param joystick The joystick to vibrate |
| | | * \param low_frequency_rumble The intensity of the low frequency (left) rumble motor, from 0 to 0xFFFF |
| | | * \param high_frequency_rumble The intensity of the high frequency (right) rumble motor, from 0 to 0xFFFF |
| | | * \param duration_ms The duration of the rumble effect, in milliseconds |
| | | * |
| | | * \return 0, or -1 if rumble isn't supported on this joystick |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Close a joystick previously opened with SDL_JoystickOpen(). |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick); |
| New file |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
| | | |
| | | This software is provided 'as-is', without any express or implied |
| | | warranty. In no event will the authors be held liable for any damages |
| | | arising from the use of this software. |
| | | |
| | | Permission is granted to anyone to use this software for any purpose, |
| | | including commercial applications, and to alter it and redistribute it |
| | | freely, subject to the following restrictions: |
| | | |
| | | 1. The origin of this software must not be misrepresented; you must not |
| | | claim that you wrote the original software. If you use this software |
| | | in a product, an acknowledgment in the product documentation would be |
| | | appreciated but is not required. |
| | | 2. Altered source versions must be plainly marked as such, and must not be |
| | | misrepresented as being the original software. |
| | | 3. This notice may not be removed or altered from any source distribution. |
| | | */ |
| | | |
| | | /** |
| | | * \file SDL_sensor.h |
| | | * |
| | | * Include file for SDL sensor event handling |
| | | * |
| | | */ |
| | | |
| | | #ifndef _SDL_sensor_h |
| | | #define _SDL_sensor_h |
| | | |
| | | #include "SDL_stdinc.h" |
| | | #include "SDL_error.h" |
| | | |
| | | #include "begin_code.h" |
| | | /* Set up for C function definitions, even when using C++ */ |
| | | #ifdef __cplusplus |
| | | /* *INDENT-OFF* */ |
| | | extern "C" { |
| | | /* *INDENT-ON* */ |
| | | #endif |
| | | |
| | | /** |
| | | * \brief SDL_sensor.h |
| | | * |
| | | * In order to use these functions, SDL_Init() must have been called |
| | | * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system |
| | | * for sensors, and load appropriate drivers. |
| | | */ |
| | | |
| | | struct _SDL_Sensor; |
| | | typedef struct _SDL_Sensor SDL_Sensor; |
| | | |
| | | /** |
| | | * This is a unique ID for a sensor for the time it is connected to the system, |
| | | * and is never reused for the lifetime of the application. |
| | | * |
| | | * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. |
| | | */ |
| | | typedef Sint32 SDL_SensorID; |
| | | |
| | | /* The different sensors defined by SDL |
| | | * |
| | | * Additional sensors may be available, using platform dependent semantics. |
| | | * |
| | | * Hare are the additional Android sensors: |
| | | * https://developer.android.com/reference/android/hardware/SensorEvent.html#values |
| | | */ |
| | | typedef enum |
| | | { |
| | | SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ |
| | | SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ |
| | | SDL_SENSOR_ACCEL, /**< Accelerometer */ |
| | | SDL_SENSOR_GYRO /**< Gyroscope */ |
| | | } SDL_SensorType; |
| | | |
| | | /** |
| | | * Accelerometer sensor |
| | | * |
| | | * The accelerometer returns the current acceleration in SI meters per |
| | | * second squared. This includes gravity, so a device at rest will have |
| | | * an acceleration of SDL_STANDARD_GRAVITY straight down. |
| | | * |
| | | * values[0]: Acceleration on the x axis |
| | | * values[1]: Acceleration on the y axis |
| | | * values[2]: Acceleration on the z axis |
| | | * |
| | | * For phones held in portrait mode, the axes are defined as follows: |
| | | * -X ... +X : left ... right |
| | | * -Y ... +Y : bottom ... top |
| | | * -Z ... +Z : farther ... closer |
| | | * |
| | | * The axis data is not changed when the phone is rotated. |
| | | * |
| | | * \sa SDL_GetDisplayOrientation() |
| | | */ |
| | | #define SDL_STANDARD_GRAVITY 9.80665f |
| | | |
| | | /** |
| | | * Gyroscope sensor |
| | | * |
| | | * The gyroscope returns the current rate of rotation in radians per second. |
| | | * The rotation is positive in the counter-clockwise direction. That is, |
| | | * an observer looking from a positive location on one of the axes would |
| | | * see positive rotation on that axis when it appeared to be rotating |
| | | * counter-clockwise. |
| | | * |
| | | * values[0]: Angular speed around the x axis |
| | | * values[1]: Angular speed around the y axis |
| | | * values[2]: Angular speed around the z axis |
| | | * |
| | | * For phones held in portrait mode, the axes are defined as follows: |
| | | * -X ... +X : left ... right |
| | | * -Y ... +Y : bottom ... top |
| | | * -Z ... +Z : farther ... closer |
| | | * |
| | | * The axis data is not changed when the phone is rotated. |
| | | * |
| | | * \sa SDL_GetDisplayOrientation() |
| | | */ |
| | | |
| | | /* Function prototypes */ |
| | | |
| | | /** |
| | | * \brief Count the number of sensors attached to the system right now |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_NumSensors(void); |
| | | |
| | | /** |
| | | * \brief Get the implementation dependent name of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor name, or NULL if device_index is out of range. |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); |
| | | |
| | | /** |
| | | * \brief Get the type of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range. |
| | | */ |
| | | extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); |
| | | |
| | | /** |
| | | * \brief Get the platform dependent type of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor platform dependent type, or -1 if device_index is out of range. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); |
| | | |
| | | /** |
| | | * \brief Get the instance ID of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor instance ID, or -1 if device_index is out of range. |
| | | */ |
| | | extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); |
| | | |
| | | /** |
| | | * \brief Open a sensor for use. |
| | | * |
| | | * The index passed as an argument refers to the N'th sensor on the system. |
| | | * |
| | | * \return A sensor identifier, or NULL if an error occurred. |
| | | */ |
| | | extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); |
| | | |
| | | /** |
| | | * Return the SDL_Sensor associated with an instance id. |
| | | */ |
| | | extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); |
| | | |
| | | /** |
| | | * \brief Get the implementation dependent name of a sensor. |
| | | * |
| | | * \return The sensor name, or NULL if the sensor is NULL. |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); |
| | | |
| | | /** |
| | | * \brief Get the type of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL. |
| | | */ |
| | | extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); |
| | | |
| | | /** |
| | | * \brief Get the platform dependent type of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor platform dependent type, or -1 if the sensor is NULL. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); |
| | | |
| | | /** |
| | | * \brief Get the instance ID of a sensor. |
| | | * |
| | | * This can be called before any sensors are opened. |
| | | * |
| | | * \return The sensor instance ID, or -1 if the sensor is NULL. |
| | | */ |
| | | extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); |
| | | |
| | | /** |
| | | * Get the current state of an opened sensor. |
| | | * |
| | | * The number of values and interpretation of the data is sensor dependent. |
| | | * |
| | | * \param sensor The sensor to query |
| | | * \param data A pointer filled with the current sensor state |
| | | * \param num_values The number of values to write to data |
| | | * |
| | | * \return 0 or -1 if an error occurred. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values); |
| | | |
| | | /** |
| | | * Close a sensor previously opened with SDL_SensorOpen() |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor); |
| | | |
| | | /** |
| | | * Update the current state of the open sensors. |
| | | * |
| | | * This is called automatically by the event loop if sensor events are enabled. |
| | | * |
| | | * This needs to be called from the thread that initialized the sensor subsystem. |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); |
| | | |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| | | #ifdef __cplusplus |
| | | /* *INDENT-OFF* */ |
| | | } |
| | | /* *INDENT-ON* */ |
| | | #endif |
| | | #include "close_code.h" |
| | | |
| | | #endif /* _SDL_sensor_h */ |
| | | |
| | | /* vi: set ts=4 sw=4 expandtab: */ |
| | |
| | | #ifdef HAVE_FLOAT_H |
| | | # include <float.h> |
| | | #endif |
| | | #if defined(HAVE_ALLOCA) && !defined(alloca) |
| | | # if defined(HAVE_ALLOCA_H) |
| | | # include <alloca.h> |
| | | # elif defined(__GNUC__) |
| | | # define alloca __builtin_alloca |
| | | # elif defined(_MSC_VER) |
| | | # include <malloc.h> |
| | | # define alloca _alloca |
| | | # elif defined(__WATCOMC__) |
| | | # include <malloc.h> |
| | | # elif defined(__BORLANDC__) |
| | | # include <malloc.h> |
| | | # elif defined(__DMC__) |
| | | # include <stdlib.h> |
| | | # elif defined(__AIX__) |
| | | #pragma alloca |
| | | # elif defined(__MRC__) |
| | | void *alloca(unsigned); |
| | | # else |
| | | char *alloca(); |
| | | # endif |
| | | #endif |
| | | |
| | | /** |
| | | * The number of elements in an array. |
| | |
| | | extern "C" { |
| | | #endif |
| | | |
| | | #if defined(HAVE_ALLOCA) && !defined(alloca) |
| | | # if defined(HAVE_ALLOCA_H) |
| | | # include <alloca.h> |
| | | # elif defined(__GNUC__) |
| | | # define alloca __builtin_alloca |
| | | # elif defined(_MSC_VER) |
| | | # include <malloc.h> |
| | | # define alloca _alloca |
| | | # elif defined(__WATCOMC__) |
| | | # include <malloc.h> |
| | | # elif defined(__BORLANDC__) |
| | | # include <malloc.h> |
| | | # elif defined(__DMC__) |
| | | # include <stdlib.h> |
| | | # elif defined(__AIX__) |
| | | #pragma alloca |
| | | # elif defined(__MRC__) |
| | | void *alloca(unsigned); |
| | | # else |
| | | char *alloca(); |
| | | # endif |
| | | #endif |
| | | #ifdef HAVE_ALLOCA |
| | | #define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) |
| | | #define SDL_stack_free(data) |
| | |
| | | #endif |
| | | } |
| | | |
| | | |
| | | extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); |
| | | |
| | | extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); |
| | | extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); |
| | | |
| | | extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); |
| | | extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); |
| | | extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); |
| | | extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); |
| | |
| | | extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); |
| | | extern DECLSPEC double SDLCALL SDL_cos(double x); |
| | | extern DECLSPEC float SDLCALL SDL_cosf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_exp(double x); |
| | | extern DECLSPEC float SDLCALL SDL_expf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_fabs(double x); |
| | | extern DECLSPEC float SDLCALL SDL_fabsf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_floor(double x); |
| | |
| | | int flag, Uint32 key); |
| | | |
| | | /** |
| | | * \brief Returns whether the surface has a color key |
| | | * |
| | | * \return SDL_TRUE if the surface has a color key, or SDL_FALSE if the surface is NULL or has no color key |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); |
| | | |
| | | /** |
| | | * \brief Gets the color key (transparent pixel) in a blittable surface. |
| | | * |
| | | * \param surface The surface to update |
| | |
| | | #endif /* __WIN32__ */ |
| | | |
| | | |
| | | /* Platform specific functions for Linux */ |
| | | #ifdef __LINUX__ |
| | | |
| | | /** |
| | | \brief Sets the UNIX nice value for a thread, using setpriority() if possible, and RealtimeKit if available. |
| | | |
| | | \return 0 on success, or -1 on error. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); |
| | | |
| | | #endif /* __LINUX__ */ |
| | | |
| | | /* Platform specific functions for iOS */ |
| | | #if defined(__IPHONEOS__) && __IPHONEOS__ |
| | | |
| | |
| | | \brief Return true if the application is running on Android TV |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); |
| | | |
| | | /** |
| | | \brief Return true if the application is running on a Chromebook |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); |
| | | |
| | | /** |
| | | \brief Return true is the application is running on a Samsung DeX docking station |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); |
| | | |
| | | /** |
| | | \brief Trigger the Android system back button behavior. |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); |
| | | |
| | | /** |
| | | See the official Android developer guide for more information: |
| | |
| | | |
| | | #endif /* __WINRT__ */ |
| | | |
| | | /** |
| | | \brief Return true if the current device is a tablet. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| | | #ifdef __cplusplus |
| | | } |
| | |
| | | #include "SDL_video.h" |
| | | #include "SDL_version.h" |
| | | |
| | | #include "begin_code.h" |
| | | /* Set up for C function definitions, even when using C++ */ |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * \file SDL_syswm.h |
| | | * |
| | |
| | | #include "SDL_egl.h" |
| | | #endif |
| | | |
| | | #include "begin_code.h" |
| | | /* Set up for C function definitions, even when using C++ */ |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * These are the various supported windowing subsystems |
| | | */ |
| | |
| | | /** |
| | | * The SDL thread priority. |
| | | * |
| | | * \note On many systems you require special privileges to set high priority. |
| | | * \note On many systems you require special privileges to set high or time critical priority. |
| | | */ |
| | | typedef enum { |
| | | SDL_THREAD_PRIORITY_LOW, |
| | | SDL_THREAD_PRIORITY_NORMAL, |
| | | SDL_THREAD_PRIORITY_HIGH |
| | | SDL_THREAD_PRIORITY_HIGH, |
| | | SDL_THREAD_PRIORITY_TIME_CRITICAL |
| | | } SDL_ThreadPriority; |
| | | |
| | | /** |
| | |
| | | pfnSDL_CurrentBeginThread pfnBeginThread, |
| | | pfnSDL_CurrentEndThread pfnEndThread); |
| | | |
| | | extern DECLSPEC SDL_Thread *SDLCALL |
| | | SDL_CreateThreadWithStackSize(int (SDLCALL * fn) (void *), |
| | | const char *name, const size_t stacksize, void *data, |
| | | pfnSDL_CurrentBeginThread pfnBeginThread, |
| | | pfnSDL_CurrentEndThread pfnEndThread); |
| | | |
| | | |
| | | /** |
| | | * Create a thread. |
| | | */ |
| | | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API |
| | | #undef SDL_CreateThread |
| | | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) |
| | | #undef SDL_CreateThreadWithStackSize |
| | | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) |
| | | #else |
| | | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) |
| | | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthreadex, (pfnSDL_CurrentEndThread)_endthreadex) |
| | | #endif |
| | | |
| | | #elif defined(__OS2__) |
| | |
| | | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, |
| | | pfnSDL_CurrentBeginThread pfnBeginThread, |
| | | pfnSDL_CurrentEndThread pfnEndThread); |
| | | extern DECLSPEC SDL_Thread *SDLCALL |
| | | SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, |
| | | pfnSDL_CurrentBeginThread pfnBeginThread, |
| | | pfnSDL_CurrentEndThread pfnEndThread); |
| | | #if defined(SDL_CreateThread) && SDL_DYNAMIC_API |
| | | #undef SDL_CreateThread |
| | | #define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) |
| | | #undef SDL_CreateThreadWithStackSize |
| | | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) |
| | | #else |
| | | #define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) |
| | | #define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)_beginthread, (pfnSDL_CurrentEndThread)_endthread) |
| | | #endif |
| | | |
| | | #else |
| | | |
| | | /** |
| | | * Create a thread with a default stack size. |
| | | * |
| | | * This is equivalent to calling: |
| | | * SDL_CreateThreadWithStackSize(fn, name, 0, data); |
| | | */ |
| | | extern DECLSPEC SDL_Thread *SDLCALL |
| | | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); |
| | | |
| | | /** |
| | | * Create a thread. |
| | |
| | | * If a system imposes requirements, SDL will try to munge the string for |
| | | * it (truncate, etc), but the original string contents will be available |
| | | * from SDL_GetThreadName(). |
| | | * |
| | | * The size (in bytes) of the new stack can be specified. Zero means "use |
| | | * the system default" which might be wildly different between platforms |
| | | * (x86 Linux generally defaults to eight megabytes, an embedded device |
| | | * might be a few kilobytes instead). |
| | | * |
| | | * In SDL 2.1, stacksize will be folded into the original SDL_CreateThread |
| | | * function. |
| | | */ |
| | | extern DECLSPEC SDL_Thread *SDLCALL |
| | | SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); |
| | | SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); |
| | | |
| | | #endif |
| | | |
| | |
| | | */ |
| | | #define SDL_MAJOR_VERSION 2 |
| | | #define SDL_MINOR_VERSION 0 |
| | | #define SDL_PATCHLEVEL 8 |
| | | #define SDL_PATCHLEVEL 9 |
| | | |
| | | /** |
| | | * \brief Macro to determine SDL version program was compiled against. |
| | |
| | | } SDL_WindowEventID; |
| | | |
| | | /** |
| | | * \brief Event subtype for display events |
| | | */ |
| | | typedef enum |
| | | { |
| | | SDL_DISPLAYEVENT_NONE, /**< Never used */ |
| | | SDL_DISPLAYEVENT_ORIENTATION /**< Display orientation has changed to data1 */ |
| | | } SDL_DisplayEventID; |
| | | |
| | | typedef enum |
| | | { |
| | | SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ |
| | | SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ |
| | | SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ |
| | | SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ |
| | | SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ |
| | | } SDL_DisplayOrientation; |
| | | |
| | | /** |
| | | * \brief An opaque handle to an OpenGL context. |
| | | */ |
| | | typedef void *SDL_GLContext; |
| | |
| | | extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); |
| | | |
| | | /** |
| | | * \brief Get the dots/pixels-per-inch for a display |
| | | * |
| | | * \note Diagonal, horizontal and vertical DPI can all be optionally |
| | | * returned if the parameter is non-NULL. |
| | | * |
| | | * \return 0 on success, or -1 if no DPI information is available or the index is out of range. |
| | | * |
| | | * \sa SDL_GetNumVideoDisplays() |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); |
| | | |
| | | /** |
| | | * \brief Get the usable desktop area represented by a display, with the |
| | | * primary display located at 0,0 |
| | | * |
| | |
| | | extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); |
| | | |
| | | /** |
| | | * \brief Get the dots/pixels-per-inch for a display |
| | | * |
| | | * \note Diagonal, horizontal and vertical DPI can all be optionally |
| | | * returned if the parameter is non-NULL. |
| | | * |
| | | * \return 0 on success, or -1 if no DPI information is available or the index is out of range. |
| | | * |
| | | * \sa SDL_GetNumVideoDisplays() |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); |
| | | |
| | | /** |
| | | * \brief Get the orientation of a display |
| | | * |
| | | * \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available. |
| | | * |
| | | * \sa SDL_GetNumVideoDisplays() |
| | | */ |
| | | extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); |
| | | |
| | | /** |
| | | * \brief Returns the number of available display modes. |
| | | * |
| | | * \sa SDL_GetDisplayMode() |
| | |
| | | * \brief Get the names of the Vulkan instance extensions needed to create |
| | | * a surface with \c SDL_Vulkan_CreateSurface(). |
| | | * |
| | | * \param [in] window Window for which the required Vulkan instance |
| | | * \param [in] \c NULL or window Window for which the required Vulkan instance |
| | | * extensions should be retrieved |
| | | * \param [in,out] count pointer to an \c unsigned related to the number of |
| | | * \param [in,out] pCount pointer to an \c unsigned related to the number of |
| | | * required Vulkan instance extensions |
| | | * \param [out] names \c NULL or a pointer to an array to be filled with the |
| | | * \param [out] pNames \c NULL or a pointer to an array to be filled with the |
| | | * required Vulkan instance extensions |
| | | * |
| | | * \return \c SDL_TRUE on success, \c SDL_FALSE on error. |
| | |
| | | * is smaller than the number of required extensions, \c SDL_FALSE will be |
| | | * returned instead of \c SDL_TRUE, to indicate that not all the required |
| | | * extensions were returned. |
| | | * |
| | | * \note If \c window is not NULL, it will be checked against its creation |
| | | * flags to ensure that the Vulkan flag is present. This parameter |
| | | * will be removed in a future major release. |
| | | * |
| | | * \note The returned list of extensions will contain \c VK_KHR_surface |
| | | * and zero or more platform specific extensions |
| | |
| | | * \note The extension names queried here must be enabled when calling |
| | | * VkCreateInstance, otherwise surface creation will fail. |
| | | * |
| | | * \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag. |
| | | * \note \c window should have been created with the \c SDL_WINDOW_VULKAN flag |
| | | * or be \c NULL |
| | | * |
| | | * \code |
| | | * unsigned int count; |
| | | * // get count of required extensions |
| | | * if(!SDL_Vulkan_GetInstanceExtensions(window, &count, NULL)) |
| | | * if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, NULL)) |
| | | * handle_error(); |
| | | * |
| | | * static const char *const additionalExtensions[] = |
| | |
| | | * handle_error(); |
| | | * |
| | | * // get names of required extensions |
| | | * if(!SDL_Vulkan_GetInstanceExtensions(window, &count, names)) |
| | | * if(!SDL_Vulkan_GetInstanceExtensions(NULL, &count, names)) |
| | | * handle_error(); |
| | | * |
| | | * // copy additional extensions after required extensions |