bump SDL2 includes to 2.0.14
28 files modified
2 files added
| | |
| | | set(PACKAGE_VERSION "2.0.12") |
| | | set(PACKAGE_VERSION "2.0.14") |
| | | |
| | | # Check whether the requested PACKAGE_FIND_VERSION is compatible |
| | | if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") |
| | |
| | | #include "SDL_timer.h" |
| | | #include "SDL_version.h" |
| | | #include "SDL_video.h" |
| | | #include "SDL_locale.h" |
| | | #include "SDL_misc.h" |
| | | |
| | | #include "begin_code.h" |
| | | /* Set up for C function definitions, even when using C++ */ |
| | |
| | | #define SDL_TriggerBreakpoint() __debugbreak() |
| | | #elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) |
| | | #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) |
| | | #elif ( defined(__APPLE__) && defined(__arm64__) ) /* this might work on other ARM targets, but this is a known quantity... */ |
| | | #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) |
| | | #elif defined(__386__) && defined(__WATCOMC__) |
| | | #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } |
| | | #elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) |
| | |
| | | #define HAVE_SQRTF 1 |
| | | #define HAVE_TAN 1 |
| | | #define HAVE_TANF 1 |
| | | #define HAVE_TRUNC 1 |
| | | #define HAVE_TRUNCF 1 |
| | | #define HAVE_SIGACTION 1 |
| | | #define HAVE_SETJMP 1 |
| | | #define HAVE_NANOSLEEP 1 |
| | |
| | | /* Enable various input drivers */ |
| | | #define SDL_JOYSTICK_ANDROID 1 |
| | | #define SDL_JOYSTICK_HIDAPI 1 |
| | | #define SDL_JOYSTICK_VIRTUAL 1 |
| | | #define SDL_HAPTIC_ANDROID 1 |
| | | |
| | | /* Enable sensor driver */ |
| | |
| | | #define HAVE_SQRTF 1 |
| | | #define HAVE_TAN 1 |
| | | #define HAVE_TANF 1 |
| | | #define HAVE_TRUNC 1 |
| | | #define HAVE_TRUNCF 1 |
| | | #define HAVE_SIGACTION 1 |
| | | #define HAVE_SETJMP 1 |
| | | #define HAVE_NANOSLEEP 1 |
| | |
| | | #define SDL_AUDIO_DRIVER_DUMMY 1 |
| | | |
| | | /* Enable various input drivers */ |
| | | #define SDL_JOYSTICK_IOKIT 1 |
| | | #define SDL_JOYSTICK_HIDAPI 1 |
| | | #define SDL_JOYSTICK_IOKIT 1 |
| | | #define SDL_JOYSTICK_VIRTUAL 1 |
| | | #define SDL_HAPTIC_IOKIT 1 |
| | | |
| | | /* The MFI controller support requires ARC Objective C runtime */ |
| | | #if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) |
| | | #define SDL_JOYSTICK_MFI 1 |
| | | #endif |
| | | |
| | | /* Enable the dummy sensor driver */ |
| | | #define SDL_SENSOR_DUMMY 1 |
| | |
| | | #endif |
| | | |
| | | /* Metal only supported on 64-bit architectures with 10.11+ */ |
| | | #if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) |
| | | #if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) |
| | | #define SDL_PLATFORM_SUPPORTS_METAL 1 |
| | | #else |
| | | #define SDL_PLATFORM_SUPPORTS_METAL 0 |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2018 Sam Lantinga <slouken@libsdl.org> |
| | | Copyright (C) 1997-2020 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 |
| | |
| | | #define HAVE_XINPUT_H 1 |
| | | #define HAVE_MMDEVICEAPI_H 1 |
| | | #define HAVE_AUDIOCLIENT_H 1 |
| | | #define HAVE_ENDPOINTVOLUME_H 1 |
| | | #define HAVE_SENSORSAPI_H |
| | | |
| | | /* This is disabled by default to avoid C runtime dependencies and manifest requirements */ |
| | | #ifdef HAVE_LIBC |
| | |
| | | #define HAVE_STRCHR 1 |
| | | #define HAVE_STRRCHR 1 |
| | | #define HAVE_STRSTR 1 |
| | | /* #undef HAVE_STRTOK_R */ |
| | | #if defined(_MSC_VER) |
| | | #define HAVE_STRTOK_S 1 |
| | | #endif |
| | | /* These functions have security warnings, so we won't use them */ |
| | | /* #undef HAVE__LTOA */ |
| | | /* #undef HAVE__ULTOA */ |
| | |
| | | #define HAVE_STRNCMP 1 |
| | | #define HAVE__STRICMP 1 |
| | | #define HAVE__STRNICMP 1 |
| | | #define HAVE__WCSICMP 1 |
| | | #define HAVE__WCSNICMP 1 |
| | | #define HAVE_ACOS 1 |
| | | #define HAVE_ACOSF 1 |
| | | #define HAVE_ASIN 1 |
| | |
| | | #define HAVE_VSSCANF 1 |
| | | #define HAVE_SCALBN 1 |
| | | #define HAVE_SCALBNF 1 |
| | | #define HAVE_TRUNC 1 |
| | | #define HAVE_TRUNCF 1 |
| | | #endif |
| | | /* This function is available with at least the VC++ 2008 C runtime library */ |
| | | #if _MSC_VER >= 1400 |
| | |
| | | #define HAVE_STDDEF_H 1 |
| | | #endif |
| | | |
| | | /* Check to see if we have Windows 10 build environment */ |
| | | #if _MSC_VER >= 1911 /* Visual Studio 15.3 */ |
| | | #include <sdkddkver.h> |
| | | #if _WIN32_WINNT >= 0x0601 /* Windows 7 */ |
| | | #define SDL_WINDOWS7_SDK |
| | | #endif |
| | | #if _WIN32_WINNT >= 0x0602 /* Windows 8 */ |
| | | #define SDL_WINDOWS8_SDK |
| | | #endif |
| | | #if _WIN32_WINNT >= 0x0A00 /* Windows 10 */ |
| | | #define SDL_WINDOWS10_SDK |
| | | #endif |
| | | #endif /* _MSC_VER >= 1911 */ |
| | | |
| | | /* Enable various audio drivers */ |
| | | #define SDL_AUDIO_DRIVER_WASAPI 1 |
| | | #define SDL_AUDIO_DRIVER_DSOUND 1 |
| | |
| | | |
| | | /* Enable various input drivers */ |
| | | #define SDL_JOYSTICK_DINPUT 1 |
| | | #define SDL_JOYSTICK_XINPUT 1 |
| | | #define SDL_JOYSTICK_HIDAPI 1 |
| | | #ifndef __WINRT__ |
| | | #define SDL_JOYSTICK_RAWINPUT 1 |
| | | #endif |
| | | #define SDL_JOYSTICK_VIRTUAL 1 |
| | | #ifdef SDL_WINDOWS10_SDK |
| | | #define SDL_JOYSTICK_WGI 1 |
| | | #endif |
| | | #define SDL_JOYSTICK_XINPUT 1 |
| | | #define SDL_HAPTIC_DINPUT 1 |
| | | #define SDL_HAPTIC_XINPUT 1 |
| | | |
| | | /* Enable the dummy sensor driver */ |
| | | #define SDL_SENSOR_DUMMY 1 |
| | | /* Enable the sensor driver */ |
| | | #define SDL_SENSOR_WINDOWS 1 |
| | | |
| | | /* Enable various shared object loading systems */ |
| | | #define SDL_LOADSO_WINDOWS 1 |
| | |
| | | #ifndef SDL_VIDEO_RENDER_D3D |
| | | #define SDL_VIDEO_RENDER_D3D 1 |
| | | #endif |
| | | #ifndef SDL_VIDEO_RENDER_D3D11 |
| | | #define SDL_VIDEO_RENDER_D3D11 0 |
| | | #ifdef SDL_WINDOWS7_SDK |
| | | #define SDL_VIDEO_RENDER_D3D11 1 |
| | | #endif |
| | | |
| | | /* Enable OpenGL support */ |
| | |
| | | #endif |
| | | |
| | | #endif /* SDL_config_windows_h_ */ |
| | | |
| | | /* vi: set ts=4 sw=4 expandtab: */ |
| | |
| | | * \return Pointer to newly-allocated block, NULL if out of memory. |
| | | * |
| | | * \sa SDL_SIMDAlignment |
| | | * \sa SDL_SIMDRealloc |
| | | * \sa SDL_SIMDFree |
| | | */ |
| | | extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); |
| | | |
| | | /** |
| | | * \brief Reallocate memory obtained from SDL_SIMDAlloc |
| | | * |
| | | * It is not valid to use this function on a pointer from anything but |
| | | * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, |
| | | * SDL_malloc, memalign, new[], etc. |
| | | * |
| | | * \param mem The pointer obtained from SDL_SIMDAlloc. This function also |
| | | * accepts NULL, at which point this function is the same as |
| | | * calling SDL_realloc with a NULL pointer. |
| | | * \param len The length, in bytes, of the block to allocated. The actual |
| | | * allocated block might be larger due to padding, etc. Passing 0 |
| | | * will return a non-NULL pointer, assuming the system isn't out of |
| | | * memory. |
| | | * \return Pointer to newly-reallocated block, NULL if out of memory. |
| | | * |
| | | * \sa SDL_SIMDAlignment |
| | | * \sa SDL_SIMDAlloc |
| | | * \sa SDL_SIMDFree |
| | | */ |
| | | extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); |
| | | |
| | | /** |
| | | * \brief Deallocate memory obtained from SDL_SIMDAlloc |
| | |
| | | * However, SDL_SIMDFree(NULL) is a legal no-op. |
| | | * |
| | | * \sa SDL_SIMDAlloc |
| | | * \sa SDL_SIMDRealloc |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); |
| | | |
| | |
| | | #endif |
| | | |
| | | /* Public functions */ |
| | | /* SDL_SetError() unconditionally returns -1. */ |
| | | |
| | | |
| | | /** |
| | | * \brief Set the error message for the current thread |
| | | * |
| | | * \return -1, there is no error handling for this function |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); |
| | | |
| | | /** |
| | | * \brief Get the last error message that was set |
| | | * |
| | | * SDL API functions may set error messages and then succeed, so you should |
| | | * only use the error value if a function fails. |
| | | * |
| | | * This returns a pointer to a static buffer for convenience and should not |
| | | * be called by multiple threads simultaneously. |
| | | * |
| | | * \return a pointer to the last error message that was set |
| | | */ |
| | | extern DECLSPEC const char *SDLCALL SDL_GetError(void); |
| | | |
| | | /** |
| | | * \brief Get the last error message that was set for the current thread |
| | | * |
| | | * SDL API functions may set error messages and then succeed, so you should |
| | | * only use the error value if a function fails. |
| | | * |
| | | * \param errstr A buffer to fill with the last error message that was set |
| | | * for the current thread |
| | | * \param maxlen The size of the buffer pointed to by the errstr parameter |
| | | * |
| | | * \return errstr |
| | | */ |
| | | extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); |
| | | |
| | | /** |
| | | * \brief Clear the error message for the current thread |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_ClearError(void); |
| | | |
| | | /** |
| | |
| | | Called on Android in onResume() |
| | | */ |
| | | |
| | | SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ |
| | | |
| | | /* Display events */ |
| | | SDL_DISPLAYEVENT = 0x150, /**< Display state change */ |
| | | |
| | |
| | | SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ |
| | | SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ |
| | | SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ |
| | | SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ |
| | | SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ |
| | | SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ |
| | | SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ |
| | | |
| | | /* Touch events */ |
| | | SDL_FINGERDOWN = 0x700, |
| | |
| | | } SDL_ControllerDeviceEvent; |
| | | |
| | | /** |
| | | * \brief Game controller touchpad event structure (event.ctouchpad.*) |
| | | */ |
| | | typedef struct SDL_ControllerTouchpadEvent |
| | | { |
| | | Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ |
| | | Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ |
| | | SDL_JoystickID which; /**< The joystick instance id */ |
| | | Sint32 touchpad; /**< The index of the touchpad */ |
| | | Sint32 finger; /**< The index of the finger on the touchpad */ |
| | | float x; /**< Normalized in the range 0...1 with 0 being on the left */ |
| | | float y; /**< Normalized in the range 0...1 with 0 being at the top */ |
| | | float pressure; /**< Normalized in the range 0...1 */ |
| | | } SDL_ControllerTouchpadEvent; |
| | | |
| | | /** |
| | | * \brief Game controller sensor event structure (event.csensor.*) |
| | | */ |
| | | typedef struct SDL_ControllerSensorEvent |
| | | { |
| | | Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ |
| | | Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ |
| | | SDL_JoystickID which; /**< The joystick instance id */ |
| | | Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ |
| | | float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ |
| | | } SDL_ControllerSensorEvent; |
| | | |
| | | /** |
| | | * \brief Audio device event structure (event.adevice.*) |
| | | */ |
| | | typedef struct SDL_AudioDeviceEvent |
| | |
| | | SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ |
| | | SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ |
| | | SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ |
| | | SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ |
| | | SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ |
| | | SDL_AudioDeviceEvent adevice; /**< Audio device event data */ |
| | | SDL_SensorEvent sensor; /**< Sensor event data */ |
| | | SDL_QuitEvent quit; /**< Quit request event data */ |
| | |
| | | #include "SDL_stdinc.h" |
| | | #include "SDL_error.h" |
| | | #include "SDL_rwops.h" |
| | | #include "SDL_sensor.h" |
| | | #include "SDL_joystick.h" |
| | | |
| | | #include "begin_code.h" |
| | |
| | | SDL_CONTROLLER_TYPE_XBOXONE, |
| | | SDL_CONTROLLER_TYPE_PS3, |
| | | SDL_CONTROLLER_TYPE_PS4, |
| | | SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO |
| | | SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, |
| | | SDL_CONTROLLER_TYPE_VIRTUAL, |
| | | SDL_CONTROLLER_TYPE_PS5 |
| | | } SDL_GameControllerType; |
| | | |
| | | typedef enum |
| | |
| | | extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController * gamecontroller); |
| | | |
| | | /** |
| | | * Get the serial number of an opened controller, if available. |
| | | * |
| | | * Returns the serial number of the controller, or NULL if it is not available. |
| | | */ |
| | | extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); |
| | | |
| | | /** |
| | | * Returns SDL_TRUE if the controller has been opened and currently connected, |
| | | * or SDL_FALSE if it has not. |
| | | */ |
| | |
| | | SDL_GameControllerAxis axis); |
| | | |
| | | /** |
| | | * Return whether a game controller has a given axis |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL |
| | | SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); |
| | | |
| | | /** |
| | | * Get the current state of an axis control on a game controller. |
| | | * |
| | | * The state is a value ranging from -32768 to 32767 (except for the triggers, |
| | |
| | | * The axis indices start at index 0. |
| | | */ |
| | | extern DECLSPEC Sint16 SDLCALL |
| | | SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, |
| | | SDL_GameControllerAxis axis); |
| | | SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); |
| | | |
| | | /** |
| | | * The list of buttons available from a controller |
| | |
| | | SDL_CONTROLLER_BUTTON_DPAD_DOWN, |
| | | SDL_CONTROLLER_BUTTON_DPAD_LEFT, |
| | | SDL_CONTROLLER_BUTTON_DPAD_RIGHT, |
| | | SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button */ |
| | | SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 */ |
| | | SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 */ |
| | | SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 */ |
| | | SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 */ |
| | | SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ |
| | | SDL_CONTROLLER_BUTTON_MAX |
| | | } SDL_GameControllerButton; |
| | | |
| | |
| | | SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, |
| | | SDL_GameControllerButton button); |
| | | |
| | | /** |
| | | * Return whether a game controller has a given button |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, |
| | | SDL_GameControllerButton button); |
| | | |
| | | /** |
| | | * Get the current state of a button on a game controller. |
| | |
| | | SDL_GameControllerButton button); |
| | | |
| | | /** |
| | | * Trigger a rumble effect |
| | | * Get the number of touchpads on a game controller. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); |
| | | |
| | | /** |
| | | * Get the number of supported simultaneous fingers on a touchpad on a game controller. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); |
| | | |
| | | /** |
| | | * Get the current state of a finger on a touchpad on a game controller. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); |
| | | |
| | | /** |
| | | * Return whether a game controller has a particular sensor. |
| | | * |
| | | * \param gamecontroller The controller to query |
| | | * \param type The type of sensor to query |
| | | * |
| | | * \return SDL_TRUE if the sensor exists, SDL_FALSE otherwise. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); |
| | | |
| | | /** |
| | | * Set whether data reporting for a game controller sensor is enabled |
| | | * |
| | | * \param gamecontroller The controller to update |
| | | * \param type The type of sensor to enable/disable |
| | | * \param enabled Whether data reporting should be enabled |
| | | * |
| | | * \return 0 or -1 if an error occurred. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); |
| | | |
| | | /** |
| | | * Query whether sensor data reporting is enabled for a game controller |
| | | * |
| | | * \param gamecontroller The controller to query |
| | | * \param type The type of sensor to query |
| | | * |
| | | * \return SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); |
| | | |
| | | /** |
| | | * Get the current state of a game controller sensor. |
| | | * |
| | | * The number of values and interpretation of the data is sensor dependent. |
| | | * See SDL_sensor.h for the details for each type of sensor. |
| | | * |
| | | * \param gamecontroller The controller to query |
| | | * \param type The type of 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_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); |
| | | |
| | | /** |
| | | * Start 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 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 |
| | | * \return 0, or -1 if rumble isn't supported on this controller |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Start a rumble effect in the game controller's triggers |
| | | * Each call to this function cancels any previous trigger rumble effect, and calling it with 0 intensity stops any rumbling. |
| | | * |
| | | * \param gamecontroller The controller to vibrate |
| | | * \param left_rumble The intensity of the left trigger rumble motor, from 0 to 0xFFFF |
| | | * \param right_rumble The intensity of the right trigger 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 controller |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Return whether a controller has an LED |
| | | * |
| | | * \param gamecontroller The controller to query |
| | | * |
| | | * \return SDL_TRUE, or SDL_FALSE if this controller does not have a modifiable LED |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); |
| | | |
| | | /** |
| | | * Update a controller's LED color. |
| | | * |
| | | * \param gamecontroller The controller to update |
| | | * \param red The intensity of the red LED |
| | | * \param green The intensity of the green LED |
| | | * \param blue The intensity of the blue LED |
| | | * |
| | | * \return 0, or -1 if this controller does not have a modifiable LED |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); |
| | | |
| | | /** |
| | | * Close a controller previously opened with SDL_GameControllerOpen(). |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); |
| | |
| | | */ |
| | | #define SDL_HAPTIC_SPHERICAL 2 |
| | | |
| | | /** |
| | | * \brief Use this value to play an effect on the steering wheel axis. This |
| | | * provides better compatibility across platforms and devices as SDL will guess |
| | | * the correct axis. |
| | | * \sa SDL_HapticDirection |
| | | */ |
| | | #define SDL_HAPTIC_STEERING_AXIS 3 |
| | | |
| | | /* @} *//* Direction encodings */ |
| | | |
| | | /* @} *//* Haptic features */ |
| | |
| | | * \sa SDL_HAPTIC_POLAR |
| | | * \sa SDL_HAPTIC_CARTESIAN |
| | | * \sa SDL_HAPTIC_SPHERICAL |
| | | * \sa SDL_HAPTIC_STEERING_AXIS |
| | | * \sa SDL_HapticEffect |
| | | * \sa SDL_HapticNumAxes |
| | | */ |
| | |
| | | #define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether relative mouse motion is affected by renderer scaling |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - Relative motion is unaffected by DPI or renderer's logical size |
| | | * "1" - Relative motion is scaled according to DPI scaling and logical size |
| | | * |
| | | * By default relative mouse deltas are affected by DPI and renderer scaling |
| | | */ |
| | | #define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether relative mouse mode is implemented using mouse warping |
| | | * |
| | | * This variable can be set to the following values: |
| | |
| | | #define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" |
| | | |
| | | /** |
| | | * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to true. |
| | | * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. |
| | | * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're |
| | | * seeing if "true" causes more problems than it solves in modern times. |
| | | * |
| | | */ |
| | | #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" |
| | |
| | | * XboxOne |
| | | * PS3 |
| | | * PS4 |
| | | * PS5 |
| | | * SwitchPro |
| | | * |
| | | * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) |
| | |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for PS5 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_PS5 "SDL_JOYSTICK_HIDAPI_PS5" |
| | | |
| | | /** |
| | | * \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" - HIDAPI driver is not used |
| | | * "1" - HIDAPI driver is used |
| | | * |
| | | * The default is the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for XBox controllers on Windows should pull correlated |
| | | * data from XInput. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - HIDAPI Xbox driver will only use HIDAPI data |
| | | * "1" - HIDAPI Xbox driver will also pull data from XInput, providing better trigger axes, guide button |
| | | * presses, and rumble support |
| | | * |
| | | * The default is "1". This hint applies to any joysticks opened after setting the hint. |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT "SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. |
| | |
| | | */ |
| | | #define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - RAWINPUT drivers are not used |
| | | * "1" - RAWINPUT drivers are used (the default) |
| | | * |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether a separate thread should be used |
| | | * for handling joystick detection and raw input messages on Windows |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - A separate thread is not used (the default) |
| | | * "1" - A separate thread is used for handling raw input messages |
| | | * |
| | | */ |
| | | #define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" |
| | | |
| | | /** |
| | | * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - Return unfiltered joystick axis values (the default) |
| | | * "1" - Return axis values with deadzones taken into account |
| | | */ |
| | | #define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" |
| | | |
| | | /** |
| | | * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. |
| | |
| | | * SDL_CreateThread(). |
| | | */ |
| | | #define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" |
| | | |
| | | /** |
| | | * \brief A string specifying additional information to use with SDL_SetThreadPriority. |
| | | * |
| | | * By default SDL_SetThreadPriority will make appropriate system changes in order to |
| | | * apply a thread priority. For example on systems using pthreads the scheduler policy |
| | | * is changed automatically to a policy that works well with a given priority. |
| | | * Code which has specific requirements can override SDL's default behavior with this hint. |
| | | * |
| | | * pthread hint values are "current", "other", "fifo" and "rr". |
| | | * Currently no other platform hint values are defined but may be in the future. |
| | | * |
| | | * \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro |
| | | * configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME |
| | | * after calling SDL_SetThreadPriority(). |
| | | */ |
| | | #define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" |
| | | |
| | | /** |
| | | * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. |
| | | * |
| | | * On some platforms, like Linux, a realtime priority thread may be subject to restrictions |
| | | * that require special handling by the application. This hint exists to let SDL know that |
| | | * the app is prepared to handle said restrictions. |
| | | * |
| | | * On Linux, SDL will apply the following configuration to any thread that becomes realtime: |
| | | * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, |
| | | * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. |
| | | * * Exceeding this limit will result in the kernel sending SIGKILL to the app, |
| | | * * Refer to the man pages for more information. |
| | | * |
| | | * This variable can be set to the following values: |
| | | * "0" - default platform specific behaviour |
| | | * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy |
| | | */ |
| | | #define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" |
| | | |
| | | /** |
| | | * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) |
| | |
| | | #define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" |
| | | |
| | | /** |
| | | * \brief A variable to control whether SDL will pause audio in background |
| | | * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") |
| | | * |
| | | * The variable can be set to the following values: |
| | | * "0" - Non paused. |
| | | * "1" - Paused. (default) |
| | | * |
| | | * The value should be set before SDL is initialized. |
| | | */ |
| | | #define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" |
| | | |
| | | /** |
| | | * \brief A variable to control whether the return key on the soft keyboard |
| | | * should hide the soft keyboard on Android and iOS. |
| | | * |
| | |
| | | #define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" |
| | | |
| | | /** |
| | | * \brief Disable giving back control to the browser automatically |
| | | * when running with asyncify |
| | | * |
| | | * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations |
| | | * such as refreshing the screen or polling events. |
| | | * |
| | | * This hint only applies to the emscripten platform |
| | | * |
| | | * The variable can be set to the following values: |
| | | * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) |
| | | * "1" - Enable emscripten_sleep calls (the default) |
| | | */ |
| | | #define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" |
| | | |
| | | /** |
| | | * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. |
| | | * |
| | | * This hint only applies to Unix-like platforms. |
| | | * This hint only applies to Unix-like platforms, and should set before |
| | | * any calls to SDL_Init() |
| | | * |
| | | * The variable can be set to the following values: |
| | | * "0" - SDL will install a SIGINT and SIGTERM handler, and when it |
| | |
| | | |
| | | |
| | | /** |
| | | * \brief A variable controlling whether SDL updates joystick state when getting input events |
| | | * |
| | | * This variable can be set to the following values: |
| | | * |
| | | * "0" - You'll call SDL_JoystickUpdate() manually |
| | | * "1" - SDL will automatically call SDL_JoystickUpdate() (default) |
| | | * |
| | | * This hint can be toggled on and off at runtime. |
| | | */ |
| | | #define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" |
| | | |
| | | |
| | | /** |
| | | * \brief A variable controlling whether SDL updates sensor state when getting input events |
| | | * |
| | | * This variable can be set to the following values: |
| | | * |
| | | * "0" - You'll call SDL_SensorUpdate() manually |
| | | * "1" - SDL will automatically call SDL_SensorUpdate() (default) |
| | | * |
| | | * This hint can be toggled on and off at runtime. |
| | | */ |
| | | #define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" |
| | | |
| | | |
| | | /** |
| | | * \brief A variable controlling whether SDL logs all events pushed onto its internal queue. |
| | | * |
| | | * This variable can be set to the following values: |
| | |
| | | */ |
| | | #define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" |
| | | |
| | | /* |
| | | /** |
| | | * \brief Override for SDL_GetDisplayUsableBounds() |
| | | * |
| | | * If set, this hint will override the expected results for |
| | |
| | | #define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" |
| | | |
| | | /** |
| | | * \brief Specify an application name for an audio device. |
| | | * |
| | | * Some audio backends (such as PulseAudio) allow you to describe your audio |
| | | * stream. Among other things, this description might show up in a system |
| | | * control panel that lets the user adjust the volume on specific audio |
| | | * streams instead of using one giant master volume slider. |
| | | * |
| | | * This hints lets you transmit that information to the OS. The contents of |
| | | * this hint are used while opening an audio device. You should use a string |
| | | * that describes your program ("My Game 2: The Revenge") |
| | | * |
| | | * Setting this to "" or leaving it unset will have SDL use a reasonable |
| | | * default: probably the application's name or "SDL Application" if SDL |
| | | * doesn't have any better information. |
| | | * |
| | | * On targets where this is not supported, this hint does nothing. |
| | | */ |
| | | #define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" |
| | | |
| | | /** |
| | | * \brief Specify an application name for an audio device. |
| | | * |
| | | * Some audio backends (such as PulseAudio) allow you to describe your audio |
| | | * stream. Among other things, this description might show up in a system |
| | | * control panel that lets the user adjust the volume on specific audio |
| | | * streams instead of using one giant master volume slider. |
| | | * |
| | | * This hints lets you transmit that information to the OS. The contents of |
| | | * this hint are used while opening an audio device. You should use a string |
| | | * that describes your what your program is playing ("audio stream" is |
| | | * probably sufficient in many cases, but this could be useful for something |
| | | * like "team chat" if you have a headset playing VoIP audio separately). |
| | | * |
| | | * Setting this to "" or leaving it unset will have SDL use a reasonable |
| | | * default: "audio stream" or something similar. |
| | | * |
| | | * On targets where this is not supported, this hint does nothing. |
| | | */ |
| | | #define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" |
| | | |
| | | |
| | | /** |
| | | * \brief Override for SDL_GetPreferredLocales() |
| | | * |
| | | * If set, this will be favored over anything the OS might report for the |
| | | * user's preferred locales. Changing this hint at runtime will not generate |
| | | * a SDL_LOCALECHANGED event (but if you can change the hint, you can push |
| | | * your own event, if you want). |
| | | * |
| | | * The format of this hint is a comma-separated list of language and locale, |
| | | * combined with an underscore, as is a common format: "en_GB". Locale is |
| | | * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" |
| | | */ |
| | | #define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" |
| | | |
| | | |
| | | /** |
| | | * \brief An enumeration of hint priorities |
| | | */ |
| | | typedef enum |
| | |
| | | SDL_JOYSTICK_POWER_MAX |
| | | } SDL_JoystickPowerLevel; |
| | | |
| | | /* Set max recognized G-force from accelerometer |
| | | See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed |
| | | */ |
| | | #define SDL_IPHONE_MAX_GFORCE 5.0 |
| | | |
| | | |
| | | /* Function prototypes */ |
| | | |
| | | /** |
| | |
| | | extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); |
| | | |
| | | /** |
| | | * Attaches a new virtual joystick. |
| | | * Returns the joystick's device index, or -1 if an error occurred. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, |
| | | int naxes, |
| | | int nbuttons, |
| | | int nhats); |
| | | |
| | | /** |
| | | * Detaches a virtual joystick |
| | | * Returns 0 on success, or -1 if an error occurred. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); |
| | | |
| | | /** |
| | | * Indicates whether or not a virtual-joystick is at a given device index. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); |
| | | |
| | | /** |
| | | * Set values on an opened, virtual-joystick's controls. |
| | | * Please note that values set here will not be applied until the next |
| | | * call to SDL_JoystickUpdate, which can either be called directly, |
| | | * or can be called indirectly through various other SDL APIS, |
| | | * including, but not limited to the following: SDL_PollEvent, |
| | | * SDL_PumpEvents, SDL_WaitEventTimeout, SDL_WaitEvent. |
| | | * |
| | | * Returns 0 on success, -1 on error. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); |
| | | extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); |
| | | extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); |
| | | |
| | | /** |
| | | * Return the name for this currently opened joystick. |
| | | * If no name can be found, this function returns NULL. |
| | | */ |
| | |
| | | * If the product version isn't available this function returns 0. |
| | | */ |
| | | extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick * joystick); |
| | | |
| | | /** |
| | | * Get the serial number of an opened joystick, if available. |
| | | * |
| | | * Returns the serial number of the joystick, or NULL if it is not available. |
| | | */ |
| | | extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); |
| | | |
| | | /** |
| | | * Get the type of an opened joystick. |
| | |
| | | int button); |
| | | |
| | | /** |
| | | * Trigger a rumble effect |
| | | * Start 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 |
| | |
| | | extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick * joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Start a rumble effect in the joystick's triggers |
| | | * Each call to this function cancels any previous trigger rumble effect, and calling it with 0 intensity stops any rumbling. |
| | | * |
| | | * \param joystick The joystick to vibrate |
| | | * \param left_rumble The intensity of the left trigger rumble motor, from 0 to 0xFFFF |
| | | * \param right_rumble The intensity of the right trigger rumble motor, from 0 to 0xFFFF |
| | | * \param duration_ms The duration of the rumble effect, in milliseconds |
| | | * |
| | | * \return 0, or -1 if trigger rumble isn't supported on this joystick |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); |
| | | |
| | | /** |
| | | * Return whether a joystick has an LED |
| | | * |
| | | * \param joystick The joystick to query |
| | | * |
| | | * \return SDL_TRUE, or SDL_FALSE if this joystick does not have a modifiable LED |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); |
| | | |
| | | /** |
| | | * Update a joystick's LED color. |
| | | * |
| | | * \param joystick The joystick to update |
| | | * \param red The intensity of the red LED |
| | | * \param green The intensity of the green LED |
| | | * \param blue The intensity of the blue LED |
| | | * |
| | | * \return 0, or -1 if this joystick does not have a modifiable LED |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); |
| | | |
| | | /** |
| | | * Close a joystick previously opened with SDL_JoystickOpen(). |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick * joystick); |
| | |
| | | SDLK_GREATER = '>', |
| | | SDLK_QUESTION = '?', |
| | | SDLK_AT = '@', |
| | | |
| | | /* |
| | | Skip uppercase letters |
| | | */ |
| | | |
| | | SDLK_LEFTBRACKET = '[', |
| | | SDLK_BACKSLASH = '\\', |
| | | SDLK_RIGHTBRACKET = ']', |
| | |
| | | KMOD_NUM = 0x1000, |
| | | KMOD_CAPS = 0x2000, |
| | | KMOD_MODE = 0x4000, |
| | | KMOD_RESERVED = 0x8000 |
| | | } SDL_Keymod; |
| | | KMOD_RESERVED = 0x8000, |
| | | |
| | | #define KMOD_CTRL (KMOD_LCTRL|KMOD_RCTRL) |
| | | #define KMOD_SHIFT (KMOD_LSHIFT|KMOD_RSHIFT) |
| | | #define KMOD_ALT (KMOD_LALT|KMOD_RALT) |
| | | #define KMOD_GUI (KMOD_LGUI|KMOD_RGUI) |
| | | KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, |
| | | KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, |
| | | KMOD_ALT = KMOD_LALT | KMOD_RALT, |
| | | KMOD_GUI = KMOD_LGUI | KMOD_RGUI |
| | | } SDL_Keymod; |
| | | |
| | | #endif /* SDL_keycode_h_ */ |
| | | |
| New file |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2020 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_locale.h |
| | | * |
| | | * Include file for SDL locale services |
| | | */ |
| | | |
| | | #ifndef _SDL_locale_h |
| | | #define _SDL_locale_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 |
| | | |
| | | |
| | | typedef struct SDL_Locale |
| | | { |
| | | const char *language; /**< A language name, like "en" for English. */ |
| | | const char *country; /**< A country, like "US" for America. Can be NULL. */ |
| | | } SDL_Locale; |
| | | |
| | | /** |
| | | * \brief Report the user's preferred locale. |
| | | * |
| | | * This returns an array of SDL_Locale structs, the final item zeroed out. |
| | | * When the caller is done with this array, it should call SDL_free() on |
| | | * the returned value; all the memory involved is allocated in a single |
| | | * block, so a single SDL_free() will suffice. |
| | | * |
| | | * Returned language strings are in the format xx, where 'xx' is an ISO-639 |
| | | * language specifier (such as "en" for English, "de" for German, etc). |
| | | * Country strings are in the format YY, where "YY" is an ISO-3166 country |
| | | * code (such as "US" for the United States, "CA" for Canada, etc). Country |
| | | * might be NULL if there's no specific guidance on them (so you might get |
| | | * { "en", "US" } for American English, but { "en", NULL } means "English |
| | | * language, generically"). Language strings are never NULL, except to |
| | | * terminate the array. |
| | | * |
| | | * Please note that not all of these strings are 2 characters; some are |
| | | * three or more. |
| | | * |
| | | * The returned list of locales are in the order of the user's preference. |
| | | * For example, a German citizen that is fluent in US English and knows |
| | | * enough Japanese to navigate around Tokyo might have a list like: |
| | | * { "de", "en_US", "jp", NULL }. Someone from England might prefer British |
| | | * English (where "color" is spelled "colour", etc), but will settle for |
| | | * anything like it: { "en_GB", "en", NULL }. |
| | | * |
| | | * This function returns NULL on error, including when the platform does not |
| | | * supply this information at all. |
| | | * |
| | | * This might be a "slow" call that has to query the operating system. It's |
| | | * best to ask for this once and save the results. However, this list can |
| | | * change, usually because the user has changed a system preference outside |
| | | * of your program; SDL will send an SDL_LOCALECHANGED event in this case, |
| | | * if possible, and you can call this function again to get an updated copy |
| | | * of preferred locales. |
| | | * |
| | | * \return array of locales, terminated with a locale with a NULL language |
| | | * field. Will return NULL on error. |
| | | */ |
| | | extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| | | #ifdef __cplusplus |
| | | /* *INDENT-OFF* */ |
| | | } |
| | | /* *INDENT-ON* */ |
| | | #endif |
| | | #include "close_code.h" |
| | | |
| | | #endif /* _SDL_locale_h */ |
| | | |
| | | /* vi: set ts=4 sw=4 expandtab: */ |
| | |
| | | * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on its |
| | | * own. It is up to user code to do that. |
| | | * |
| | | * The returned handle can be casted directly to a NSView or UIView, and the |
| | | * CAMetalLayer can be accessed from the view's 'layer' property. |
| | | * The returned handle can be casted directly to a NSView or UIView. |
| | | * To access the backing CAMetalLayer, call SDL_Metal_GetLayer(). |
| | | * |
| | | * \code |
| | | * SDL_MetalView metalview = SDL_Metal_CreateView(window); |
| | | * UIView *uiview = (__bridge UIView *)metalview; |
| | | * CAMetalLayer *metallayer = (CAMetalLayer *)uiview.layer; |
| | | * // [...] |
| | | * SDL_Metal_DestroyView(metalview); |
| | | * \endcode |
| | | * \note \a window must be created with the SDL_WINDOW_METAL flag. |
| | | * |
| | | * \sa SDL_Metal_DestroyView |
| | | * \sa SDL_Metal_GetLayer |
| | | */ |
| | | extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); |
| | | |
| | |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); |
| | | |
| | | /** |
| | | * \brief Get a pointer to the backing CAMetalLayer for the given view. |
| | | * |
| | | * \sa SDL_MetalCreateView |
| | | */ |
| | | extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); |
| | | |
| | | /** |
| | | * \brief Get the size of a window's underlying drawable in pixels (for use |
| | | * with setting viewport, scissor & etc). |
| | | * |
| | | * \param window SDL_Window from which the drawable size should be queried |
| | | * \param w Pointer to variable for storing the width in pixels, |
| | | * may be NULL |
| | | * \param h Pointer to variable for storing the height in pixels, |
| | | * may be NULL |
| | | * |
| | | * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI |
| | | * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a |
| | | * platform with high-DPI support (Apple calls this "Retina"), and not disabled |
| | | * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint. |
| | | * |
| | | * \note On macOS high-DPI support must be enabled for an application by |
| | | * setting NSHighResolutionCapable to true in its Info.plist. |
| | | * |
| | | * \sa SDL_GetWindowSize() |
| | | * \sa SDL_CreateWindow() |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, |
| | | int *h); |
| | | |
| | | /* @} *//* Metal support functions */ |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| New file |
| | |
| | | /* |
| | | Simple DirectMedia Layer |
| | | Copyright (C) 1997-2020 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_misc.h |
| | | * |
| | | * \brief Include file for SDL API functions that don't fit elsewhere. |
| | | */ |
| | | |
| | | #ifndef SDL_misc_h_ |
| | | #define SDL_misc_h_ |
| | | |
| | | #include "SDL_stdinc.h" |
| | | |
| | | #include "begin_code.h" |
| | | |
| | | /* Set up for C function definitions, even when using C++ */ |
| | | #ifdef __cplusplus |
| | | extern "C" { |
| | | #endif |
| | | |
| | | /** |
| | | * \brief Open an URL / URI in the browser or other |
| | | * |
| | | * Open a URL in a separate, system-provided application. How this works will |
| | | * vary wildly depending on the platform. This will likely launch what |
| | | * makes sense to handle a specific URL's protocol (a web browser for http://, |
| | | * etc), but it might also be able to launch file managers for directories |
| | | * and other things. |
| | | * |
| | | * What happens when you open a URL varies wildly as well: your game window |
| | | * may lose focus (and may or may not lose focus if your game was fullscreen |
| | | * or grabbing input at the time). On mobile devices, your app will likely |
| | | * move to the background or your process might be paused. Any given platform |
| | | * may or may not handle a given URL. |
| | | * |
| | | * If this is unimplemented (or simply unavailable) for a platform, this will |
| | | * fail with an error. A successful result does not mean the URL loaded, just |
| | | * that we launched something to handle it (or at least believe we did). |
| | | * |
| | | * All this to say: this function can be useful, but you should definitely |
| | | * test it on every platform you target. |
| | | * |
| | | * \param url A valid URL to open. |
| | | * \return 0 on success, or -1 on error. |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); |
| | | |
| | | /* Ends C function definitions when using C++ */ |
| | | #ifdef __cplusplus |
| | | } |
| | | #endif |
| | | #include "close_code.h" |
| | | |
| | | #endif /* SDL_misc_h_ */ |
| | | |
| | | /* vi: set ts=4 sw=4 expandtab: */ |
| | |
| | | SDL_PIXELFORMAT_RGB332 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, |
| | | SDL_PACKEDLAYOUT_332, 8, 1), |
| | | SDL_PIXELFORMAT_RGB444 = |
| | | SDL_PIXELFORMAT_XRGB4444 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, |
| | | SDL_PACKEDLAYOUT_4444, 12, 2), |
| | | SDL_PIXELFORMAT_BGR444 = |
| | | SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, |
| | | SDL_PIXELFORMAT_XBGR4444 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, |
| | | SDL_PACKEDLAYOUT_4444, 12, 2), |
| | | SDL_PIXELFORMAT_RGB555 = |
| | | SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, |
| | | SDL_PIXELFORMAT_XRGB1555 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, |
| | | SDL_PACKEDLAYOUT_1555, 15, 2), |
| | | SDL_PIXELFORMAT_BGR555 = |
| | | SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, |
| | | SDL_PIXELFORMAT_XBGR1555 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, |
| | | SDL_PACKEDLAYOUT_1555, 15, 2), |
| | | SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, |
| | | SDL_PIXELFORMAT_ARGB4444 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, |
| | | SDL_PACKEDLAYOUT_4444, 16, 2), |
| | |
| | | SDL_PIXELFORMAT_BGR24 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, |
| | | 24, 3), |
| | | SDL_PIXELFORMAT_RGB888 = |
| | | SDL_PIXELFORMAT_XRGB8888 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, |
| | | SDL_PACKEDLAYOUT_8888, 24, 4), |
| | | SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, |
| | | SDL_PIXELFORMAT_RGBX8888 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, |
| | | SDL_PACKEDLAYOUT_8888, 24, 4), |
| | | SDL_PIXELFORMAT_BGR888 = |
| | | SDL_PIXELFORMAT_XBGR8888 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, |
| | | SDL_PACKEDLAYOUT_8888, 24, 4), |
| | | SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, |
| | | SDL_PIXELFORMAT_BGRX8888 = |
| | | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, |
| | | SDL_PACKEDLAYOUT_8888, 24, 4), |
| | |
| | | #if defined(__ANDROID__) |
| | | struct |
| | | { |
| | | void *fileNameRef; |
| | | void *inputStreamRef; |
| | | void *readableByteChannelRef; |
| | | void *readMethod; |
| | | void *assetFileDescriptorRef; |
| | | long position; |
| | | long size; |
| | | long offset; |
| | | int fd; |
| | | void *asset; |
| | | } androidio; |
| | | #elif defined(__WIN32__) |
| | | struct |
| | |
| | | * 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. |
| | | * second squared. This measurement includes the force of gravity, so |
| | | * a device at rest will have an value of SDL_STANDARD_GRAVITY away |
| | | * from the center of the earth. |
| | | * |
| | | * 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: |
| | | * For phones held in portrait mode and game controllers held in front of you, |
| | | * the axes are defined as follows: |
| | | * -X ... +X : left ... right |
| | | * -Y ... +Y : bottom ... top |
| | | * -Z ... +Z : farther ... closer |
| | |
| | | * 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 |
| | | * values[0]: Angular speed around the x axis (pitch) |
| | | * values[1]: Angular speed around the y axis (yaw) |
| | | * values[2]: Angular speed around the z axis (roll) |
| | | * |
| | | * For phones held in portrait mode, the axes are defined as follows: |
| | | * For phones held in portrait mode and game controllers held in front of you, |
| | | * 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. |
| | | * The axis data is not changed when the phone or controller is rotated. |
| | | * |
| | | * \sa SDL_GetDisplayOrientation() |
| | | */ |
| | |
| | | /* Function prototypes */ |
| | | |
| | | /** |
| | | * Locking for multi-threaded access to the sensor API |
| | | * |
| | | * If you are using the sensor API or handling events from multiple threads |
| | | * you should use these locking functions to protect access to the sensors. |
| | | * |
| | | * In particular, you are guaranteed that the sensor list won't change, so |
| | | * the API functions that take a sensor index will be valid, and sensor |
| | | * events will not be delivered. |
| | | */ |
| | | extern DECLSPEC void SDLCALL SDL_LockSensors(void); |
| | | extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); |
| | | |
| | | /** |
| | | * \brief Count the number of sensors attached to the system right now |
| | | */ |
| | | extern DECLSPEC int SDLCALL SDL_NumSensors(void); |
| | |
| | | |
| | | #include "SDL_config.h" |
| | | |
| | | #ifdef __APPLE__ |
| | | #ifndef _DARWIN_C_SOURCE |
| | | #define _DARWIN_C_SOURCE 1 /* for memset_pattern4() */ |
| | | #endif |
| | | #endif |
| | | |
| | | #ifdef HAVE_SYS_TYPES_H |
| | | #include <sys/types.h> |
| | | #endif |
| | |
| | | extern DECLSPEC int SDLCALL SDL_toupper(int x); |
| | | extern DECLSPEC int SDLCALL SDL_tolower(int x); |
| | | |
| | | extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); |
| | | |
| | | extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); |
| | | |
| | | #define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) |
| | |
| | | |
| | | extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); |
| | | extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); |
| | | extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); |
| | | extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); |
| | | |
| | | extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); |
| | | extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); |
| | |
| | | extern DECLSPEC float SDLCALL SDL_fabsf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_floor(double x); |
| | | extern DECLSPEC float SDLCALL SDL_floorf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_trunc(double x); |
| | | extern DECLSPEC float SDLCALL SDL_truncf(float x); |
| | | extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); |
| | | extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); |
| | | extern DECLSPEC double SDLCALL SDL_log(double x); |
| | |
| | | /* force builds using Clang's static analysis tools to use literal C runtime |
| | | here, since there are possibly tests that are ineffective otherwise. */ |
| | | #if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) |
| | | |
| | | /* The analyzer knows about strlcpy even when the system doesn't provide it */ |
| | | #ifndef HAVE_STRLCPY |
| | | size_t strlcpy(char* dst, const char* src, size_t size); |
| | | #endif |
| | | |
| | | /* The analyzer knows about strlcat even when the system doesn't provide it */ |
| | | #ifndef HAVE_STRLCAT |
| | | size_t strlcat(char* dst, const char* src, size_t size); |
| | | #endif |
| | | |
| | | #define SDL_malloc malloc |
| | | #define SDL_calloc calloc |
| | | #define SDL_realloc realloc |
| | |
| | | #define SDL_memcpy memcpy |
| | | #define SDL_memmove memmove |
| | | #define SDL_memcmp memcmp |
| | | #define SDL_strlen strlen |
| | | #define SDL_strlcpy strlcpy |
| | | #define SDL_strlcat strlcat |
| | | #define SDL_strlen strlen |
| | | #define SDL_wcslen wcslen |
| | | #define SDL_wcslcpy wcslcpy |
| | | #define SDL_wcslcat wcslcat |
| | | #define SDL_strdup strdup |
| | | #define SDL_wcsdup wcsdup |
| | | #define SDL_strchr strchr |
| | | #define SDL_strrchr strrchr |
| | | #define SDL_strstr strstr |
| | | #define SDL_wcsstr wcsstr |
| | | #define SDL_strtokr strtok_r |
| | | #define SDL_strcmp strcmp |
| | | #define SDL_wcscmp wcscmp |
| | | #define SDL_strncmp strncmp |
| | | #define SDL_wcsncmp wcsncmp |
| | | #define SDL_strcasecmp strcasecmp |
| | | #define SDL_strncasecmp strncasecmp |
| | | #define SDL_sscanf sscanf |
| | |
| | | |
| | | /** information needed for surfaces requiring locks */ |
| | | int locked; /**< Read-only */ |
| | | void *lock_data; /**< Read-only */ |
| | | |
| | | /** list of BlitMap that hold a reference to this surface */ |
| | | void *list_blitmap; /**< Private */ |
| | | |
| | | /** clipping information */ |
| | | SDL_Rect clip_rect; /**< Read-only */ |
| | |
| | | int flag); |
| | | |
| | | /** |
| | | * \brief Returns whether the surface is RLE enabled |
| | | * |
| | | * \return SDL_TRUE if the surface is RLE enabled, or SDL_FALSE if the surface is NULL or not RLE enabled |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); |
| | | |
| | | /** |
| | | * \brief Sets the color key (transparent pixel) in a blittable surface. |
| | | * |
| | | * \param surface The surface to update |
| | |
| | | /** |
| | | \brief Return API level of the current device |
| | | |
| | | API level 30: Android 11 |
| | | API level 29: Android 10 |
| | | API level 28: Android 9 |
| | | API level 27: Android 8.1 |
| | |
| | | */ |
| | | extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); |
| | | |
| | | /** |
| | | \brief Request permissions at runtime. |
| | | |
| | | This blocks the calling thread until the permission is granted or |
| | | denied. Returns SDL_TRUE if the permission was granted. |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); |
| | | |
| | | #endif /* __ANDROID__ */ |
| | | |
| | | /* Platform specific functions for WinRT */ |
| | |
| | | #if defined(SDL_VIDEO_DRIVER_VIVANTE) |
| | | #include "SDL_egl.h" |
| | | #endif |
| | | |
| | | #if defined(SDL_VIDEO_DRIVER_OS2) |
| | | #define INCL_WIN |
| | | #include <os2.h> |
| | | #endif |
| | | #endif /* SDL_PROTOTYPES_ONLY */ |
| | | |
| | | |
| | |
| | | int dummy; |
| | | /* No Vivante window events yet */ |
| | | } vivante; |
| | | #endif |
| | | #if defined(SDL_VIDEO_DRIVER_OS2) |
| | | struct |
| | | { |
| | | BOOL fFrame; /**< TRUE if hwnd is a frame window */ |
| | | HWND hwnd; /**< The window receiving the message */ |
| | | ULONG msg; /**< The message identifier */ |
| | | MPARAM mp1; /**< The first first message parameter */ |
| | | MPARAM mp2; /**< The second first message parameter */ |
| | | } os2; |
| | | #endif |
| | | /* Can't have an empty union */ |
| | | int dummy; |
| | |
| | | } android; |
| | | #endif |
| | | |
| | | #if defined(SDL_VIDEO_DRIVER_OS2) |
| | | struct |
| | | { |
| | | HWND hwnd; /**< The window handle */ |
| | | HWND hwndFrame; /**< The frame window handle */ |
| | | } os2; |
| | | #endif |
| | | |
| | | #if defined(SDL_VIDEO_DRIVER_VIVANTE) |
| | | struct |
| | | { |
| | |
| | | /** |
| | | * The SDL thread priority. |
| | | * |
| | | * SDL will make system changes as necessary in order to apply the thread priority. |
| | | * Code which attempts to control thread state related to priority should be aware |
| | | * that calling SDL_SetThreadPriority may alter such state. |
| | | * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. |
| | | * |
| | | * \note On many systems you require special privileges to set high or time critical priority. |
| | | */ |
| | | typedef enum { |
| | |
| | | */ |
| | | #define SDL_MAJOR_VERSION 2 |
| | | #define SDL_MINOR_VERSION 0 |
| | | #define SDL_PATCHLEVEL 12 |
| | | #define SDL_PATCHLEVEL 14 |
| | | |
| | | /** |
| | | * \brief Macro to determine SDL version program was compiled against. |
| | |
| | | SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ |
| | | SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ |
| | | SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ |
| | | SDL_WINDOW_VULKAN = 0x10000000 /**< window usable for Vulkan surface */ |
| | | SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ |
| | | SDL_WINDOW_METAL = 0x20000000 /**< window usable for Metal view */ |
| | | } SDL_WindowFlags; |
| | | |
| | | /** |
| | |
| | | typedef enum |
| | | { |
| | | SDL_DISPLAYEVENT_NONE, /**< Never used */ |
| | | SDL_DISPLAYEVENT_ORIENTATION /**< Display orientation has changed to data1 */ |
| | | SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ |
| | | SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ |
| | | SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */ |
| | | } SDL_DisplayEventID; |
| | | |
| | | typedef enum |
| | |
| | | * ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS, |
| | | * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, |
| | | * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED, |
| | | * ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN. |
| | | * ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN |
| | | * ::SDL_WINDOW_METAL. |
| | | * |
| | | * \return The created window, or NULL if window creation failed. |
| | | * |
| | |
| | | * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, |
| | | * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. |
| | | * |
| | | * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, |
| | | * SDL_CreateWindow() will fail. |
| | | * |
| | | * \note On non-Apple devices, SDL requires you to either not link to the |
| | | * Vulkan loader or link to a dynamic library version. This limitation |
| | | * may be removed in a future version of SDL. |
| | |
| | | * |
| | | * \sa SDL_Vulkan_CreateSurface() |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions( |
| | | SDL_Window *window, |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, |
| | | unsigned int *pCount, |
| | | const char **pNames); |
| | | |
| | |
| | | * |
| | | * \sa SDL_Vulkan_GetInstanceExtensions() |
| | | */ |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface( |
| | | SDL_Window *window, |
| | | extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, |
| | | VkInstance instance, |
| | | VkSurfaceKHR* surface); |
| | | |
| | |
| | | |
| | | /* Some compilers use a special export keyword */ |
| | | #ifndef DECLSPEC |
| | | # if defined(__WIN32__) || defined(__WINRT__) |
| | | # ifdef __BORLANDC__ |
| | | # ifdef BUILD_SDL |
| | | # define DECLSPEC |
| | | # else |
| | | # define DECLSPEC __declspec(dllimport) |
| | | # endif |
| | | # else |
| | | # if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) |
| | | # ifdef DLL_EXPORT |
| | | # define DECLSPEC __declspec(dllexport) |
| | | # else |
| | | # define DECLSPEC |
| | | # endif |
| | | # elif defined(__OS2__) |
| | | # ifdef BUILD_SDL |