gosu 0.15.2 → 1.0.0.pre1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/dependencies/SDL/include/SDL.h +138 -0
  3. data/dependencies/SDL/include/SDL_assert.h +293 -0
  4. data/dependencies/SDL/include/SDL_atomic.h +295 -0
  5. data/dependencies/SDL/include/SDL_audio.h +859 -0
  6. data/dependencies/SDL/include/SDL_bits.h +121 -0
  7. data/dependencies/SDL/include/SDL_blendmode.h +123 -0
  8. data/dependencies/SDL/include/SDL_clipboard.h +71 -0
  9. data/dependencies/SDL/include/SDL_config.h +55 -0
  10. data/dependencies/SDL/include/SDL_config_android.h +182 -0
  11. data/dependencies/SDL/include/SDL_config_iphoneos.h +207 -0
  12. data/dependencies/SDL/include/SDL_config_macosx.h +266 -0
  13. data/dependencies/SDL/include/SDL_config_minimal.h +85 -0
  14. data/dependencies/SDL/include/SDL_config_os2.h +188 -0
  15. data/dependencies/SDL/include/SDL_config_pandora.h +135 -0
  16. data/dependencies/SDL/include/SDL_config_psp.h +165 -0
  17. data/dependencies/SDL/include/SDL_config_windows.h +288 -0
  18. data/dependencies/SDL/include/SDL_config_winrt.h +243 -0
  19. data/dependencies/SDL/include/SDL_config_wiz.h +149 -0
  20. data/dependencies/SDL/include/SDL_copying.h +20 -0
  21. data/dependencies/SDL/include/SDL_cpuinfo.h +299 -0
  22. data/dependencies/SDL/include/SDL_egl.h +1676 -0
  23. data/dependencies/SDL/include/SDL_endian.h +263 -0
  24. data/dependencies/SDL/include/SDL_error.h +112 -0
  25. data/dependencies/SDL/include/SDL_events.h +827 -0
  26. data/dependencies/SDL/include/SDL_filesystem.h +136 -0
  27. data/dependencies/SDL/include/SDL_gamecontroller.h +541 -0
  28. data/dependencies/SDL/include/SDL_gesture.h +87 -0
  29. data/dependencies/SDL/include/SDL_haptic.h +1247 -0
  30. data/dependencies/SDL/include/SDL_hints.h +1578 -0
  31. data/dependencies/SDL/include/SDL_joystick.h +499 -0
  32. data/dependencies/SDL/include/SDL_keyboard.h +217 -0
  33. data/dependencies/SDL/include/SDL_keycode.h +351 -0
  34. data/dependencies/SDL/include/SDL_loadso.h +81 -0
  35. data/dependencies/SDL/include/SDL_locale.h +101 -0
  36. data/dependencies/SDL/include/SDL_log.h +211 -0
  37. data/dependencies/SDL/include/SDL_main.h +180 -0
  38. data/dependencies/SDL/include/SDL_messagebox.h +146 -0
  39. data/dependencies/SDL/include/SDL_metal.h +117 -0
  40. data/dependencies/SDL/include/SDL_misc.h +75 -0
  41. data/dependencies/SDL/include/SDL_mouse.h +302 -0
  42. data/dependencies/SDL/include/SDL_mutex.h +251 -0
  43. data/dependencies/SDL/include/SDL_name.h +33 -0
  44. data/dependencies/SDL/include/SDL_opengl.h +2183 -0
  45. data/dependencies/SDL/include/SDL_opengl_glext.h +11180 -0
  46. data/dependencies/SDL/include/SDL_opengles.h +39 -0
  47. data/dependencies/SDL/include/SDL_opengles2.h +52 -0
  48. data/dependencies/SDL/include/SDL_opengles2_gl2.h +621 -0
  49. data/dependencies/SDL/include/SDL_opengles2_gl2ext.h +2050 -0
  50. data/dependencies/SDL/include/SDL_opengles2_gl2platform.h +30 -0
  51. data/dependencies/SDL/include/SDL_opengles2_khrplatform.h +282 -0
  52. data/dependencies/SDL/include/SDL_pixels.h +479 -0
  53. data/dependencies/SDL/include/SDL_platform.h +198 -0
  54. data/dependencies/SDL/include/SDL_power.h +75 -0
  55. data/dependencies/SDL/include/SDL_quit.h +58 -0
  56. data/dependencies/SDL/include/SDL_rect.h +174 -0
  57. data/dependencies/SDL/include/SDL_render.h +1158 -0
  58. data/dependencies/SDL/include/SDL_revision.h +2 -0
  59. data/dependencies/SDL/include/SDL_rwops.h +283 -0
  60. data/dependencies/SDL/include/SDL_scancode.h +413 -0
  61. data/dependencies/SDL/include/SDL_sensor.h +267 -0
  62. data/dependencies/SDL/include/SDL_shape.h +144 -0
  63. data/dependencies/SDL/include/SDL_stdinc.h +647 -0
  64. data/dependencies/SDL/include/SDL_surface.h +563 -0
  65. data/dependencies/SDL/include/SDL_system.h +325 -0
  66. data/dependencies/SDL/include/SDL_syswm.h +354 -0
  67. data/dependencies/SDL/include/SDL_test.h +69 -0
  68. data/dependencies/SDL/include/SDL_test_assert.h +105 -0
  69. data/dependencies/SDL/include/SDL_test_common.h +218 -0
  70. data/dependencies/SDL/include/SDL_test_compare.h +69 -0
  71. data/dependencies/SDL/include/SDL_test_crc32.h +124 -0
  72. data/dependencies/SDL/include/SDL_test_font.h +81 -0
  73. data/dependencies/SDL/include/SDL_test_fuzzer.h +384 -0
  74. data/dependencies/SDL/include/SDL_test_harness.h +134 -0
  75. data/dependencies/SDL/include/SDL_test_images.h +78 -0
  76. data/dependencies/SDL/include/SDL_test_log.h +67 -0
  77. data/dependencies/SDL/include/SDL_test_md5.h +129 -0
  78. data/dependencies/SDL/include/SDL_test_memory.h +63 -0
  79. data/dependencies/SDL/include/SDL_test_random.h +115 -0
  80. data/dependencies/SDL/include/SDL_thread.h +366 -0
  81. data/dependencies/SDL/include/SDL_timer.h +115 -0
  82. data/dependencies/SDL/include/SDL_touch.h +102 -0
  83. data/dependencies/SDL/include/SDL_types.h +29 -0
  84. data/dependencies/SDL/include/SDL_version.h +162 -0
  85. data/dependencies/SDL/include/SDL_video.h +1282 -0
  86. data/dependencies/SDL/include/SDL_vulkan.h +276 -0
  87. data/dependencies/SDL/include/begin_code.h +166 -0
  88. data/dependencies/SDL/include/close_code.h +40 -0
  89. data/dependencies/SDL/lib/x64/libSDL2.dll.a +0 -0
  90. data/dependencies/SDL/lib/x86/libSDL2.dll.a +0 -0
  91. data/dependencies/SDL_sound/SDL_sound.c +795 -0
  92. data/dependencies/SDL_sound/SDL_sound.h +725 -0
  93. data/dependencies/SDL_sound/SDL_sound_aiff.c +537 -0
  94. data/dependencies/SDL_sound/SDL_sound_au.c +352 -0
  95. data/dependencies/SDL_sound/SDL_sound_coreaudio.c +747 -0
  96. data/dependencies/SDL_sound/SDL_sound_flac.c +182 -0
  97. data/dependencies/SDL_sound/SDL_sound_internal.h +304 -0
  98. data/dependencies/SDL_sound/SDL_sound_modplug.c +228 -0
  99. data/dependencies/SDL_sound/SDL_sound_mp3.c +184 -0
  100. data/dependencies/SDL_sound/SDL_sound_raw.c +164 -0
  101. data/dependencies/SDL_sound/SDL_sound_shn.c +1309 -0
  102. data/dependencies/SDL_sound/SDL_sound_voc.c +550 -0
  103. data/dependencies/SDL_sound/SDL_sound_vorbis.c +223 -0
  104. data/dependencies/SDL_sound/SDL_sound_wav.c +783 -0
  105. data/dependencies/SDL_sound/dr_flac.h +5906 -0
  106. data/dependencies/SDL_sound/dr_mp3.h +2832 -0
  107. data/dependencies/SDL_sound/libmodplug/fastmix.c +1748 -0
  108. data/dependencies/SDL_sound/libmodplug/libmodplug.h +1001 -0
  109. data/dependencies/SDL_sound/libmodplug/load_669.c +188 -0
  110. data/dependencies/SDL_sound/libmodplug/load_abc.c +4725 -0
  111. data/dependencies/SDL_sound/libmodplug/load_amf.c +403 -0
  112. data/dependencies/SDL_sound/libmodplug/load_ams.c +587 -0
  113. data/dependencies/SDL_sound/libmodplug/load_dbm.c +357 -0
  114. data/dependencies/SDL_sound/libmodplug/load_dmf.c +531 -0
  115. data/dependencies/SDL_sound/libmodplug/load_dsm.c +232 -0
  116. data/dependencies/SDL_sound/libmodplug/load_far.c +253 -0
  117. data/dependencies/SDL_sound/libmodplug/load_it.c +796 -0
  118. data/dependencies/SDL_sound/libmodplug/load_mdl.c +488 -0
  119. data/dependencies/SDL_sound/libmodplug/load_med.c +757 -0
  120. data/dependencies/SDL_sound/libmodplug/load_mid.c +1405 -0
  121. data/dependencies/SDL_sound/libmodplug/load_mod.c +269 -0
  122. data/dependencies/SDL_sound/libmodplug/load_mt2.c +546 -0
  123. data/dependencies/SDL_sound/libmodplug/load_mtm.c +142 -0
  124. data/dependencies/SDL_sound/libmodplug/load_okt.c +192 -0
  125. data/dependencies/SDL_sound/libmodplug/load_pat.c +1143 -0
  126. data/dependencies/SDL_sound/libmodplug/load_pat.h +25 -0
  127. data/dependencies/SDL_sound/libmodplug/load_psm.c +350 -0
  128. data/dependencies/SDL_sound/libmodplug/load_ptm.c +204 -0
  129. data/dependencies/SDL_sound/libmodplug/load_s3m.c +325 -0
  130. data/dependencies/SDL_sound/libmodplug/load_stm.c +180 -0
  131. data/dependencies/SDL_sound/libmodplug/load_ult.c +206 -0
  132. data/dependencies/SDL_sound/libmodplug/load_umx.c +51 -0
  133. data/dependencies/SDL_sound/libmodplug/load_xm.c +554 -0
  134. data/dependencies/SDL_sound/libmodplug/mmcmp.c +382 -0
  135. data/dependencies/SDL_sound/libmodplug/modplug.c +170 -0
  136. data/dependencies/SDL_sound/libmodplug/modplug.h +90 -0
  137. data/dependencies/SDL_sound/libmodplug/snd_dsp.c +301 -0
  138. data/dependencies/SDL_sound/libmodplug/snd_flt.c +63 -0
  139. data/dependencies/SDL_sound/libmodplug/snd_fx.c +2350 -0
  140. data/dependencies/SDL_sound/libmodplug/sndfile.c +1169 -0
  141. data/dependencies/SDL_sound/libmodplug/sndmix.c +1034 -0
  142. data/dependencies/SDL_sound/libmodplug/tables.h +371 -0
  143. data/{src/stb_vorbis.c → dependencies/SDL_sound/stb_vorbis.h} +143 -78
  144. data/dependencies/al_soft/AL/al.h +655 -0
  145. data/dependencies/al_soft/AL/alc.h +270 -0
  146. data/dependencies/al_soft/AL/alext.h +585 -0
  147. data/dependencies/al_soft/AL/efx-creative.h +3 -0
  148. data/dependencies/al_soft/AL/efx-presets.h +402 -0
  149. data/dependencies/al_soft/AL/efx.h +762 -0
  150. data/dependencies/al_soft/x64/libOpenAL32.dll.a +0 -0
  151. data/dependencies/al_soft/x86/libOpenAL32.dll.a +0 -0
  152. data/{src → dependencies/stb}/stb_image.h +330 -127
  153. data/{src → dependencies/stb}/stb_image_write.h +156 -85
  154. data/{src → dependencies/stb}/stb_truetype.h +192 -69
  155. data/{src → dependencies/utf8proc}/utf8proc.c +0 -0
  156. data/{src → dependencies/utf8proc}/utf8proc.h +0 -0
  157. data/{src → dependencies/utf8proc}/utf8proc_data.h +0 -0
  158. data/ext/gosu/extconf.rb +56 -22
  159. data/{Gosu → include/Gosu}/Audio.hpp +6 -8
  160. data/{Gosu → include/Gosu}/AutoLink.hpp +0 -0
  161. data/include/Gosu/Bitmap.hpp +100 -0
  162. data/{Gosu → include/Gosu}/Buttons.hpp +94 -35
  163. data/{Gosu → include/Gosu}/Channel.h +0 -0
  164. data/{Gosu → include/Gosu}/Color.h +0 -0
  165. data/{Gosu → include/Gosu}/Color.hpp +0 -0
  166. data/{Gosu → include/Gosu}/Directories.hpp +0 -0
  167. data/{Gosu → include/Gosu}/Font.h +0 -0
  168. data/{Gosu → include/Gosu}/Font.hpp +0 -0
  169. data/{Gosu → include/Gosu}/Fwd.hpp +0 -0
  170. data/{Gosu → include/Gosu}/Gosu.h +3 -0
  171. data/{Gosu → include/Gosu}/Gosu.hpp +0 -0
  172. data/{Gosu → include/Gosu}/Graphics.hpp +0 -0
  173. data/{Gosu → include/Gosu}/GraphicsBase.hpp +0 -0
  174. data/{Gosu → include/Gosu}/IO.hpp +0 -0
  175. data/{Gosu → include/Gosu}/Image.h +0 -0
  176. data/{Gosu → include/Gosu}/Image.hpp +7 -6
  177. data/{Gosu → include/Gosu}/ImageData.hpp +0 -0
  178. data/{Gosu → include/Gosu}/Input.hpp +30 -15
  179. data/{Gosu → include/Gosu}/Inspection.hpp +0 -0
  180. data/{Gosu → include/Gosu}/Math.hpp +0 -0
  181. data/{Gosu → include/Gosu}/Platform.hpp +0 -0
  182. data/{Gosu → include/Gosu}/Sample.h +0 -0
  183. data/{Gosu → include/Gosu}/Song.h +0 -0
  184. data/{Gosu → include/Gosu}/Text.hpp +0 -0
  185. data/{Gosu → include/Gosu}/TextInput.h +0 -0
  186. data/{Gosu → include/Gosu}/TextInput.hpp +0 -0
  187. data/{Gosu → include/Gosu}/Timing.hpp +0 -0
  188. data/{Gosu → include/Gosu}/Utility.hpp +1 -1
  189. data/{Gosu → include/Gosu}/Version.hpp +0 -0
  190. data/{Gosu → include/Gosu}/Window.h +2 -0
  191. data/{Gosu → include/Gosu}/Window.hpp +21 -13
  192. data/lib/OpenAL32.dll +0 -0
  193. data/lib/SDL2.dll +0 -0
  194. data/lib/gosu.rb +0 -3
  195. data/lib/gosu/patches.rb +0 -9
  196. data/lib/gosu/swig_patches.rb +3 -2
  197. data/lib/libmpg123.dll +0 -0
  198. data/lib/libsndfile.dll +0 -0
  199. data/lib64/OpenAL32.dll +0 -0
  200. data/lib64/SDL2.dll +0 -0
  201. data/lib64/libmpg123.dll +0 -0
  202. data/lib64/libsndfile.dll +0 -0
  203. data/rdoc/gosu.rb +95 -20
  204. data/src/Audio.cpp +50 -224
  205. data/src/AudioFile.hpp +17 -37
  206. data/src/AudioFileAudioToolbox.cpp +237 -0
  207. data/src/AudioFileSDLSound.cpp +147 -0
  208. data/src/AudioImpl.cpp +3 -12
  209. data/src/AudioImpl.hpp +3 -1
  210. data/src/Bitmap.cpp +85 -83
  211. data/src/BitmapIO.cpp +52 -58
  212. data/src/Constants.cpp +80 -33
  213. data/src/Font.cpp +3 -1
  214. data/src/GosuWrapper.cpp +19 -0
  215. data/src/Graphics.cpp +7 -4
  216. data/src/Image.cpp +13 -16
  217. data/src/Input.cpp +408 -159
  218. data/src/LargeImageData.cpp +1 -1
  219. data/src/MarkupParser.cpp +2 -1
  220. data/src/RubyGosu.cxx +349 -83
  221. data/src/RubyGosu.h +4 -2
  222. data/src/TexChunk.cpp +1 -1
  223. data/src/TextBuilder.cpp +3 -1
  224. data/src/Texture.cpp +1 -1
  225. data/src/TrueTypeFont.cpp +1 -1
  226. data/src/Utility.cpp +11 -7
  227. data/src/Window.cpp +30 -39
  228. data/src/WindowWrapper.cpp +28 -0
  229. metadata +207 -52
  230. data/Gosu/Bitmap.hpp +0 -113
  231. data/src/AudioToolboxFile.hpp +0 -210
  232. data/src/OggFile.hpp +0 -92
  233. data/src/SndFile.hpp +0 -174
  234. data/src/WinMain.cpp +0 -64
@@ -0,0 +1,1578 @@
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_hints.h
24
+ *
25
+ * Official documentation for SDL configuration variables
26
+ *
27
+ * This file contains functions to set and get configuration hints,
28
+ * as well as listing each of them alphabetically.
29
+ *
30
+ * The convention for naming hints is SDL_HINT_X, where "SDL_X" is
31
+ * the environment variable that can be used to override the default.
32
+ *
33
+ * In general these hints are just that - they may or may not be
34
+ * supported or applicable on any given platform, but they provide
35
+ * a way for an application or user to give the library a hint as
36
+ * to how they would like the library to work.
37
+ */
38
+
39
+ #ifndef SDL_hints_h_
40
+ #define SDL_hints_h_
41
+
42
+ #include "SDL_stdinc.h"
43
+
44
+ #include "begin_code.h"
45
+ /* Set up for C function definitions, even when using C++ */
46
+ #ifdef __cplusplus
47
+ extern "C" {
48
+ #endif
49
+
50
+ /**
51
+ * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface.
52
+ *
53
+ * SDL can try to accelerate the SDL screen surface by using streaming
54
+ * textures with a 3D rendering engine. This variable controls whether and
55
+ * how this is done.
56
+ *
57
+ * This variable can be set to the following values:
58
+ * "0" - Disable 3D acceleration
59
+ * "1" - Enable 3D acceleration, using the default renderer.
60
+ * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.)
61
+ *
62
+ * By default SDL tries to make a best guess for each platform whether
63
+ * to use acceleration or not.
64
+ */
65
+ #define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION"
66
+
67
+ /**
68
+ * \brief A variable specifying which render driver to use.
69
+ *
70
+ * If the application doesn't pick a specific renderer to use, this variable
71
+ * specifies the name of the preferred renderer. If the preferred renderer
72
+ * can't be initialized, the normal default renderer is used.
73
+ *
74
+ * This variable is case insensitive and can be set to the following values:
75
+ * "direct3d"
76
+ * "opengl"
77
+ * "opengles2"
78
+ * "opengles"
79
+ * "metal"
80
+ * "software"
81
+ *
82
+ * The default varies by platform, but it's the first one in the list that
83
+ * is available on the current platform.
84
+ */
85
+ #define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER"
86
+
87
+ /**
88
+ * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available.
89
+ *
90
+ * This variable can be set to the following values:
91
+ * "0" - Disable shaders
92
+ * "1" - Enable shaders
93
+ *
94
+ * By default shaders are used if OpenGL supports them.
95
+ */
96
+ #define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS"
97
+
98
+ /**
99
+ * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations.
100
+ *
101
+ * This variable can be set to the following values:
102
+ * "0" - Thread-safety is not enabled (faster)
103
+ * "1" - Thread-safety is enabled
104
+ *
105
+ * By default the Direct3D device is created with thread-safety disabled.
106
+ */
107
+ #define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE"
108
+
109
+ /**
110
+ * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer.
111
+ *
112
+ * This variable does not have any effect on the Direct3D 9 based renderer.
113
+ *
114
+ * This variable can be set to the following values:
115
+ * "0" - Disable Debug Layer use
116
+ * "1" - Enable Debug Layer use
117
+ *
118
+ * By default, SDL does not use Direct3D Debug Layer.
119
+ */
120
+ #define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG"
121
+
122
+ /**
123
+ * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize.
124
+ *
125
+ * This variable can be set to the following values:
126
+ * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen
127
+ * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen
128
+ *
129
+ * By default letterbox is used
130
+ */
131
+ #define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE"
132
+
133
+ /**
134
+ * \brief A variable controlling the scaling quality
135
+ *
136
+ * This variable can be set to the following values:
137
+ * "0" or "nearest" - Nearest pixel sampling
138
+ * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D)
139
+ * "2" or "best" - Currently this is the same as "linear"
140
+ *
141
+ * By default nearest pixel sampling is used
142
+ */
143
+ #define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY"
144
+
145
+ /**
146
+ * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing.
147
+ *
148
+ * This variable can be set to the following values:
149
+ * "0" - Disable vsync
150
+ * "1" - Enable vsync
151
+ *
152
+ * By default SDL does not sync screen surface updates with vertical refresh.
153
+ */
154
+ #define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC"
155
+
156
+ /**
157
+ * \brief A variable controlling whether the screensaver is enabled.
158
+ *
159
+ * This variable can be set to the following values:
160
+ * "0" - Disable screensaver
161
+ * "1" - Enable screensaver
162
+ *
163
+ * By default SDL will disable the screensaver.
164
+ */
165
+ #define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER"
166
+
167
+ /**
168
+ * \brief A variable controlling whether the graphics context is externally managed.
169
+ *
170
+ * This variable can be set to the following values:
171
+ * "0" - SDL will manage graphics contexts that are attached to windows.
172
+ * "1" - Disable graphics context management on windows.
173
+ *
174
+ * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the
175
+ * context will be automatically saved and restored when pausing the application. Additionally, some
176
+ * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this
177
+ * behavior, which is desireable when the application manages the graphics context, such as
178
+ * an externally managed OpenGL context or attaching a Vulkan surface to the window.
179
+ */
180
+ #define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT"
181
+
182
+ /**
183
+ * \brief A variable controlling whether the X11 VidMode extension should be used.
184
+ *
185
+ * This variable can be set to the following values:
186
+ * "0" - Disable XVidMode
187
+ * "1" - Enable XVidMode
188
+ *
189
+ * By default SDL will use XVidMode if it is available.
190
+ */
191
+ #define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE"
192
+
193
+ /**
194
+ * \brief A variable controlling whether the X11 Xinerama extension should be used.
195
+ *
196
+ * This variable can be set to the following values:
197
+ * "0" - Disable Xinerama
198
+ * "1" - Enable Xinerama
199
+ *
200
+ * By default SDL will use Xinerama if it is available.
201
+ */
202
+ #define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA"
203
+
204
+ /**
205
+ * \brief A variable controlling whether the X11 XRandR extension should be used.
206
+ *
207
+ * This variable can be set to the following values:
208
+ * "0" - Disable XRandR
209
+ * "1" - Enable XRandR
210
+ *
211
+ * By default SDL will not use XRandR because of window manager issues.
212
+ */
213
+ #define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR"
214
+
215
+ /**
216
+ * \brief A variable forcing the visual ID chosen for new X11 windows
217
+ *
218
+ */
219
+ #define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID"
220
+
221
+ /**
222
+ * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported.
223
+ *
224
+ * This variable can be set to the following values:
225
+ * "0" - Disable _NET_WM_PING
226
+ * "1" - Enable _NET_WM_PING
227
+ *
228
+ * By default SDL will use _NET_WM_PING, but for applications that know they
229
+ * will not always be able to respond to ping requests in a timely manner they can
230
+ * turn it off to avoid the window manager thinking the app is hung.
231
+ * The hint is checked in CreateWindow.
232
+ */
233
+ #define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING"
234
+
235
+ /**
236
+ * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used.
237
+ *
238
+ * This variable can be set to the following values:
239
+ * "0" - Disable _NET_WM_BYPASS_COMPOSITOR
240
+ * "1" - Enable _NET_WM_BYPASS_COMPOSITOR
241
+ *
242
+ * By default SDL will use _NET_WM_BYPASS_COMPOSITOR
243
+ *
244
+ */
245
+ #define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR"
246
+
247
+ /**
248
+ * \brief A variable controlling whether X11 should use GLX or EGL by default
249
+ *
250
+ * This variable can be set to the following values:
251
+ * "0" - Use GLX
252
+ * "1" - Use EGL
253
+ *
254
+ * By default SDL will use GLX when both are present.
255
+ */
256
+ #define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL"
257
+
258
+ /**
259
+ * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden
260
+ *
261
+ * This variable can be set to the following values:
262
+ * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc)
263
+ * "1" - The window frame is interactive when the cursor is hidden
264
+ *
265
+ * By default SDL will allow interaction with the window frame when the cursor is hidden
266
+ */
267
+ #define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN"
268
+
269
+ /**
270
+ * \brief A variable to specify custom icon resource id from RC file on Windows platform
271
+ */
272
+ #define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON"
273
+ #define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL"
274
+
275
+ /**
276
+ * \brief A variable controlling whether the windows message loop is processed by SDL
277
+ *
278
+ * This variable can be set to the following values:
279
+ * "0" - The window message loop is not run
280
+ * "1" - The window message loop is processed in SDL_PumpEvents()
281
+ *
282
+ * By default SDL will process the windows message loop
283
+ */
284
+ #define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP"
285
+
286
+ /**
287
+ * \brief A variable controlling whether grabbing input grabs the keyboard
288
+ *
289
+ * This variable can be set to the following values:
290
+ * "0" - Grab will affect only the mouse
291
+ * "1" - Grab will affect mouse and keyboard
292
+ *
293
+ * By default SDL will not grab the keyboard so system shortcuts still work.
294
+ */
295
+ #define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD"
296
+
297
+ /**
298
+ * \brief A variable setting the double click time, in milliseconds.
299
+ */
300
+ #define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME"
301
+
302
+ /**
303
+ * \brief A variable setting the double click radius, in pixels.
304
+ */
305
+ #define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS"
306
+
307
+ /**
308
+ * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode
309
+ */
310
+ #define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE"
311
+
312
+ /**
313
+ * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode
314
+ */
315
+ #define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE"
316
+
317
+ /**
318
+ * \brief A variable controlling whether relative mouse motion is affected by renderer scaling
319
+ *
320
+ * This variable can be set to the following values:
321
+ * "0" - Relative motion is unaffected by DPI or renderer's logical size
322
+ * "1" - Relative motion is scaled according to DPI scaling and logical size
323
+ *
324
+ * By default relative mouse deltas are affected by DPI and renderer scaling
325
+ */
326
+ #define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING"
327
+
328
+ /**
329
+ * \brief A variable controlling whether relative mouse mode is implemented using mouse warping
330
+ *
331
+ * This variable can be set to the following values:
332
+ * "0" - Relative mouse mode uses raw input
333
+ * "1" - Relative mouse mode uses mouse warping
334
+ *
335
+ * By default SDL will use raw input for relative mouse mode
336
+ */
337
+ #define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP"
338
+
339
+ /**
340
+ * \brief Allow mouse click events when clicking to focus an SDL window
341
+ *
342
+ * This variable can be set to the following values:
343
+ * "0" - Ignore mouse clicks that activate a window
344
+ * "1" - Generate events for mouse clicks that activate a window
345
+ *
346
+ * By default SDL will ignore mouse clicks that activate a window
347
+ */
348
+ #define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH"
349
+
350
+ /**
351
+ * \brief A variable controlling whether touch events should generate synthetic mouse events
352
+ *
353
+ * This variable can be set to the following values:
354
+ * "0" - Touch events will not generate mouse events
355
+ * "1" - Touch events will generate mouse events
356
+ *
357
+ * By default SDL will generate mouse events for touch events
358
+ */
359
+ #define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS"
360
+
361
+ /**
362
+ * \brief A variable controlling whether mouse events should generate synthetic touch events
363
+ *
364
+ * This variable can be set to the following values:
365
+ * "0" - Mouse events will not generate touch events (default for desktop platforms)
366
+ * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS)
367
+ */
368
+
369
+ #define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS"
370
+
371
+ /**
372
+ * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false.
373
+ * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're
374
+ * seeing if "true" causes more problems than it solves in modern times.
375
+ *
376
+ */
377
+ #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
378
+
379
+ /**
380
+ * \brief A variable controlling whether the idle timer is disabled on iOS.
381
+ *
382
+ * When an iOS app does not receive touches for some time, the screen is
383
+ * dimmed automatically. For games where the accelerometer is the only input
384
+ * this is problematic. This functionality can be disabled by setting this
385
+ * hint.
386
+ *
387
+ * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver()
388
+ * accomplish the same thing on iOS. They should be preferred over this hint.
389
+ *
390
+ * This variable can be set to the following values:
391
+ * "0" - Enable idle timer
392
+ * "1" - Disable idle timer
393
+ */
394
+ #define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED"
395
+
396
+ /**
397
+ * \brief A variable controlling which orientations are allowed on iOS/Android.
398
+ *
399
+ * In some circumstances it is necessary to be able to explicitly control
400
+ * which UI orientations are allowed.
401
+ *
402
+ * This variable is a space delimited list of the following values:
403
+ * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown"
404
+ */
405
+ #define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS"
406
+
407
+ /**
408
+ * \brief A variable controlling whether controllers used with the Apple TV
409
+ * generate UI events.
410
+ *
411
+ * When UI events are generated by controller input, the app will be
412
+ * backgrounded when the Apple TV remote's menu button is pressed, and when the
413
+ * pause or B buttons on gamepads are pressed.
414
+ *
415
+ * More information about properly making use of controllers for the Apple TV
416
+ * can be found here:
417
+ * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/
418
+ *
419
+ * This variable can be set to the following values:
420
+ * "0" - Controller input does not generate UI events (the default).
421
+ * "1" - Controller input generates UI events.
422
+ */
423
+ #define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS"
424
+
425
+ /**
426
+ * \brief A variable controlling whether the Apple TV remote's joystick axes
427
+ * will automatically match the rotation of the remote.
428
+ *
429
+ * This variable can be set to the following values:
430
+ * "0" - Remote orientation does not affect joystick axes (the default).
431
+ * "1" - Joystick axes are based on the orientation of the remote.
432
+ */
433
+ #define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION"
434
+
435
+ /**
436
+ * \brief A variable controlling whether the home indicator bar on iPhone X
437
+ * should be hidden.
438
+ *
439
+ * This variable can be set to the following values:
440
+ * "0" - The indicator bar is not hidden (default for windowed applications)
441
+ * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications)
442
+ * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications)
443
+ */
444
+ #define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR"
445
+
446
+ /**
447
+ * \brief A variable controlling whether the Android / iOS built-in
448
+ * accelerometer should be listed as a joystick device.
449
+ *
450
+ * This variable can be set to the following values:
451
+ * "0" - The accelerometer is not listed as a joystick
452
+ * "1" - The accelerometer is available as a 3 axis joystick (the default).
453
+ */
454
+ #define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK"
455
+
456
+ /**
457
+ * \brief A variable controlling whether the Android / tvOS remotes
458
+ * should be listed as joystick devices, instead of sending keyboard events.
459
+ *
460
+ * This variable can be set to the following values:
461
+ * "0" - Remotes send enter/escape/arrow key events
462
+ * "1" - Remotes are available as 2 axis, 2 button joysticks (the default).
463
+ */
464
+ #define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK"
465
+
466
+ /**
467
+ * \brief A variable that lets you disable the detection and use of Xinput gamepad devices
468
+ *
469
+ * The variable can be set to the following values:
470
+ * "0" - Disable XInput detection (only uses direct input)
471
+ * "1" - Enable XInput detection (the default)
472
+ */
473
+ #define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED"
474
+
475
+ /**
476
+ * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices.
477
+ *
478
+ * This hint is for backwards compatibility only and will be removed in SDL 2.1
479
+ *
480
+ * The default value is "0". This hint must be set before SDL_Init()
481
+ */
482
+ #define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING"
483
+
484
+ /**
485
+ * \brief A variable that overrides the automatic controller type detection
486
+ *
487
+ * The variable should be comma separated entries, in the form: VID/PID=type
488
+ *
489
+ * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd
490
+ *
491
+ * The type should be one of:
492
+ * Xbox360
493
+ * XboxOne
494
+ * PS3
495
+ * PS4
496
+ * PS5
497
+ * SwitchPro
498
+ *
499
+ * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
500
+ */
501
+ #define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE"
502
+
503
+ /**
504
+ * \brief A variable that lets you manually hint extra gamecontroller db entries.
505
+ *
506
+ * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h
507
+ *
508
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
509
+ * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
510
+ */
511
+ #define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG"
512
+
513
+ /**
514
+ * \brief A variable that lets you provide a file with extra gamecontroller db entries.
515
+ *
516
+ * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h
517
+ *
518
+ * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER)
519
+ * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping()
520
+ */
521
+ #define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE"
522
+
523
+ /**
524
+ * \brief A variable containing a list of devices to skip when scanning for game controllers.
525
+ *
526
+ * The format of the string is a comma separated list of USB VID/PID pairs
527
+ * in hexadecimal form, e.g.
528
+ *
529
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
530
+ *
531
+ * The variable can also take the form of @file, in which case the named
532
+ * file will be loaded and interpreted as the value of the variable.
533
+ */
534
+ #define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES"
535
+
536
+ /**
537
+ * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable.
538
+ *
539
+ * The format of the string is a comma separated list of USB VID/PID pairs
540
+ * in hexadecimal form, e.g.
541
+ *
542
+ * 0xAAAA/0xBBBB,0xCCCC/0xDDDD
543
+ *
544
+ * The variable can also take the form of @file, in which case the named
545
+ * file will be loaded and interpreted as the value of the variable.
546
+ */
547
+ #define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT"
548
+
549
+ /**
550
+ * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout.
551
+ *
552
+ * For example, on Nintendo Switch controllers, normally you'd get:
553
+ *
554
+ * (Y)
555
+ * (X) (B)
556
+ * (A)
557
+ *
558
+ * but if this hint is set, you'll get:
559
+ *
560
+ * (X)
561
+ * (Y) (A)
562
+ * (B)
563
+ *
564
+ * The variable can be set to the following values:
565
+ * "0" - Report the face buttons by position, as though they were on an Xbox controller.
566
+ * "1" - Report the face buttons by label instead of position
567
+ *
568
+ * The default value is "1". This hint may be set at any time.
569
+ */
570
+ #define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS"
571
+
572
+ /**
573
+ * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background.
574
+ *
575
+ * The variable can be set to the following values:
576
+ * "0" - Disable joystick & gamecontroller input events when the
577
+ * application is in the background.
578
+ * "1" - Enable joystick & gamecontroller input events when the
579
+ * application is in the background.
580
+ *
581
+ * The default value is "0". This hint may be set at any time.
582
+ */
583
+ #define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS"
584
+
585
+ /**
586
+ * \brief A variable controlling whether the HIDAPI joystick drivers should be used.
587
+ *
588
+ * This variable can be set to the following values:
589
+ * "0" - HIDAPI drivers are not used
590
+ * "1" - HIDAPI drivers are used (the default)
591
+ *
592
+ * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below.
593
+ */
594
+ #define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI"
595
+
596
+ /**
597
+ * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used.
598
+ *
599
+ * This variable can be set to the following values:
600
+ * "0" - HIDAPI driver is not used
601
+ * "1" - HIDAPI driver is used
602
+ *
603
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
604
+ */
605
+ #define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4"
606
+
607
+ /**
608
+ * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used.
609
+ *
610
+ * This variable can be set to the following values:
611
+ * "0" - HIDAPI driver is not used
612
+ * "1" - HIDAPI driver is used
613
+ *
614
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
615
+ */
616
+ #define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5"
617
+
618
+ /**
619
+ * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver.
620
+ *
621
+ * This variable can be set to the following values:
622
+ * "0" - extended reports are not enabled (the default)
623
+ * "1" - extended reports
624
+ *
625
+ * Extended input reports allow rumble on Bluetooth PS4 controllers, but
626
+ * break DirectInput handling for applications that don't use SDL.
627
+ *
628
+ * Once extended reports are enabled, they can not be disabled without
629
+ * power cycling the controller.
630
+ */
631
+ #define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE"
632
+
633
+ /**
634
+ * \brief A variable controlling whether the HIDAPI driver for Steam Controllers should be used.
635
+ *
636
+ * This variable can be set to the following values:
637
+ * "0" - HIDAPI driver is not used
638
+ * "1" - HIDAPI driver is used
639
+ *
640
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
641
+ */
642
+ #define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM"
643
+
644
+ /**
645
+ * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used.
646
+ *
647
+ * This variable can be set to the following values:
648
+ * "0" - HIDAPI driver is not used
649
+ * "1" - HIDAPI driver is used
650
+ *
651
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
652
+ */
653
+ #define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH"
654
+
655
+ /**
656
+ * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used.
657
+ *
658
+ * This variable can be set to the following values:
659
+ * "0" - HIDAPI driver is not used
660
+ * "1" - HIDAPI driver is used
661
+ *
662
+ * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI
663
+ */
664
+ #define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX"
665
+
666
+ /**
667
+ * \brief A variable controlling whether the HIDAPI driver for XBox controllers on Windows should pull correlated
668
+ * data from XInput.
669
+ *
670
+ * This variable can be set to the following values:
671
+ * "0" - HIDAPI Xbox driver will only use HIDAPI data
672
+ * "1" - HIDAPI Xbox driver will also pull data from XInput, providing better trigger axes, guide button
673
+ * presses, and rumble support
674
+ *
675
+ * The default is "1". This hint applies to any joysticks opened after setting the hint.
676
+ */
677
+ #define SDL_HINT_JOYSTICK_HIDAPI_CORRELATE_XINPUT "SDL_JOYSTICK_HIDAPI_CORRELATE_XINPUT"
678
+
679
+ /**
680
+ * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used.
681
+ *
682
+ * This variable can be set to the following values:
683
+ * "0" - HIDAPI driver is not used
684
+ * "1" - HIDAPI driver is used
685
+ *
686
+ * The default is the value of SDL_HINT_JOYSTICK_HIDAPI
687
+ */
688
+ #define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE"
689
+
690
+ /**
691
+ * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs
692
+ *
693
+ * The variable can be set to the following values:
694
+ * "0" - Do not scan for Steam Controllers
695
+ * "1" - Scan for Steam Controllers (the default)
696
+ *
697
+ * The default value is "1". This hint must be set before initializing the joystick subsystem.
698
+ */
699
+ #define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS"
700
+
701
+ /**
702
+ * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices.
703
+ *
704
+ * This variable can be set to the following values:
705
+ * "0" - RAWINPUT drivers are not used
706
+ * "1" - RAWINPUT drivers are used (the default)
707
+ *
708
+ */
709
+ #define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT"
710
+
711
+ /**
712
+ * \brief A variable controlling whether a separate thread should be used
713
+ * for handling joystick detection and raw input messages on Windows
714
+ *
715
+ * This variable can be set to the following values:
716
+ * "0" - A separate thread is not used (the default)
717
+ * "1" - A separate thread is used for handling raw input messages
718
+ *
719
+ */
720
+ #define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD"
721
+
722
+ /**
723
+ * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values.
724
+ *
725
+ * This variable can be set to the following values:
726
+ * "0" - Return unfiltered joystick axis values (the default)
727
+ * "1" - Return axis values with deadzones taken into account
728
+ */
729
+ #define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES"
730
+
731
+ /**
732
+ * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it.
733
+ * This is a debugging aid for developers and not expected to be used by end users. The default is "1"
734
+ *
735
+ * This variable can be set to the following values:
736
+ * "0" - don't allow topmost
737
+ * "1" - allow topmost
738
+ */
739
+ #define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST"
740
+
741
+ /**
742
+ * \brief A variable that controls the timer resolution, in milliseconds.
743
+ *
744
+ * The higher resolution the timer, the more frequently the CPU services
745
+ * timer interrupts, and the more precise delays are, but this takes up
746
+ * power and CPU time. This hint is only used on Windows 7 and earlier.
747
+ *
748
+ * See this blog post for more information:
749
+ * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/
750
+ *
751
+ * If this variable is set to "0", the system timer resolution is not set.
752
+ *
753
+ * The default value is "1". This hint may be set at any time.
754
+ */
755
+ #define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION"
756
+
757
+
758
+ /**
759
+ * \brief A variable describing the content orientation on QtWayland-based platforms.
760
+ *
761
+ * On QtWayland platforms, windows are rotated client-side to allow for custom
762
+ * transitions. In order to correctly position overlays (e.g. volume bar) and
763
+ * gestures (e.g. events view, close/minimize gestures), the system needs to
764
+ * know in which orientation the application is currently drawing its contents.
765
+ *
766
+ * This does not cause the window to be rotated or resized, the application
767
+ * needs to take care of drawing the content in the right orientation (the
768
+ * framebuffer is always in portrait mode).
769
+ *
770
+ * This variable can be one of the following values:
771
+ * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape"
772
+ */
773
+ #define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION"
774
+
775
+ /**
776
+ * \brief Flags to set on QtWayland windows to integrate with the native window manager.
777
+ *
778
+ * On QtWayland platforms, this hint controls the flags to set on the windows.
779
+ * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures.
780
+ *
781
+ * This variable is a space-separated list of the following values (empty = no flags):
782
+ * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager"
783
+ */
784
+ #define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS"
785
+
786
+ /**
787
+ * \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size
788
+ *
789
+ * Use this hint in case you need to set SDL's threads stack size to other than the default.
790
+ * This is specially useful if you build SDL against a non glibc libc library (such as musl) which
791
+ * provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses).
792
+ * Support for this hint is currently available only in the pthread, Windows, and PSP backend.
793
+ *
794
+ * Instead of this hint, in 2.0.9 and later, you can use
795
+ * SDL_CreateThreadWithStackSize(). This hint only works with the classic
796
+ * SDL_CreateThread().
797
+ */
798
+ #define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE"
799
+
800
+ /**
801
+ * \brief A string specifying additional information to use with SDL_SetThreadPriority.
802
+ *
803
+ * By default SDL_SetThreadPriority will make appropriate system changes in order to
804
+ * apply a thread priority. For example on systems using pthreads the scheduler policy
805
+ * is changed automatically to a policy that works well with a given priority.
806
+ * Code which has specific requirements can override SDL's default behavior with this hint.
807
+ *
808
+ * pthread hint values are "current", "other", "fifo" and "rr".
809
+ * Currently no other platform hint values are defined but may be in the future.
810
+ *
811
+ * \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro
812
+ * configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME
813
+ * after calling SDL_SetThreadPriority().
814
+ */
815
+ #define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY"
816
+
817
+ /**
818
+ * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime.
819
+ *
820
+ * On some platforms, like Linux, a realtime priority thread may be subject to restrictions
821
+ * that require special handling by the application. This hint exists to let SDL know that
822
+ * the app is prepared to handle said restrictions.
823
+ *
824
+ * On Linux, SDL will apply the following configuration to any thread that becomes realtime:
825
+ * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy,
826
+ * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit.
827
+ * * Exceeding this limit will result in the kernel sending SIGKILL to the app,
828
+ * * Refer to the man pages for more information.
829
+ *
830
+ * This variable can be set to the following values:
831
+ * "0" - default platform specific behaviour
832
+ * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy
833
+ */
834
+ #define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL"
835
+
836
+ /**
837
+ * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS)
838
+ */
839
+ #define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED"
840
+
841
+ /**
842
+ * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac
843
+ *
844
+ * If present, holding ctrl while left clicking will generate a right click
845
+ * event when on Mac.
846
+ */
847
+ #define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK"
848
+
849
+ /**
850
+ * \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries
851
+ *
852
+ * SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It
853
+ * can use two different sets of binaries, those compiled by the user from source
854
+ * or those provided by the Chrome browser. In the later case, these binaries require
855
+ * that SDL loads a DLL providing the shader compiler.
856
+ *
857
+ * This variable can be set to the following values:
858
+ * "d3dcompiler_46.dll" - default, best for Vista or later.
859
+ * "d3dcompiler_43.dll" - for XP support.
860
+ * "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries.
861
+ *
862
+ */
863
+ #define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER"
864
+
865
+ /**
866
+ * \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p").
867
+ *
868
+ * If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has
869
+ * SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly
870
+ * created SDL_Window:
871
+ *
872
+ * 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is
873
+ * needed for example when sharing an OpenGL context across multiple windows.
874
+ *
875
+ * 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for
876
+ * OpenGL rendering.
877
+ *
878
+ * This variable can be set to the following values:
879
+ * The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should
880
+ * share a pixel format with.
881
+ */
882
+ #define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT"
883
+
884
+ /**
885
+ * \brief A URL to a WinRT app's privacy policy
886
+ *
887
+ * All network-enabled WinRT apps must make a privacy policy available to its
888
+ * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be
889
+ * be available in the Windows Settings charm, as accessed from within the app.
890
+ * SDL provides code to add a URL-based link there, which can point to the app's
891
+ * privacy policy.
892
+ *
893
+ * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL
894
+ * before calling any SDL_Init() functions. The contents of the hint should
895
+ * be a valid URL. For example, "http://www.example.com".
896
+ *
897
+ * The default value is "", which will prevent SDL from adding a privacy policy
898
+ * link to the Settings charm. This hint should only be set during app init.
899
+ *
900
+ * The label text of an app's "Privacy Policy" link may be customized via another
901
+ * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
902
+ *
903
+ * Please note that on Windows Phone, Microsoft does not provide standard UI
904
+ * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL
905
+ * will not get used on that platform. Network-enabled phone apps should display
906
+ * their privacy policy through some other, in-app means.
907
+ */
908
+ #define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL"
909
+
910
+ /** \brief Label text for a WinRT app's privacy policy link
911
+ *
912
+ * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT,
913
+ * Microsoft mandates that this policy be available via the Windows Settings charm.
914
+ * SDL provides code to add a link there, with its label text being set via the
915
+ * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL.
916
+ *
917
+ * Please note that a privacy policy's contents are not set via this hint. A separate
918
+ * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the
919
+ * policy.
920
+ *
921
+ * The contents of this hint should be encoded as a UTF8 string.
922
+ *
923
+ * The default value is "Privacy Policy". This hint should only be set during app
924
+ * initialization, preferably before any calls to SDL_Init().
925
+ *
926
+ * For additional information on linking to a privacy policy, see the documentation for
927
+ * SDL_HINT_WINRT_PRIVACY_POLICY_URL.
928
+ */
929
+ #define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL"
930
+
931
+ /** \brief Allows back-button-press events on Windows Phone to be marked as handled
932
+ *
933
+ * Windows Phone devices typically feature a Back button. When pressed,
934
+ * the OS will emit back-button-press events, which apps are expected to
935
+ * handle in an appropriate manner. If apps do not explicitly mark these
936
+ * events as 'Handled', then the OS will invoke its default behavior for
937
+ * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to
938
+ * terminate the app (and attempt to switch to the previous app, or to the
939
+ * device's home screen).
940
+ *
941
+ * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL
942
+ * to mark back-button-press events as Handled, if and when one is sent to
943
+ * the app.
944
+ *
945
+ * Internally, Windows Phone sends back button events as parameters to
946
+ * special back-button-press callback functions. Apps that need to respond
947
+ * to back-button-press events are expected to register one or more
948
+ * callback functions for such, shortly after being launched (during the
949
+ * app's initialization phase). After the back button is pressed, the OS
950
+ * will invoke these callbacks. If the app's callback(s) do not explicitly
951
+ * mark the event as handled by the time they return, or if the app never
952
+ * registers one of these callback, the OS will consider the event
953
+ * un-handled, and it will apply its default back button behavior (terminate
954
+ * the app).
955
+ *
956
+ * SDL registers its own back-button-press callback with the Windows Phone
957
+ * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN
958
+ * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which
959
+ * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON.
960
+ * If the hint's value is set to "1", the back button event's Handled
961
+ * property will get set to 'true'. If the hint's value is set to something
962
+ * else, or if it is unset, SDL will leave the event's Handled property
963
+ * alone. (By default, the OS sets this property to 'false', to note.)
964
+ *
965
+ * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a
966
+ * back button is pressed, or can set it in direct-response to a back button
967
+ * being pressed.
968
+ *
969
+ * In order to get notified when a back button is pressed, SDL apps should
970
+ * register a callback function with SDL_AddEventWatch(), and have it listen
971
+ * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK.
972
+ * (Alternatively, SDL_KEYUP events can be listened-for. Listening for
973
+ * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON
974
+ * set by such a callback, will be applied to the OS' current
975
+ * back-button-press event.
976
+ *
977
+ * More details on back button behavior in Windows Phone apps can be found
978
+ * at the following page, on Microsoft's developer site:
979
+ * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx
980
+ */
981
+ #define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON"
982
+
983
+ /**
984
+ * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X.
985
+ *
986
+ * This hint only applies to Mac OS X.
987
+ *
988
+ * The variable can be set to the following values:
989
+ * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and
990
+ * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen"
991
+ * button on their titlebars).
992
+ * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and
993
+ * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen"
994
+ * button on their titlebars).
995
+ *
996
+ * The default value is "1". Spaces are disabled regardless of this hint if
997
+ * the OS isn't at least Mac OS X Lion (10.7). This hint must be set before
998
+ * any windows are created.
999
+ */
1000
+ #define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES"
1001
+
1002
+ /**
1003
+ * \brief When set don't force the SDL app to become a foreground process
1004
+ *
1005
+ * This hint only applies to Mac OS X.
1006
+ *
1007
+ */
1008
+ #define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP"
1009
+
1010
+ /**
1011
+ * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc.
1012
+ *
1013
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION.
1014
+ *
1015
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
1016
+ * after a given relative path was not found in the internal storage and assets.
1017
+ *
1018
+ * By default this hint is not set and the APK expansion files are not searched.
1019
+ */
1020
+ #define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION"
1021
+
1022
+ /**
1023
+ * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc.
1024
+ *
1025
+ * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION.
1026
+ *
1027
+ * If both hints were set then SDL_RWFromFile() will look into expansion files
1028
+ * after a given relative path was not found in the internal storage and assets.
1029
+ *
1030
+ * By default this hint is not set and the APK expansion files are not searched.
1031
+ */
1032
+ #define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION"
1033
+
1034
+ /**
1035
+ * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events.
1036
+ *
1037
+ * The variable can be set to the following values:
1038
+ * "0" - SDL_TEXTEDITING events are sent, and it is the application's
1039
+ * responsibility to render the text from these events and
1040
+ * differentiate it somehow from committed text. (default)
1041
+ * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent,
1042
+ * and text that is being composed will be rendered in its own UI.
1043
+ */
1044
+ #define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING"
1045
+
1046
+ /**
1047
+ * \brief A variable to control whether we trap the Android back button to handle it manually.
1048
+ * This is necessary for the right mouse button to work on some Android devices, or
1049
+ * to be able to trap the back button for use in your code reliably. If set to true,
1050
+ * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of
1051
+ * SDL_SCANCODE_AC_BACK.
1052
+ *
1053
+ * The variable can be set to the following values:
1054
+ * "0" - Back button will be handled as usual for system. (default)
1055
+ * "1" - Back button will be trapped, allowing you to handle the key press
1056
+ * manually. (This will also let right mouse click work on systems
1057
+ * where the right mouse button functions as back.)
1058
+ *
1059
+ * The value of this hint is used at runtime, so it can be changed at any time.
1060
+ */
1061
+ #define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON"
1062
+
1063
+ /**
1064
+ * \brief A variable to control whether the event loop will block itself when the app is paused.
1065
+ *
1066
+ * The variable can be set to the following values:
1067
+ * "0" - Non blocking.
1068
+ * "1" - Blocking. (default)
1069
+ *
1070
+ * The value should be set before SDL is initialized.
1071
+ */
1072
+ #define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE"
1073
+
1074
+ /**
1075
+ * \brief A variable to control whether SDL will pause audio in background
1076
+ * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking")
1077
+ *
1078
+ * The variable can be set to the following values:
1079
+ * "0" - Non paused.
1080
+ * "1" - Paused. (default)
1081
+ *
1082
+ * The value should be set before SDL is initialized.
1083
+ */
1084
+ #define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO"
1085
+
1086
+ /**
1087
+ * \brief A variable to control whether the return key on the soft keyboard
1088
+ * should hide the soft keyboard on Android and iOS.
1089
+ *
1090
+ * The variable can be set to the following values:
1091
+ * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default)
1092
+ * "1" - The return key will hide the keyboard.
1093
+ *
1094
+ * The value of this hint is used at runtime, so it can be changed at any time.
1095
+ */
1096
+ #define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME"
1097
+
1098
+ /**
1099
+ * \brief override the binding element for keyboard inputs for Emscripten builds
1100
+ *
1101
+ * This hint only applies to the emscripten platform
1102
+ *
1103
+ * The variable can be one of
1104
+ * "#window" - The javascript window object (this is the default)
1105
+ * "#document" - The javascript document object
1106
+ * "#screen" - the javascript window.screen object
1107
+ * "#canvas" - the WebGL canvas element
1108
+ * any other string without a leading # sign applies to the element on the page with that ID.
1109
+ */
1110
+ #define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
1111
+
1112
+ /**
1113
+ * \brief Disable giving back control to the browser automatically
1114
+ * when running with asyncify
1115
+ *
1116
+ * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations
1117
+ * such as refreshing the screen or polling events.
1118
+ *
1119
+ * This hint only applies to the emscripten platform
1120
+ *
1121
+ * The variable can be set to the following values:
1122
+ * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes)
1123
+ * "1" - Enable emscripten_sleep calls (the default)
1124
+ */
1125
+ #define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY"
1126
+
1127
+ /**
1128
+ * \brief Tell SDL not to catch the SIGINT or SIGTERM signals.
1129
+ *
1130
+ * This hint only applies to Unix-like platforms, and should set before
1131
+ * any calls to SDL_Init()
1132
+ *
1133
+ * The variable can be set to the following values:
1134
+ * "0" - SDL will install a SIGINT and SIGTERM handler, and when it
1135
+ * catches a signal, convert it into an SDL_QUIT event.
1136
+ * "1" - SDL will not install a signal handler at all.
1137
+ */
1138
+ #define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS"
1139
+
1140
+ /**
1141
+ * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows.
1142
+ *
1143
+ * The variable can be set to the following values:
1144
+ * "0" - SDL will generate a window-close event when it sees Alt+F4.
1145
+ * "1" - SDL will only do normal key handling for Alt+F4.
1146
+ */
1147
+ #define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4"
1148
+
1149
+ /**
1150
+ * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs.
1151
+ *
1152
+ * The bitmap header version 4 is required for proper alpha channel support and
1153
+ * SDL will use it when required. Should this not be desired, this hint can
1154
+ * force the use of the 40 byte header version which is supported everywhere.
1155
+ *
1156
+ * The variable can be set to the following values:
1157
+ * "0" - Surfaces with a colorkey or an alpha channel are saved to a
1158
+ * 32-bit BMP file with an alpha mask. SDL will use the bitmap
1159
+ * header version 4 and set the alpha mask accordingly.
1160
+ * "1" - Surfaces with a colorkey or an alpha channel are saved to a
1161
+ * 32-bit BMP file without an alpha mask. The alpha channel data
1162
+ * will be in the file, but applications are going to ignore it.
1163
+ *
1164
+ * The default value is "0".
1165
+ */
1166
+ #define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT"
1167
+
1168
+ /**
1169
+ * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception.
1170
+ * The 0x406D1388 Exception is a trick used to inform Visual Studio of a
1171
+ * thread's name, but it tends to cause problems with other debuggers,
1172
+ * and the .NET runtime. Note that SDL 2.0.6 and later will still use
1173
+ * the (safer) SetThreadDescription API, introduced in the Windows 10
1174
+ * Creators Update, if available.
1175
+ *
1176
+ * The variable can be set to the following values:
1177
+ * "0" - SDL will raise the 0x406D1388 Exception to name threads.
1178
+ * This is the default behavior of SDL <= 2.0.4.
1179
+ * "1" - SDL will not raise this exception, and threads will be unnamed. (default)
1180
+ * This is necessary with .NET languages or debuggers that aren't Visual Studio.
1181
+ */
1182
+ #define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING"
1183
+
1184
+ /**
1185
+ * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI
1186
+ *
1187
+ * Also known as Z-order. The variable can take a negative or positive value.
1188
+ * The default is 10000.
1189
+ */
1190
+ #define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
1191
+
1192
+ /**
1193
+ * \brief Tell the video driver that we only want a double buffer.
1194
+ *
1195
+ * By default, most lowlevel 2D APIs will use a triple buffer scheme that
1196
+ * wastes no CPU time on waiting for vsync after issuing a flip, but
1197
+ * introduces a frame of latency. On the other hand, using a double buffer
1198
+ * scheme instead is recommended for cases where low latency is an important
1199
+ * factor because we save a whole frame of latency.
1200
+ * We do so by waiting for vsync immediately after issuing a flip, usually just
1201
+ * after eglSwapBuffers call in the backend's *_SwapWindow function.
1202
+ *
1203
+ * Since it's driver-specific, it's only supported where possible and
1204
+ * implemented. Currently supported the following drivers:
1205
+ * - KMSDRM (kmsdrm)
1206
+ * - Raspberry Pi (raspberrypi)
1207
+ */
1208
+ #define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER"
1209
+
1210
+ /**
1211
+ * \brief A variable controlling what driver to use for OpenGL ES contexts.
1212
+ *
1213
+ * On some platforms, currently Windows and X11, OpenGL drivers may support
1214
+ * creating contexts with an OpenGL ES profile. By default SDL uses these
1215
+ * profiles, when available, otherwise it attempts to load an OpenGL ES
1216
+ * library, e.g. that provided by the ANGLE project. This variable controls
1217
+ * whether SDL follows this default behaviour or will always load an
1218
+ * OpenGL ES library.
1219
+ *
1220
+ * Circumstances where this is useful include
1221
+ * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE,
1222
+ * or emulator, e.g. those from ARM, Imagination or Qualcomm.
1223
+ * - Resolving OpenGL ES function addresses at link time by linking with
1224
+ * the OpenGL ES library instead of querying them at run time with
1225
+ * SDL_GL_GetProcAddress().
1226
+ *
1227
+ * Caution: for an application to work with the default behaviour across
1228
+ * different OpenGL drivers it must query the OpenGL ES function
1229
+ * addresses at run time using SDL_GL_GetProcAddress().
1230
+ *
1231
+ * This variable is ignored on most platforms because OpenGL ES is native
1232
+ * or not supported.
1233
+ *
1234
+ * This variable can be set to the following values:
1235
+ * "0" - Use ES profile of OpenGL, if available. (Default when not set.)
1236
+ * "1" - Load OpenGL ES library using the default library names.
1237
+ *
1238
+ */
1239
+ #define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER"
1240
+
1241
+ /**
1242
+ * \brief A variable controlling speed/quality tradeoff of audio resampling.
1243
+ *
1244
+ * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ )
1245
+ * to handle audio resampling. There are different resampling modes available
1246
+ * that produce different levels of quality, using more CPU.
1247
+ *
1248
+ * If this hint isn't specified to a valid setting, or libsamplerate isn't
1249
+ * available, SDL will use the default, internal resampling algorithm.
1250
+ *
1251
+ * Note that this is currently only applicable to resampling audio that is
1252
+ * being written to a device for playback or audio being read from a device
1253
+ * for capture. SDL_AudioCVT always uses the default resampler (although this
1254
+ * might change for SDL 2.1).
1255
+ *
1256
+ * This hint is currently only checked at audio subsystem initialization.
1257
+ *
1258
+ * This variable can be set to the following values:
1259
+ *
1260
+ * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast)
1261
+ * "1" or "fast" - Use fast, slightly higher quality resampling, if available
1262
+ * "2" or "medium" - Use medium quality resampling, if available
1263
+ * "3" or "best" - Use high quality resampling, if available
1264
+ */
1265
+ #define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE"
1266
+
1267
+ /**
1268
+ * \brief A variable controlling the audio category on iOS and Mac OS X
1269
+ *
1270
+ * This variable can be set to the following values:
1271
+ *
1272
+ * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default)
1273
+ * "playback" - Use the AVAudioSessionCategoryPlayback category
1274
+ *
1275
+ * For more information, see Apple's documentation:
1276
+ * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html
1277
+ */
1278
+ #define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY"
1279
+
1280
+ /**
1281
+ * \brief A variable controlling whether the 2D render API is compatible or efficient.
1282
+ *
1283
+ * This variable can be set to the following values:
1284
+ *
1285
+ * "0" - Don't use batching to make rendering more efficient.
1286
+ * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls.
1287
+ *
1288
+ * Up to SDL 2.0.9, the render API would draw immediately when requested. Now
1289
+ * it batches up draw requests and sends them all to the GPU only when forced
1290
+ * to (during SDL_RenderPresent, when changing render targets, by updating a
1291
+ * texture that the batch needs, etc). This is significantly more efficient,
1292
+ * but it can cause problems for apps that expect to render on top of the
1293
+ * render API's output. As such, SDL will disable batching if a specific
1294
+ * render backend is requested (since this might indicate that the app is
1295
+ * planning to use the underlying graphics API directly). This hint can
1296
+ * be used to explicitly request batching in this instance. It is a contract
1297
+ * that you will either never use the underlying graphics API directly, or
1298
+ * if you do, you will call SDL_RenderFlush() before you do so any current
1299
+ * batch goes to the GPU before your work begins. Not following this contract
1300
+ * will result in undefined behavior.
1301
+ */
1302
+ #define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING"
1303
+
1304
+
1305
+ /**
1306
+ * \brief A variable controlling whether SDL updates joystick state when getting input events
1307
+ *
1308
+ * This variable can be set to the following values:
1309
+ *
1310
+ * "0" - You'll call SDL_JoystickUpdate() manually
1311
+ * "1" - SDL will automatically call SDL_JoystickUpdate() (default)
1312
+ *
1313
+ * This hint can be toggled on and off at runtime.
1314
+ */
1315
+ #define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS"
1316
+
1317
+
1318
+ /**
1319
+ * \brief A variable controlling whether SDL updates sensor state when getting input events
1320
+ *
1321
+ * This variable can be set to the following values:
1322
+ *
1323
+ * "0" - You'll call SDL_SensorUpdate() manually
1324
+ * "1" - SDL will automatically call SDL_SensorUpdate() (default)
1325
+ *
1326
+ * This hint can be toggled on and off at runtime.
1327
+ */
1328
+ #define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS"
1329
+
1330
+
1331
+ /**
1332
+ * \brief A variable controlling whether SDL logs all events pushed onto its internal queue.
1333
+ *
1334
+ * This variable can be set to the following values:
1335
+ *
1336
+ * "0" - Don't log any events (default)
1337
+ * "1" - Log all events except mouse and finger motion, which are pretty spammy.
1338
+ * "2" - Log all events.
1339
+ *
1340
+ * This is generally meant to be used to debug SDL itself, but can be useful
1341
+ * for application developers that need better visibility into what is going
1342
+ * on in the event queue. Logged events are sent through SDL_Log(), which
1343
+ * means by default they appear on stdout on most platforms or maybe
1344
+ * OutputDebugString() on Windows, and can be funneled by the app with
1345
+ * SDL_LogSetOutputFunction(), etc.
1346
+ *
1347
+ * This hint can be toggled on and off at runtime, if you only need to log
1348
+ * events for a small subset of program execution.
1349
+ */
1350
+ #define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING"
1351
+
1352
+
1353
+
1354
+ /**
1355
+ * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file.
1356
+ *
1357
+ * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE
1358
+ * file) is not always reliable. In case the size is wrong, it's possible to
1359
+ * just ignore it and step through the chunks until a fixed limit is reached.
1360
+ *
1361
+ * Note that files that have trailing data unrelated to the WAVE file or
1362
+ * corrupt files may slow down the loading process without a reliable boundary.
1363
+ * By default, SDL stops after 10000 chunks to prevent wasting time. Use the
1364
+ * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value.
1365
+ *
1366
+ * This variable can be set to the following values:
1367
+ *
1368
+ * "force" - Always use the RIFF chunk size as a boundary for the chunk search
1369
+ * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default)
1370
+ * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB
1371
+ * "maximum" - Search for chunks until the end of file (not recommended)
1372
+ */
1373
+ #define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE"
1374
+
1375
+ /**
1376
+ * \brief Controls how a truncated WAVE file is handled.
1377
+ *
1378
+ * A WAVE file is considered truncated if any of the chunks are incomplete or
1379
+ * the data chunk size is not a multiple of the block size. By default, SDL
1380
+ * decodes until the first incomplete block, as most applications seem to do.
1381
+ *
1382
+ * This variable can be set to the following values:
1383
+ *
1384
+ * "verystrict" - Raise an error if the file is truncated
1385
+ * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored
1386
+ * "dropframe" - Decode until the first incomplete sample frame
1387
+ * "dropblock" - Decode until the first incomplete block (default)
1388
+ */
1389
+ #define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION"
1390
+
1391
+ /**
1392
+ * \brief Controls how the fact chunk affects the loading of a WAVE file.
1393
+ *
1394
+ * The fact chunk stores information about the number of samples of a WAVE
1395
+ * file. The Standards Update from Microsoft notes that this value can be used
1396
+ * to 'determine the length of the data in seconds'. This is especially useful
1397
+ * for compressed formats (for which this is a mandatory chunk) if they produce
1398
+ * multiple sample frames per block and truncating the block is not allowed.
1399
+ * The fact chunk can exactly specify how many sample frames there should be
1400
+ * in this case.
1401
+ *
1402
+ * Unfortunately, most application seem to ignore the fact chunk and so SDL
1403
+ * ignores it by default as well.
1404
+ *
1405
+ * This variable can be set to the following values:
1406
+ *
1407
+ * "truncate" - Use the number of samples to truncate the wave data if
1408
+ * the fact chunk is present and valid
1409
+ * "strict" - Like "truncate", but raise an error if the fact chunk
1410
+ * is invalid, not present for non-PCM formats, or if the
1411
+ * data chunk doesn't have that many samples
1412
+ * "ignorezero" - Like "truncate", but ignore fact chunk if the number of
1413
+ * samples is zero
1414
+ * "ignore" - Ignore fact chunk entirely (default)
1415
+ */
1416
+ #define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK"
1417
+
1418
+ /**
1419
+ * \brief Override for SDL_GetDisplayUsableBounds()
1420
+ *
1421
+ * If set, this hint will override the expected results for
1422
+ * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want
1423
+ * to do this, but this allows an embedded system to request that some of the
1424
+ * screen be reserved for other uses when paired with a well-behaved
1425
+ * application.
1426
+ *
1427
+ * The contents of this hint must be 4 comma-separated integers, the first
1428
+ * is the bounds x, then y, width and height, in that order.
1429
+ */
1430
+ #define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS"
1431
+
1432
+ /**
1433
+ * \brief Specify an application name for an audio device.
1434
+ *
1435
+ * Some audio backends (such as PulseAudio) allow you to describe your audio
1436
+ * stream. Among other things, this description might show up in a system
1437
+ * control panel that lets the user adjust the volume on specific audio
1438
+ * streams instead of using one giant master volume slider.
1439
+ *
1440
+ * This hints lets you transmit that information to the OS. The contents of
1441
+ * this hint are used while opening an audio device. You should use a string
1442
+ * that describes your program ("My Game 2: The Revenge")
1443
+ *
1444
+ * Setting this to "" or leaving it unset will have SDL use a reasonable
1445
+ * default: probably the application's name or "SDL Application" if SDL
1446
+ * doesn't have any better information.
1447
+ *
1448
+ * On targets where this is not supported, this hint does nothing.
1449
+ */
1450
+ #define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME"
1451
+
1452
+ /**
1453
+ * \brief Specify an application name for an audio device.
1454
+ *
1455
+ * Some audio backends (such as PulseAudio) allow you to describe your audio
1456
+ * stream. Among other things, this description might show up in a system
1457
+ * control panel that lets the user adjust the volume on specific audio
1458
+ * streams instead of using one giant master volume slider.
1459
+ *
1460
+ * This hints lets you transmit that information to the OS. The contents of
1461
+ * this hint are used while opening an audio device. You should use a string
1462
+ * that describes your what your program is playing ("audio stream" is
1463
+ * probably sufficient in many cases, but this could be useful for something
1464
+ * like "team chat" if you have a headset playing VoIP audio separately).
1465
+ *
1466
+ * Setting this to "" or leaving it unset will have SDL use a reasonable
1467
+ * default: "audio stream" or something similar.
1468
+ *
1469
+ * On targets where this is not supported, this hint does nothing.
1470
+ */
1471
+ #define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME"
1472
+
1473
+
1474
+ /**
1475
+ * \brief Override for SDL_GetPreferredLocales()
1476
+ *
1477
+ * If set, this will be favored over anything the OS might report for the
1478
+ * user's preferred locales. Changing this hint at runtime will not generate
1479
+ * a SDL_LOCALECHANGED event (but if you can change the hint, you can push
1480
+ * your own event, if you want).
1481
+ *
1482
+ * The format of this hint is a comma-separated list of language and locale,
1483
+ * combined with an underscore, as is a common format: "en_GB". Locale is
1484
+ * optional: "en". So you might have a list like this: "en_GB,jp,es_PT"
1485
+ */
1486
+ #define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES"
1487
+
1488
+
1489
+ /**
1490
+ * \brief An enumeration of hint priorities
1491
+ */
1492
+ typedef enum
1493
+ {
1494
+ SDL_HINT_DEFAULT,
1495
+ SDL_HINT_NORMAL,
1496
+ SDL_HINT_OVERRIDE
1497
+ } SDL_HintPriority;
1498
+
1499
+
1500
+ /**
1501
+ * \brief Set a hint with a specific priority
1502
+ *
1503
+ * The priority controls the behavior when setting a hint that already
1504
+ * has a value. Hints will replace existing hints of their priority and
1505
+ * lower. Environment variables are considered to have override priority.
1506
+ *
1507
+ * \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
1508
+ */
1509
+ extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name,
1510
+ const char *value,
1511
+ SDL_HintPriority priority);
1512
+
1513
+ /**
1514
+ * \brief Set a hint with normal priority
1515
+ *
1516
+ * \return SDL_TRUE if the hint was set, SDL_FALSE otherwise
1517
+ */
1518
+ extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name,
1519
+ const char *value);
1520
+
1521
+ /**
1522
+ * \brief Get a hint
1523
+ *
1524
+ * \return The string value of a hint variable.
1525
+ */
1526
+ extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name);
1527
+
1528
+ /**
1529
+ * \brief Get a hint
1530
+ *
1531
+ * \return The boolean value of a hint variable.
1532
+ */
1533
+ extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value);
1534
+
1535
+ /**
1536
+ * \brief type definition of the hint callback function.
1537
+ */
1538
+ typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
1539
+
1540
+ /**
1541
+ * \brief Add a function to watch a particular hint
1542
+ *
1543
+ * \param name The hint to watch
1544
+ * \param callback The function to call when the hint value changes
1545
+ * \param userdata A pointer to pass to the callback function
1546
+ */
1547
+ extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name,
1548
+ SDL_HintCallback callback,
1549
+ void *userdata);
1550
+
1551
+ /**
1552
+ * \brief Remove a function watching a particular hint
1553
+ *
1554
+ * \param name The hint being watched
1555
+ * \param callback The function being called when the hint value changes
1556
+ * \param userdata A pointer being passed to the callback function
1557
+ */
1558
+ extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name,
1559
+ SDL_HintCallback callback,
1560
+ void *userdata);
1561
+
1562
+ /**
1563
+ * \brief Clear all hints
1564
+ *
1565
+ * This function is called during SDL_Quit() to free stored hints.
1566
+ */
1567
+ extern DECLSPEC void SDLCALL SDL_ClearHints(void);
1568
+
1569
+
1570
+ /* Ends C function definitions when using C++ */
1571
+ #ifdef __cplusplus
1572
+ }
1573
+ #endif
1574
+ #include "close_code.h"
1575
+
1576
+ #endif /* SDL_hints_h_ */
1577
+
1578
+ /* vi: set ts=4 sw=4 expandtab: */