cscg22-gearboy

CSCG 2022 Challenge 'Gearboy'
git clone https://git.sinitax.com/sinitax/cscg22-gearboy
Log | Files | Refs | sfeed.txt

SDL_system.h (10434B)


      1/*
      2  Simple DirectMedia Layer
      3  Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
      4
      5  This software is provided 'as-is', without any express or implied
      6  warranty.  In no event will the authors be held liable for any damages
      7  arising from the use of this software.
      8
      9  Permission is granted to anyone to use this software for any purpose,
     10  including commercial applications, and to alter it and redistribute it
     11  freely, subject to the following restrictions:
     12
     13  1. The origin of this software must not be misrepresented; you must not
     14     claim that you wrote the original software. If you use this software
     15     in a product, an acknowledgment in the product documentation would be
     16     appreciated but is not required.
     17  2. Altered source versions must be plainly marked as such, and must not be
     18     misrepresented as being the original software.
     19  3. This notice may not be removed or altered from any source distribution.
     20*/
     21
     22/**
     23 *  \file SDL_system.h
     24 *
     25 *  Include file for platform specific SDL API functions
     26 */
     27
     28#ifndef SDL_system_h_
     29#define SDL_system_h_
     30
     31#include "SDL_stdinc.h"
     32#include "SDL_keyboard.h"
     33#include "SDL_render.h"
     34#include "SDL_video.h"
     35
     36#include "begin_code.h"
     37/* Set up for C function definitions, even when using C++ */
     38#ifdef __cplusplus
     39extern "C" {
     40#endif
     41
     42
     43/* Platform specific functions for Windows */
     44#ifdef __WIN32__
     45	
     46/**
     47   \brief Set a function that is called for every windows message, before TranslateMessage()
     48*/
     49typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam);
     50extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata);
     51
     52/**
     53   \brief Returns the D3D9 adapter index that matches the specified display index.
     54
     55   This adapter index can be passed to IDirect3D9::CreateDevice and controls
     56   on which monitor a full screen application will appear.
     57*/
     58extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex );
     59
     60typedef struct IDirect3DDevice9 IDirect3DDevice9;
     61/**
     62   \brief Returns the D3D device associated with a renderer, or NULL if it's not a D3D renderer.
     63
     64   Once you are done using the device, you should release it to avoid a resource leak.
     65 */
     66extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer);
     67
     68/**
     69   \brief Returns the DXGI Adapter and Output indices for the specified display index.
     70
     71   These can be passed to EnumAdapters and EnumOutputs respectively to get the objects
     72   required to create a DX10 or DX11 device and swap chain.
     73 */
     74extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex );
     75
     76#endif /* __WIN32__ */
     77
     78
     79/* Platform specific functions for Linux */
     80#ifdef __LINUX__
     81
     82/**
     83   \brief Sets the UNIX nice value for a thread, using setpriority() if possible, and RealtimeKit if available.
     84
     85   \return 0 on success, or -1 on error.
     86 */
     87extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority);
     88 
     89#endif /* __LINUX__ */
     90	
     91/* Platform specific functions for iOS */
     92#ifdef __IPHONEOS__
     93
     94#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam)
     95extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (*callback)(void*), void *callbackParam);
     96
     97#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled)
     98extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled);
     99
    100#endif /* __IPHONEOS__ */
    101
    102
    103/* Platform specific functions for Android */
    104#ifdef __ANDROID__
    105
    106/**
    107   \brief Get the JNI environment for the current thread
    108
    109   This returns JNIEnv*, but the prototype is void* so we don't need jni.h
    110 */
    111extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void);
    112
    113/**
    114   \brief Get the SDL Activity object for the application
    115
    116   This returns jobject, but the prototype is void* so we don't need jni.h
    117   The jobject returned by SDL_AndroidGetActivity is a local reference.
    118   It is the caller's responsibility to properly release it
    119   (using env->Push/PopLocalFrame or manually with env->DeleteLocalRef)
    120 */
    121extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void);
    122
    123/**
    124   \brief Return API level of the current device
    125
    126    API level 29: Android 10
    127    API level 28: Android 9
    128    API level 27: Android 8.1
    129    API level 26: Android 8.0
    130    API level 25: Android 7.1
    131    API level 24: Android 7.0
    132    API level 23: Android 6.0
    133    API level 22: Android 5.1
    134    API level 21: Android 5.0
    135    API level 20: Android 4.4W
    136    API level 19: Android 4.4
    137    API level 18: Android 4.3
    138    API level 17: Android 4.2
    139    API level 16: Android 4.1
    140    API level 15: Android 4.0.3
    141    API level 14: Android 4.0
    142    API level 13: Android 3.2
    143    API level 12: Android 3.1
    144    API level 11: Android 3.0
    145    API level 10: Android 2.3.3
    146 */
    147extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void);
    148
    149/**
    150   \brief Return true if the application is running on Android TV
    151 */
    152extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void);
    153
    154/**
    155   \brief Return true if the application is running on a Chromebook
    156 */
    157extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void);
    158
    159/**
    160  \brief Return true is the application is running on a Samsung DeX docking station
    161 */
    162extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void);
    163
    164/**
    165 \brief Trigger the Android system back button behavior.
    166 */
    167extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void);
    168
    169/**
    170   See the official Android developer guide for more information:
    171   http://developer.android.com/guide/topics/data/data-storage.html
    172*/
    173#define SDL_ANDROID_EXTERNAL_STORAGE_READ   0x01
    174#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE  0x02
    175
    176/**
    177   \brief Get the path used for internal storage for this application.
    178
    179   This path is unique to your application and cannot be written to
    180   by other applications.
    181 */
    182extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void);
    183
    184/**
    185   \brief Get the current state of external storage, a bitmask of these values:
    186    SDL_ANDROID_EXTERNAL_STORAGE_READ
    187    SDL_ANDROID_EXTERNAL_STORAGE_WRITE
    188
    189   If external storage is currently unavailable, this will return 0.
    190*/
    191extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void);
    192
    193/**
    194   \brief Get the path used for external storage for this application.
    195
    196   This path is unique to your application, but is public and can be
    197   written to by other applications.
    198 */
    199extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void);
    200
    201#endif /* __ANDROID__ */
    202
    203/* Platform specific functions for WinRT */
    204#ifdef __WINRT__
    205
    206/**
    207 *  \brief WinRT / Windows Phone path types
    208 */
    209typedef enum
    210{
    211    /** \brief The installed app's root directory.
    212        Files here are likely to be read-only. */
    213    SDL_WINRT_PATH_INSTALLED_LOCATION,
    214
    215    /** \brief The app's local data store.  Files may be written here */
    216    SDL_WINRT_PATH_LOCAL_FOLDER,
    217
    218    /** \brief The app's roaming data store.  Unsupported on Windows Phone.
    219        Files written here may be copied to other machines via a network
    220        connection.
    221    */
    222    SDL_WINRT_PATH_ROAMING_FOLDER,
    223
    224    /** \brief The app's temporary data store.  Unsupported on Windows Phone.
    225        Files written here may be deleted at any time. */
    226    SDL_WINRT_PATH_TEMP_FOLDER
    227} SDL_WinRT_Path;
    228
    229
    230/**
    231 *  \brief WinRT Device Family
    232 */
    233typedef enum
    234{
    235    /** \brief Unknown family  */
    236    SDL_WINRT_DEVICEFAMILY_UNKNOWN,
    237
    238    /** \brief Desktop family*/
    239    SDL_WINRT_DEVICEFAMILY_DESKTOP,
    240
    241    /** \brief Mobile family (for example smartphone) */
    242    SDL_WINRT_DEVICEFAMILY_MOBILE,
    243
    244    /** \brief XBox family */
    245    SDL_WINRT_DEVICEFAMILY_XBOX,
    246} SDL_WinRT_DeviceFamily;
    247
    248
    249/**
    250 *  \brief Retrieves a WinRT defined path on the local file system
    251 *
    252 *  \note Documentation on most app-specific path types on WinRT
    253 *      can be found on MSDN, at the URL:
    254 *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
    255 *
    256 *  \param pathType The type of path to retrieve.
    257 *  \return A UCS-2 string (16-bit, wide-char) containing the path, or NULL
    258 *      if the path is not available for any reason.  Not all paths are
    259 *      available on all versions of Windows.  This is especially true on
    260 *      Windows Phone.  Check the documentation for the given
    261 *      SDL_WinRT_Path for more information on which path types are
    262 *      supported where.
    263 */
    264extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType);
    265
    266/**
    267 *  \brief Retrieves a WinRT defined path on the local file system
    268 *
    269 *  \note Documentation on most app-specific path types on WinRT
    270 *      can be found on MSDN, at the URL:
    271 *      http://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx
    272 *
    273 *  \param pathType The type of path to retrieve.
    274 *  \return A UTF-8 string (8-bit, multi-byte) containing the path, or NULL
    275 *      if the path is not available for any reason.  Not all paths are
    276 *      available on all versions of Windows.  This is especially true on
    277 *      Windows Phone.  Check the documentation for the given
    278 *      SDL_WinRT_Path for more information on which path types are
    279 *      supported where.
    280 */
    281extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType);
    282
    283/**
    284 *  \brief Detects the device family of WinRT plattform on runtime
    285 *
    286 *  \return Device family
    287 */
    288extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily();
    289
    290#endif /* __WINRT__ */
    291
    292/**
    293 \brief Return true if the current device is a tablet.
    294 */
    295extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void);
    296
    297/* Functions used by iOS application delegates to notify SDL about state changes */
    298extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void);
    299extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void);
    300extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void);
    301extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void);
    302extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void);
    303extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void);
    304#ifdef __IPHONEOS__
    305extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void);
    306#endif
    307
    308/* Ends C function definitions when using C++ */
    309#ifdef __cplusplus
    310}
    311#endif
    312#include "close_code.h"
    313
    314#endif /* SDL_system_h_ */
    315
    316/* vi: set ts=4 sw=4 expandtab: */