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,115 @@
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
+ #ifndef SDL_timer_h_
23
+ #define SDL_timer_h_
24
+
25
+ /**
26
+ * \file SDL_timer.h
27
+ *
28
+ * Header for the SDL time management routines.
29
+ */
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+
34
+ #include "begin_code.h"
35
+ /* Set up for C function definitions, even when using C++ */
36
+ #ifdef __cplusplus
37
+ extern "C" {
38
+ #endif
39
+
40
+ /**
41
+ * \brief Get the number of milliseconds since the SDL library initialization.
42
+ *
43
+ * \note This value wraps if the program runs for more than ~49 days.
44
+ */
45
+ extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void);
46
+
47
+ /**
48
+ * \brief Compare SDL ticks values, and return true if A has passed B
49
+ *
50
+ * e.g. if you want to wait 100 ms, you could do this:
51
+ * Uint32 timeout = SDL_GetTicks() + 100;
52
+ * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
53
+ * ... do work until timeout has elapsed
54
+ * }
55
+ */
56
+ #define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0)
57
+
58
+ /**
59
+ * \brief Get the current value of the high resolution counter
60
+ */
61
+ extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void);
62
+
63
+ /**
64
+ * \brief Get the count per second of the high resolution counter
65
+ */
66
+ extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void);
67
+
68
+ /**
69
+ * \brief Wait a specified number of milliseconds before returning.
70
+ */
71
+ extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms);
72
+
73
+ /**
74
+ * Function prototype for the timer callback function.
75
+ *
76
+ * The callback function is passed the current timer interval and returns
77
+ * the next timer interval. If the returned value is the same as the one
78
+ * passed in, the periodic alarm continues, otherwise a new alarm is
79
+ * scheduled. If the callback returns 0, the periodic alarm is cancelled.
80
+ */
81
+ typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param);
82
+
83
+ /**
84
+ * Definition of the timer ID type.
85
+ */
86
+ typedef int SDL_TimerID;
87
+
88
+ /**
89
+ * \brief Add a new timer to the pool of timers already running.
90
+ *
91
+ * \return A timer ID, or 0 when an error occurs.
92
+ */
93
+ extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval,
94
+ SDL_TimerCallback callback,
95
+ void *param);
96
+
97
+ /**
98
+ * \brief Remove a timer knowing its ID.
99
+ *
100
+ * \return A boolean value indicating success or failure.
101
+ *
102
+ * \warning It is not safe to remove a timer multiple times.
103
+ */
104
+ extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id);
105
+
106
+
107
+ /* Ends C function definitions when using C++ */
108
+ #ifdef __cplusplus
109
+ }
110
+ #endif
111
+ #include "close_code.h"
112
+
113
+ #endif /* SDL_timer_h_ */
114
+
115
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,102 @@
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_touch.h
24
+ *
25
+ * Include file for SDL touch event handling.
26
+ */
27
+
28
+ #ifndef SDL_touch_h_
29
+ #define SDL_touch_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_error.h"
33
+ #include "SDL_video.h"
34
+
35
+ #include "begin_code.h"
36
+ /* Set up for C function definitions, even when using C++ */
37
+ #ifdef __cplusplus
38
+ extern "C" {
39
+ #endif
40
+
41
+ typedef Sint64 SDL_TouchID;
42
+ typedef Sint64 SDL_FingerID;
43
+
44
+ typedef enum
45
+ {
46
+ SDL_TOUCH_DEVICE_INVALID = -1,
47
+ SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */
48
+ SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */
49
+ SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */
50
+ } SDL_TouchDeviceType;
51
+
52
+ typedef struct SDL_Finger
53
+ {
54
+ SDL_FingerID id;
55
+ float x;
56
+ float y;
57
+ float pressure;
58
+ } SDL_Finger;
59
+
60
+ /* Used as the device ID for mouse events simulated with touch input */
61
+ #define SDL_TOUCH_MOUSEID ((Uint32)-1)
62
+
63
+ /* Used as the SDL_TouchID for touch events simulated with mouse input */
64
+ #define SDL_MOUSE_TOUCHID ((Sint64)-1)
65
+
66
+
67
+ /* Function prototypes */
68
+
69
+ /**
70
+ * \brief Get the number of registered touch devices.
71
+ */
72
+ extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void);
73
+
74
+ /**
75
+ * \brief Get the touch ID with the given index, or 0 if the index is invalid.
76
+ */
77
+ extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index);
78
+
79
+ /**
80
+ * \brief Get the type of the given touch device.
81
+ */
82
+ extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID);
83
+
84
+ /**
85
+ * \brief Get the number of active fingers for a given touch device.
86
+ */
87
+ extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID);
88
+
89
+ /**
90
+ * \brief Get the finger object of the given touch, with the given index.
91
+ */
92
+ extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index);
93
+
94
+ /* Ends C function definitions when using C++ */
95
+ #ifdef __cplusplus
96
+ }
97
+ #endif
98
+ #include "close_code.h"
99
+
100
+ #endif /* SDL_touch_h_ */
101
+
102
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,29 @@
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_types.h
24
+ *
25
+ * \deprecated
26
+ */
27
+
28
+ /* DEPRECATED */
29
+ #include "SDL_stdinc.h"
@@ -0,0 +1,162 @@
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_version.h
24
+ *
25
+ * This header defines the current SDL version.
26
+ */
27
+
28
+ #ifndef SDL_version_h_
29
+ #define SDL_version_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+
33
+ #include "begin_code.h"
34
+ /* Set up for C function definitions, even when using C++ */
35
+ #ifdef __cplusplus
36
+ extern "C" {
37
+ #endif
38
+
39
+ /**
40
+ * \brief Information the version of SDL in use.
41
+ *
42
+ * Represents the library's version as three levels: major revision
43
+ * (increments with massive changes, additions, and enhancements),
44
+ * minor revision (increments with backwards-compatible changes to the
45
+ * major revision), and patchlevel (increments with fixes to the minor
46
+ * revision).
47
+ *
48
+ * \sa SDL_VERSION
49
+ * \sa SDL_GetVersion
50
+ */
51
+ typedef struct SDL_version
52
+ {
53
+ Uint8 major; /**< major version */
54
+ Uint8 minor; /**< minor version */
55
+ Uint8 patch; /**< update version */
56
+ } SDL_version;
57
+
58
+ /* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL
59
+ */
60
+ #define SDL_MAJOR_VERSION 2
61
+ #define SDL_MINOR_VERSION 0
62
+ #define SDL_PATCHLEVEL 14
63
+
64
+ /**
65
+ * \brief Macro to determine SDL version program was compiled against.
66
+ *
67
+ * This macro fills in a SDL_version structure with the version of the
68
+ * library you compiled against. This is determined by what header the
69
+ * compiler uses. Note that if you dynamically linked the library, you might
70
+ * have a slightly newer or older version at runtime. That version can be
71
+ * determined with SDL_GetVersion(), which, unlike SDL_VERSION(),
72
+ * is not a macro.
73
+ *
74
+ * \param x A pointer to a SDL_version struct to initialize.
75
+ *
76
+ * \sa SDL_version
77
+ * \sa SDL_GetVersion
78
+ */
79
+ #define SDL_VERSION(x) \
80
+ { \
81
+ (x)->major = SDL_MAJOR_VERSION; \
82
+ (x)->minor = SDL_MINOR_VERSION; \
83
+ (x)->patch = SDL_PATCHLEVEL; \
84
+ }
85
+
86
+ /**
87
+ * This macro turns the version numbers into a numeric value:
88
+ * \verbatim
89
+ (1,2,3) -> (1203)
90
+ \endverbatim
91
+ *
92
+ * This assumes that there will never be more than 100 patchlevels.
93
+ */
94
+ #define SDL_VERSIONNUM(X, Y, Z) \
95
+ ((X)*1000 + (Y)*100 + (Z))
96
+
97
+ /**
98
+ * This is the version number macro for the current SDL version.
99
+ */
100
+ #define SDL_COMPILEDVERSION \
101
+ SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL)
102
+
103
+ /**
104
+ * This macro will evaluate to true if compiled with SDL at least X.Y.Z.
105
+ */
106
+ #define SDL_VERSION_ATLEAST(X, Y, Z) \
107
+ (SDL_COMPILEDVERSION >= SDL_VERSIONNUM(X, Y, Z))
108
+
109
+ /**
110
+ * \brief Get the version of SDL that is linked against your program.
111
+ *
112
+ * If you are linking to SDL dynamically, then it is possible that the
113
+ * current version will be different than the version you compiled against.
114
+ * This function returns the current version, while SDL_VERSION() is a
115
+ * macro that tells you what version you compiled with.
116
+ *
117
+ * \code
118
+ * SDL_version compiled;
119
+ * SDL_version linked;
120
+ *
121
+ * SDL_VERSION(&compiled);
122
+ * SDL_GetVersion(&linked);
123
+ * printf("We compiled against SDL version %d.%d.%d ...\n",
124
+ * compiled.major, compiled.minor, compiled.patch);
125
+ * printf("But we linked against SDL version %d.%d.%d.\n",
126
+ * linked.major, linked.minor, linked.patch);
127
+ * \endcode
128
+ *
129
+ * This function may be called safely at any time, even before SDL_Init().
130
+ *
131
+ * \sa SDL_VERSION
132
+ */
133
+ extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver);
134
+
135
+ /**
136
+ * \brief Get the code revision of SDL that is linked against your program.
137
+ *
138
+ * Returns an arbitrary string (a hash value) uniquely identifying the
139
+ * exact revision of the SDL library in use, and is only useful in comparing
140
+ * against other revisions. It is NOT an incrementing number.
141
+ */
142
+ extern DECLSPEC const char *SDLCALL SDL_GetRevision(void);
143
+
144
+ /**
145
+ * \brief Get the revision number of SDL that is linked against your program.
146
+ *
147
+ * Returns a number uniquely identifying the exact revision of the SDL
148
+ * library in use. It is an incrementing number based on commits to
149
+ * hg.libsdl.org.
150
+ */
151
+ extern DECLSPEC int SDLCALL SDL_GetRevisionNumber(void);
152
+
153
+
154
+ /* Ends C function definitions when using C++ */
155
+ #ifdef __cplusplus
156
+ }
157
+ #endif
158
+ #include "close_code.h"
159
+
160
+ #endif /* SDL_version_h_ */
161
+
162
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,1282 @@
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_video.h
24
+ *
25
+ * Header file for SDL video functions.
26
+ */
27
+
28
+ #ifndef SDL_video_h_
29
+ #define SDL_video_h_
30
+
31
+ #include "SDL_stdinc.h"
32
+ #include "SDL_pixels.h"
33
+ #include "SDL_rect.h"
34
+ #include "SDL_surface.h"
35
+
36
+ #include "begin_code.h"
37
+ /* Set up for C function definitions, even when using C++ */
38
+ #ifdef __cplusplus
39
+ extern "C" {
40
+ #endif
41
+
42
+ /**
43
+ * \brief The structure that defines a display mode
44
+ *
45
+ * \sa SDL_GetNumDisplayModes()
46
+ * \sa SDL_GetDisplayMode()
47
+ * \sa SDL_GetDesktopDisplayMode()
48
+ * \sa SDL_GetCurrentDisplayMode()
49
+ * \sa SDL_GetClosestDisplayMode()
50
+ * \sa SDL_SetWindowDisplayMode()
51
+ * \sa SDL_GetWindowDisplayMode()
52
+ */
53
+ typedef struct
54
+ {
55
+ Uint32 format; /**< pixel format */
56
+ int w; /**< width, in screen coordinates */
57
+ int h; /**< height, in screen coordinates */
58
+ int refresh_rate; /**< refresh rate (or zero for unspecified) */
59
+ void *driverdata; /**< driver-specific data, initialize to 0 */
60
+ } SDL_DisplayMode;
61
+
62
+ /**
63
+ * \brief The type used to identify a window
64
+ *
65
+ * \sa SDL_CreateWindow()
66
+ * \sa SDL_CreateWindowFrom()
67
+ * \sa SDL_DestroyWindow()
68
+ * \sa SDL_GetWindowData()
69
+ * \sa SDL_GetWindowFlags()
70
+ * \sa SDL_GetWindowGrab()
71
+ * \sa SDL_GetWindowPosition()
72
+ * \sa SDL_GetWindowSize()
73
+ * \sa SDL_GetWindowTitle()
74
+ * \sa SDL_HideWindow()
75
+ * \sa SDL_MaximizeWindow()
76
+ * \sa SDL_MinimizeWindow()
77
+ * \sa SDL_RaiseWindow()
78
+ * \sa SDL_RestoreWindow()
79
+ * \sa SDL_SetWindowData()
80
+ * \sa SDL_SetWindowFullscreen()
81
+ * \sa SDL_SetWindowGrab()
82
+ * \sa SDL_SetWindowIcon()
83
+ * \sa SDL_SetWindowPosition()
84
+ * \sa SDL_SetWindowSize()
85
+ * \sa SDL_SetWindowBordered()
86
+ * \sa SDL_SetWindowResizable()
87
+ * \sa SDL_SetWindowTitle()
88
+ * \sa SDL_ShowWindow()
89
+ */
90
+ typedef struct SDL_Window SDL_Window;
91
+
92
+ /**
93
+ * \brief The flags on a window
94
+ *
95
+ * \sa SDL_GetWindowFlags()
96
+ */
97
+ typedef enum
98
+ {
99
+ SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */
100
+ SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */
101
+ SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */
102
+ SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */
103
+ SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */
104
+ SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */
105
+ SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */
106
+ SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */
107
+ SDL_WINDOW_INPUT_GRABBED = 0x00000100, /**< window has grabbed input focus */
108
+ SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */
109
+ SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */
110
+ SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ),
111
+ SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */
112
+ SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported.
113
+ On macOS NSHighResolutionCapable must be set true in the
114
+ application's Info.plist for this to have any effect. */
115
+ SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to INPUT_GRABBED) */
116
+ SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */
117
+ SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */
118
+ SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */
119
+ SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */
120
+ SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */
121
+ SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */
122
+ SDL_WINDOW_METAL = 0x20000000 /**< window usable for Metal view */
123
+ } SDL_WindowFlags;
124
+
125
+ /**
126
+ * \brief Used to indicate that you don't care what the window position is.
127
+ */
128
+ #define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u
129
+ #define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X))
130
+ #define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0)
131
+ #define SDL_WINDOWPOS_ISUNDEFINED(X) \
132
+ (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK)
133
+
134
+ /**
135
+ * \brief Used to indicate that the window position should be centered.
136
+ */
137
+ #define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u
138
+ #define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X))
139
+ #define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0)
140
+ #define SDL_WINDOWPOS_ISCENTERED(X) \
141
+ (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK)
142
+
143
+ /**
144
+ * \brief Event subtype for window events
145
+ */
146
+ typedef enum
147
+ {
148
+ SDL_WINDOWEVENT_NONE, /**< Never used */
149
+ SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */
150
+ SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */
151
+ SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be
152
+ redrawn */
153
+ SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2
154
+ */
155
+ SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */
156
+ SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as
157
+ a result of an API call or through the
158
+ system or user changing the window size. */
159
+ SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */
160
+ SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */
161
+ SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size
162
+ and position */
163
+ SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */
164
+ SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */
165
+ SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */
166
+ SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */
167
+ SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */
168
+ SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */
169
+ SDL_WINDOWEVENT_HIT_TEST /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */
170
+ } SDL_WindowEventID;
171
+
172
+ /**
173
+ * \brief Event subtype for display events
174
+ */
175
+ typedef enum
176
+ {
177
+ SDL_DISPLAYEVENT_NONE, /**< Never used */
178
+ SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */
179
+ SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */
180
+ SDL_DISPLAYEVENT_DISCONNECTED /**< Display has been removed from the system */
181
+ } SDL_DisplayEventID;
182
+
183
+ typedef enum
184
+ {
185
+ SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */
186
+ SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */
187
+ SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */
188
+ SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */
189
+ SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */
190
+ } SDL_DisplayOrientation;
191
+
192
+ /**
193
+ * \brief An opaque handle to an OpenGL context.
194
+ */
195
+ typedef void *SDL_GLContext;
196
+
197
+ /**
198
+ * \brief OpenGL configuration attributes
199
+ */
200
+ typedef enum
201
+ {
202
+ SDL_GL_RED_SIZE,
203
+ SDL_GL_GREEN_SIZE,
204
+ SDL_GL_BLUE_SIZE,
205
+ SDL_GL_ALPHA_SIZE,
206
+ SDL_GL_BUFFER_SIZE,
207
+ SDL_GL_DOUBLEBUFFER,
208
+ SDL_GL_DEPTH_SIZE,
209
+ SDL_GL_STENCIL_SIZE,
210
+ SDL_GL_ACCUM_RED_SIZE,
211
+ SDL_GL_ACCUM_GREEN_SIZE,
212
+ SDL_GL_ACCUM_BLUE_SIZE,
213
+ SDL_GL_ACCUM_ALPHA_SIZE,
214
+ SDL_GL_STEREO,
215
+ SDL_GL_MULTISAMPLEBUFFERS,
216
+ SDL_GL_MULTISAMPLESAMPLES,
217
+ SDL_GL_ACCELERATED_VISUAL,
218
+ SDL_GL_RETAINED_BACKING,
219
+ SDL_GL_CONTEXT_MAJOR_VERSION,
220
+ SDL_GL_CONTEXT_MINOR_VERSION,
221
+ SDL_GL_CONTEXT_EGL,
222
+ SDL_GL_CONTEXT_FLAGS,
223
+ SDL_GL_CONTEXT_PROFILE_MASK,
224
+ SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
225
+ SDL_GL_FRAMEBUFFER_SRGB_CAPABLE,
226
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR,
227
+ SDL_GL_CONTEXT_RESET_NOTIFICATION,
228
+ SDL_GL_CONTEXT_NO_ERROR
229
+ } SDL_GLattr;
230
+
231
+ typedef enum
232
+ {
233
+ SDL_GL_CONTEXT_PROFILE_CORE = 0x0001,
234
+ SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002,
235
+ SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */
236
+ } SDL_GLprofile;
237
+
238
+ typedef enum
239
+ {
240
+ SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001,
241
+ SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002,
242
+ SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004,
243
+ SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008
244
+ } SDL_GLcontextFlag;
245
+
246
+ typedef enum
247
+ {
248
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000,
249
+ SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001
250
+ } SDL_GLcontextReleaseFlag;
251
+
252
+ typedef enum
253
+ {
254
+ SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000,
255
+ SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001
256
+ } SDL_GLContextResetNotification;
257
+
258
+ /* Function prototypes */
259
+
260
+ /**
261
+ * \brief Get the number of video drivers compiled into SDL
262
+ *
263
+ * \sa SDL_GetVideoDriver()
264
+ */
265
+ extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void);
266
+
267
+ /**
268
+ * \brief Get the name of a built in video driver.
269
+ *
270
+ * \note The video drivers are presented in the order in which they are
271
+ * normally checked during initialization.
272
+ *
273
+ * \sa SDL_GetNumVideoDrivers()
274
+ */
275
+ extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index);
276
+
277
+ /**
278
+ * \brief Initialize the video subsystem, optionally specifying a video driver.
279
+ *
280
+ * \param driver_name Initialize a specific driver by name, or NULL for the
281
+ * default video driver.
282
+ *
283
+ * \return 0 on success, -1 on error
284
+ *
285
+ * This function initializes the video subsystem; setting up a connection
286
+ * to the window manager, etc, and determines the available display modes
287
+ * and pixel formats, but does not initialize a window or graphics mode.
288
+ *
289
+ * \sa SDL_VideoQuit()
290
+ */
291
+ extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name);
292
+
293
+ /**
294
+ * \brief Shuts down the video subsystem.
295
+ *
296
+ * This function closes all windows, and restores the original video mode.
297
+ *
298
+ * \sa SDL_VideoInit()
299
+ */
300
+ extern DECLSPEC void SDLCALL SDL_VideoQuit(void);
301
+
302
+ /**
303
+ * \brief Returns the name of the currently initialized video driver.
304
+ *
305
+ * \return The name of the current video driver or NULL if no driver
306
+ * has been initialized
307
+ *
308
+ * \sa SDL_GetNumVideoDrivers()
309
+ * \sa SDL_GetVideoDriver()
310
+ */
311
+ extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void);
312
+
313
+ /**
314
+ * \brief Returns the number of available video displays.
315
+ *
316
+ * \sa SDL_GetDisplayBounds()
317
+ */
318
+ extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void);
319
+
320
+ /**
321
+ * \brief Get the name of a display in UTF-8 encoding
322
+ *
323
+ * \return The name of a display, or NULL for an invalid display index.
324
+ *
325
+ * \sa SDL_GetNumVideoDisplays()
326
+ */
327
+ extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex);
328
+
329
+ /**
330
+ * \brief Get the desktop area represented by a display, with the primary
331
+ * display located at 0,0
332
+ *
333
+ * \return 0 on success, or -1 if the index is out of range.
334
+ *
335
+ * \sa SDL_GetNumVideoDisplays()
336
+ */
337
+ extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect);
338
+
339
+ /**
340
+ * \brief Get the usable desktop area represented by a display, with the
341
+ * primary display located at 0,0
342
+ *
343
+ * This is the same area as SDL_GetDisplayBounds() reports, but with portions
344
+ * reserved by the system removed. For example, on Mac OS X, this subtracts
345
+ * the area occupied by the menu bar and dock.
346
+ *
347
+ * Setting a window to be fullscreen generally bypasses these unusable areas,
348
+ * so these are good guidelines for the maximum space available to a
349
+ * non-fullscreen window.
350
+ *
351
+ * \return 0 on success, or -1 if the index is out of range.
352
+ *
353
+ * \sa SDL_GetDisplayBounds()
354
+ * \sa SDL_GetNumVideoDisplays()
355
+ */
356
+ extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect);
357
+
358
+ /**
359
+ * \brief Get the dots/pixels-per-inch for a display
360
+ *
361
+ * \note Diagonal, horizontal and vertical DPI can all be optionally
362
+ * returned if the parameter is non-NULL.
363
+ *
364
+ * \return 0 on success, or -1 if no DPI information is available or the index is out of range.
365
+ *
366
+ * \sa SDL_GetNumVideoDisplays()
367
+ */
368
+ extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi);
369
+
370
+ /**
371
+ * \brief Get the orientation of a display
372
+ *
373
+ * \return The orientation of the display, or SDL_ORIENTATION_UNKNOWN if it isn't available.
374
+ *
375
+ * \sa SDL_GetNumVideoDisplays()
376
+ */
377
+ extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex);
378
+
379
+ /**
380
+ * \brief Returns the number of available display modes.
381
+ *
382
+ * \sa SDL_GetDisplayMode()
383
+ */
384
+ extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex);
385
+
386
+ /**
387
+ * \brief Fill in information about a specific display mode.
388
+ *
389
+ * \note The display modes are sorted in this priority:
390
+ * \li bits per pixel -> more colors to fewer colors
391
+ * \li width -> largest to smallest
392
+ * \li height -> largest to smallest
393
+ * \li refresh rate -> highest to lowest
394
+ *
395
+ * \sa SDL_GetNumDisplayModes()
396
+ */
397
+ extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex,
398
+ SDL_DisplayMode * mode);
399
+
400
+ /**
401
+ * \brief Fill in information about the desktop display mode.
402
+ */
403
+ extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode);
404
+
405
+ /**
406
+ * \brief Fill in information about the current display mode.
407
+ */
408
+ extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode);
409
+
410
+
411
+ /**
412
+ * \brief Get the closest match to the requested display mode.
413
+ *
414
+ * \param displayIndex The index of display from which mode should be queried.
415
+ * \param mode The desired display mode
416
+ * \param closest A pointer to a display mode to be filled in with the closest
417
+ * match of the available display modes.
418
+ *
419
+ * \return The passed in value \c closest, or NULL if no matching video mode
420
+ * was available.
421
+ *
422
+ * The available display modes are scanned, and \c closest is filled in with the
423
+ * closest mode matching the requested mode and returned. The mode format and
424
+ * refresh_rate default to the desktop mode if they are 0. The modes are
425
+ * scanned with size being first priority, format being second priority, and
426
+ * finally checking the refresh_rate. If all the available modes are too
427
+ * small, then NULL is returned.
428
+ *
429
+ * \sa SDL_GetNumDisplayModes()
430
+ * \sa SDL_GetDisplayMode()
431
+ */
432
+ extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest);
433
+
434
+ /**
435
+ * \brief Get the display index associated with a window.
436
+ *
437
+ * \return the display index of the display containing the center of the
438
+ * window, or -1 on error.
439
+ */
440
+ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window);
441
+
442
+ /**
443
+ * \brief Set the display mode used when a fullscreen window is visible.
444
+ *
445
+ * By default the window's dimensions and the desktop format and refresh rate
446
+ * are used.
447
+ *
448
+ * \param window The window for which the display mode should be set.
449
+ * \param mode The mode to use, or NULL for the default mode.
450
+ *
451
+ * \return 0 on success, or -1 if setting the display mode failed.
452
+ *
453
+ * \sa SDL_GetWindowDisplayMode()
454
+ * \sa SDL_SetWindowFullscreen()
455
+ */
456
+ extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window,
457
+ const SDL_DisplayMode
458
+ * mode);
459
+
460
+ /**
461
+ * \brief Fill in information about the display mode used when a fullscreen
462
+ * window is visible.
463
+ *
464
+ * \sa SDL_SetWindowDisplayMode()
465
+ * \sa SDL_SetWindowFullscreen()
466
+ */
467
+ extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window,
468
+ SDL_DisplayMode * mode);
469
+
470
+ /**
471
+ * \brief Get the pixel format associated with the window.
472
+ */
473
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window);
474
+
475
+ /**
476
+ * \brief Create a window with the specified position, dimensions, and flags.
477
+ *
478
+ * \param title The title of the window, in UTF-8 encoding.
479
+ * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
480
+ * ::SDL_WINDOWPOS_UNDEFINED.
481
+ * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
482
+ * ::SDL_WINDOWPOS_UNDEFINED.
483
+ * \param w The width of the window, in screen coordinates.
484
+ * \param h The height of the window, in screen coordinates.
485
+ * \param flags The flags for the window, a mask of any of the following:
486
+ * ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL,
487
+ * ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS,
488
+ * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED,
489
+ * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED,
490
+ * ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN
491
+ * ::SDL_WINDOW_METAL.
492
+ *
493
+ * \return The created window, or NULL if window creation failed.
494
+ *
495
+ * If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size
496
+ * in pixels may differ from its size in screen coordinates on platforms with
497
+ * high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query
498
+ * the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(),
499
+ * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the
500
+ * drawable size in pixels.
501
+ *
502
+ * If the window is created with any of the SDL_WINDOW_OPENGL or
503
+ * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function
504
+ * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the
505
+ * corresponding UnloadLibrary function is called by SDL_DestroyWindow().
506
+ *
507
+ * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver,
508
+ * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail.
509
+ *
510
+ * If SDL_WINDOW_METAL is specified on an OS that does not support Metal,
511
+ * SDL_CreateWindow() will fail.
512
+ *
513
+ * \note On non-Apple devices, SDL requires you to either not link to the
514
+ * Vulkan loader or link to a dynamic library version. This limitation
515
+ * may be removed in a future version of SDL.
516
+ *
517
+ * \sa SDL_DestroyWindow()
518
+ * \sa SDL_GL_LoadLibrary()
519
+ * \sa SDL_Vulkan_LoadLibrary()
520
+ */
521
+ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title,
522
+ int x, int y, int w,
523
+ int h, Uint32 flags);
524
+
525
+ /**
526
+ * \brief Create an SDL window from an existing native window.
527
+ *
528
+ * \param data A pointer to driver-dependent window creation data
529
+ *
530
+ * \return The created window, or NULL if window creation failed.
531
+ *
532
+ * \sa SDL_DestroyWindow()
533
+ */
534
+ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
535
+
536
+ /**
537
+ * \brief Get the numeric ID of a window, for logging purposes.
538
+ */
539
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
540
+
541
+ /**
542
+ * \brief Get a window from a stored ID, or NULL if it doesn't exist.
543
+ */
544
+ extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
545
+
546
+ /**
547
+ * \brief Get the window flags.
548
+ */
549
+ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window);
550
+
551
+ /**
552
+ * \brief Set the title of a window, in UTF-8 format.
553
+ *
554
+ * \sa SDL_GetWindowTitle()
555
+ */
556
+ extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window,
557
+ const char *title);
558
+
559
+ /**
560
+ * \brief Get the title of a window, in UTF-8 format.
561
+ *
562
+ * \sa SDL_SetWindowTitle()
563
+ */
564
+ extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window);
565
+
566
+ /**
567
+ * \brief Set the icon for a window.
568
+ *
569
+ * \param window The window for which the icon should be set.
570
+ * \param icon The icon for the window.
571
+ */
572
+ extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window,
573
+ SDL_Surface * icon);
574
+
575
+ /**
576
+ * \brief Associate an arbitrary named pointer with a window.
577
+ *
578
+ * \param window The window to associate with the pointer.
579
+ * \param name The name of the pointer.
580
+ * \param userdata The associated pointer.
581
+ *
582
+ * \return The previous value associated with 'name'
583
+ *
584
+ * \note The name is case-sensitive.
585
+ *
586
+ * \sa SDL_GetWindowData()
587
+ */
588
+ extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window,
589
+ const char *name,
590
+ void *userdata);
591
+
592
+ /**
593
+ * \brief Retrieve the data pointer associated with a window.
594
+ *
595
+ * \param window The window to query.
596
+ * \param name The name of the pointer.
597
+ *
598
+ * \return The value associated with 'name'
599
+ *
600
+ * \sa SDL_SetWindowData()
601
+ */
602
+ extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window,
603
+ const char *name);
604
+
605
+ /**
606
+ * \brief Set the position of a window.
607
+ *
608
+ * \param window The window to reposition.
609
+ * \param x The x coordinate of the window in screen coordinates, or
610
+ * ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
611
+ * \param y The y coordinate of the window in screen coordinates, or
612
+ * ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED.
613
+ *
614
+ * \note The window coordinate origin is the upper left of the display.
615
+ *
616
+ * \sa SDL_GetWindowPosition()
617
+ */
618
+ extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window,
619
+ int x, int y);
620
+
621
+ /**
622
+ * \brief Get the position of a window.
623
+ *
624
+ * \param window The window to query.
625
+ * \param x Pointer to variable for storing the x position, in screen
626
+ * coordinates. May be NULL.
627
+ * \param y Pointer to variable for storing the y position, in screen
628
+ * coordinates. May be NULL.
629
+ *
630
+ * \sa SDL_SetWindowPosition()
631
+ */
632
+ extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window,
633
+ int *x, int *y);
634
+
635
+ /**
636
+ * \brief Set the size of a window's client area.
637
+ *
638
+ * \param window The window to resize.
639
+ * \param w The width of the window, in screen coordinates. Must be >0.
640
+ * \param h The height of the window, in screen coordinates. Must be >0.
641
+ *
642
+ * \note Fullscreen windows automatically match the size of the display mode,
643
+ * and you should use SDL_SetWindowDisplayMode() to change their size.
644
+ *
645
+ * The window size in screen coordinates may differ from the size in pixels, if
646
+ * the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
647
+ * high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
648
+ * SDL_GetRendererOutputSize() to get the real client area size in pixels.
649
+ *
650
+ * \sa SDL_GetWindowSize()
651
+ * \sa SDL_SetWindowDisplayMode()
652
+ */
653
+ extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w,
654
+ int h);
655
+
656
+ /**
657
+ * \brief Get the size of a window's client area.
658
+ *
659
+ * \param window The window to query.
660
+ * \param w Pointer to variable for storing the width, in screen
661
+ * coordinates. May be NULL.
662
+ * \param h Pointer to variable for storing the height, in screen
663
+ * coordinates. May be NULL.
664
+ *
665
+ * The window size in screen coordinates may differ from the size in pixels, if
666
+ * the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with
667
+ * high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or
668
+ * SDL_GetRendererOutputSize() to get the real client area size in pixels.
669
+ *
670
+ * \sa SDL_SetWindowSize()
671
+ */
672
+ extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w,
673
+ int *h);
674
+
675
+ /**
676
+ * \brief Get the size of a window's borders (decorations) around the client area.
677
+ *
678
+ * \param window The window to query.
679
+ * \param top Pointer to variable for storing the size of the top border. NULL is permitted.
680
+ * \param left Pointer to variable for storing the size of the left border. NULL is permitted.
681
+ * \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted.
682
+ * \param right Pointer to variable for storing the size of the right border. NULL is permitted.
683
+ *
684
+ * \return 0 on success, or -1 if getting this information is not supported.
685
+ *
686
+ * \note if this function fails (returns -1), the size values will be
687
+ * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as
688
+ * if the window in question was borderless.
689
+ */
690
+ extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window,
691
+ int *top, int *left,
692
+ int *bottom, int *right);
693
+
694
+ /**
695
+ * \brief Set the minimum size of a window's client area.
696
+ *
697
+ * \param window The window to set a new minimum size.
698
+ * \param min_w The minimum width of the window, must be >0
699
+ * \param min_h The minimum height of the window, must be >0
700
+ *
701
+ * \note You can't change the minimum size of a fullscreen window, it
702
+ * automatically matches the size of the display mode.
703
+ *
704
+ * \sa SDL_GetWindowMinimumSize()
705
+ * \sa SDL_SetWindowMaximumSize()
706
+ */
707
+ extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window,
708
+ int min_w, int min_h);
709
+
710
+ /**
711
+ * \brief Get the minimum size of a window's client area.
712
+ *
713
+ * \param window The window to query.
714
+ * \param w Pointer to variable for storing the minimum width, may be NULL
715
+ * \param h Pointer to variable for storing the minimum height, may be NULL
716
+ *
717
+ * \sa SDL_GetWindowMaximumSize()
718
+ * \sa SDL_SetWindowMinimumSize()
719
+ */
720
+ extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window,
721
+ int *w, int *h);
722
+
723
+ /**
724
+ * \brief Set the maximum size of a window's client area.
725
+ *
726
+ * \param window The window to set a new maximum size.
727
+ * \param max_w The maximum width of the window, must be >0
728
+ * \param max_h The maximum height of the window, must be >0
729
+ *
730
+ * \note You can't change the maximum size of a fullscreen window, it
731
+ * automatically matches the size of the display mode.
732
+ *
733
+ * \sa SDL_GetWindowMaximumSize()
734
+ * \sa SDL_SetWindowMinimumSize()
735
+ */
736
+ extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window,
737
+ int max_w, int max_h);
738
+
739
+ /**
740
+ * \brief Get the maximum size of a window's client area.
741
+ *
742
+ * \param window The window to query.
743
+ * \param w Pointer to variable for storing the maximum width, may be NULL
744
+ * \param h Pointer to variable for storing the maximum height, may be NULL
745
+ *
746
+ * \sa SDL_GetWindowMinimumSize()
747
+ * \sa SDL_SetWindowMaximumSize()
748
+ */
749
+ extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window,
750
+ int *w, int *h);
751
+
752
+ /**
753
+ * \brief Set the border state of a window.
754
+ *
755
+ * This will add or remove the window's SDL_WINDOW_BORDERLESS flag and
756
+ * add or remove the border from the actual window. This is a no-op if the
757
+ * window's border already matches the requested state.
758
+ *
759
+ * \param window The window of which to change the border state.
760
+ * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border.
761
+ *
762
+ * \note You can't change the border state of a fullscreen window.
763
+ *
764
+ * \sa SDL_GetWindowFlags()
765
+ */
766
+ extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window,
767
+ SDL_bool bordered);
768
+
769
+ /**
770
+ * \brief Set the user-resizable state of a window.
771
+ *
772
+ * This will add or remove the window's SDL_WINDOW_RESIZABLE flag and
773
+ * allow/disallow user resizing of the window. This is a no-op if the
774
+ * window's resizable state already matches the requested state.
775
+ *
776
+ * \param window The window of which to change the resizable state.
777
+ * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow.
778
+ *
779
+ * \note You can't change the resizable state of a fullscreen window.
780
+ *
781
+ * \sa SDL_GetWindowFlags()
782
+ */
783
+ extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window,
784
+ SDL_bool resizable);
785
+
786
+ /**
787
+ * \brief Show a window.
788
+ *
789
+ * \sa SDL_HideWindow()
790
+ */
791
+ extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window);
792
+
793
+ /**
794
+ * \brief Hide a window.
795
+ *
796
+ * \sa SDL_ShowWindow()
797
+ */
798
+ extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window);
799
+
800
+ /**
801
+ * \brief Raise a window above other windows and set the input focus.
802
+ */
803
+ extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window);
804
+
805
+ /**
806
+ * \brief Make a window as large as possible.
807
+ *
808
+ * \sa SDL_RestoreWindow()
809
+ */
810
+ extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window);
811
+
812
+ /**
813
+ * \brief Minimize a window to an iconic representation.
814
+ *
815
+ * \sa SDL_RestoreWindow()
816
+ */
817
+ extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window);
818
+
819
+ /**
820
+ * \brief Restore the size and position of a minimized or maximized window.
821
+ *
822
+ * \sa SDL_MaximizeWindow()
823
+ * \sa SDL_MinimizeWindow()
824
+ */
825
+ extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window);
826
+
827
+ /**
828
+ * \brief Set a window's fullscreen state.
829
+ *
830
+ * \return 0 on success, or -1 if setting the display mode failed.
831
+ *
832
+ * \sa SDL_SetWindowDisplayMode()
833
+ * \sa SDL_GetWindowDisplayMode()
834
+ */
835
+ extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window,
836
+ Uint32 flags);
837
+
838
+ /**
839
+ * \brief Get the SDL surface associated with the window.
840
+ *
841
+ * \return The window's framebuffer surface, or NULL on error.
842
+ *
843
+ * A new surface will be created with the optimal format for the window,
844
+ * if necessary. This surface will be freed when the window is destroyed.
845
+ *
846
+ * \note You may not combine this with 3D or the rendering API on this window.
847
+ *
848
+ * \sa SDL_UpdateWindowSurface()
849
+ * \sa SDL_UpdateWindowSurfaceRects()
850
+ */
851
+ extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window);
852
+
853
+ /**
854
+ * \brief Copy the window surface to the screen.
855
+ *
856
+ * \return 0 on success, or -1 on error.
857
+ *
858
+ * \sa SDL_GetWindowSurface()
859
+ * \sa SDL_UpdateWindowSurfaceRects()
860
+ */
861
+ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window);
862
+
863
+ /**
864
+ * \brief Copy a number of rectangles on the window surface to the screen.
865
+ *
866
+ * \return 0 on success, or -1 on error.
867
+ *
868
+ * \sa SDL_GetWindowSurface()
869
+ * \sa SDL_UpdateWindowSurface()
870
+ */
871
+ extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window,
872
+ const SDL_Rect * rects,
873
+ int numrects);
874
+
875
+ /**
876
+ * \brief Set a window's input grab mode.
877
+ *
878
+ * \param window The window for which the input grab mode should be set.
879
+ * \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input.
880
+ *
881
+ * If the caller enables a grab while another window is currently grabbed,
882
+ * the other window loses its grab in favor of the caller's window.
883
+ *
884
+ * \sa SDL_GetWindowGrab()
885
+ */
886
+ extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window,
887
+ SDL_bool grabbed);
888
+
889
+ /**
890
+ * \brief Get a window's input grab mode.
891
+ *
892
+ * \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise.
893
+ *
894
+ * \sa SDL_SetWindowGrab()
895
+ */
896
+ extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window);
897
+
898
+ /**
899
+ * \brief Get the window that currently has an input grab enabled.
900
+ *
901
+ * \return This returns the window if input is grabbed, and NULL otherwise.
902
+ *
903
+ * \sa SDL_SetWindowGrab()
904
+ */
905
+ extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void);
906
+
907
+ /**
908
+ * \brief Set the brightness (gamma correction) for a window.
909
+ *
910
+ * \return 0 on success, or -1 if setting the brightness isn't supported.
911
+ *
912
+ * \sa SDL_GetWindowBrightness()
913
+ * \sa SDL_SetWindowGammaRamp()
914
+ */
915
+ extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness);
916
+
917
+ /**
918
+ * \brief Get the brightness (gamma correction) for a window.
919
+ *
920
+ * \return The last brightness value passed to SDL_SetWindowBrightness()
921
+ *
922
+ * \sa SDL_SetWindowBrightness()
923
+ */
924
+ extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window);
925
+
926
+ /**
927
+ * \brief Set the opacity for a window
928
+ *
929
+ * \param window The window which will be made transparent or opaque
930
+ * \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be
931
+ * clamped internally between 0.0f and 1.0f.
932
+ *
933
+ * \return 0 on success, or -1 if setting the opacity isn't supported.
934
+ *
935
+ * \sa SDL_GetWindowOpacity()
936
+ */
937
+ extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity);
938
+
939
+ /**
940
+ * \brief Get the opacity of a window.
941
+ *
942
+ * If transparency isn't supported on this platform, opacity will be reported
943
+ * as 1.0f without error.
944
+ *
945
+ * \param window The window in question.
946
+ * \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque)
947
+ *
948
+ * \return 0 on success, or -1 on error (invalid window, etc).
949
+ *
950
+ * \sa SDL_SetWindowOpacity()
951
+ */
952
+ extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity);
953
+
954
+ /**
955
+ * \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name)
956
+ *
957
+ * \param modal_window The window that should be modal
958
+ * \param parent_window The parent window
959
+ *
960
+ * \return 0 on success, or -1 otherwise.
961
+ */
962
+ extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window);
963
+
964
+ /**
965
+ * \brief Explicitly sets input focus to the window.
966
+ *
967
+ * You almost certainly want SDL_RaiseWindow() instead of this function. Use
968
+ * this with caution, as you might give focus to a window that's completely
969
+ * obscured by other windows.
970
+ *
971
+ * \param window The window that should get the input focus
972
+ *
973
+ * \return 0 on success, or -1 otherwise.
974
+ * \sa SDL_RaiseWindow()
975
+ */
976
+ extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window);
977
+
978
+ /**
979
+ * \brief Set the gamma ramp for a window.
980
+ *
981
+ * \param window The window for which the gamma ramp should be set.
982
+ * \param red The translation table for the red channel, or NULL.
983
+ * \param green The translation table for the green channel, or NULL.
984
+ * \param blue The translation table for the blue channel, or NULL.
985
+ *
986
+ * \return 0 on success, or -1 if gamma ramps are unsupported.
987
+ *
988
+ * Set the gamma translation table for the red, green, and blue channels
989
+ * of the video hardware. Each table is an array of 256 16-bit quantities,
990
+ * representing a mapping between the input and output for that channel.
991
+ * The input is the index into the array, and the output is the 16-bit
992
+ * gamma value at that index, scaled to the output color precision.
993
+ *
994
+ * \sa SDL_GetWindowGammaRamp()
995
+ */
996
+ extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window,
997
+ const Uint16 * red,
998
+ const Uint16 * green,
999
+ const Uint16 * blue);
1000
+
1001
+ /**
1002
+ * \brief Get the gamma ramp for a window.
1003
+ *
1004
+ * \param window The window from which the gamma ramp should be queried.
1005
+ * \param red A pointer to a 256 element array of 16-bit quantities to hold
1006
+ * the translation table for the red channel, or NULL.
1007
+ * \param green A pointer to a 256 element array of 16-bit quantities to hold
1008
+ * the translation table for the green channel, or NULL.
1009
+ * \param blue A pointer to a 256 element array of 16-bit quantities to hold
1010
+ * the translation table for the blue channel, or NULL.
1011
+ *
1012
+ * \return 0 on success, or -1 if gamma ramps are unsupported.
1013
+ *
1014
+ * \sa SDL_SetWindowGammaRamp()
1015
+ */
1016
+ extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window,
1017
+ Uint16 * red,
1018
+ Uint16 * green,
1019
+ Uint16 * blue);
1020
+
1021
+ /**
1022
+ * \brief Possible return values from the SDL_HitTest callback.
1023
+ *
1024
+ * \sa SDL_HitTest
1025
+ */
1026
+ typedef enum
1027
+ {
1028
+ SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */
1029
+ SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */
1030
+ SDL_HITTEST_RESIZE_TOPLEFT,
1031
+ SDL_HITTEST_RESIZE_TOP,
1032
+ SDL_HITTEST_RESIZE_TOPRIGHT,
1033
+ SDL_HITTEST_RESIZE_RIGHT,
1034
+ SDL_HITTEST_RESIZE_BOTTOMRIGHT,
1035
+ SDL_HITTEST_RESIZE_BOTTOM,
1036
+ SDL_HITTEST_RESIZE_BOTTOMLEFT,
1037
+ SDL_HITTEST_RESIZE_LEFT
1038
+ } SDL_HitTestResult;
1039
+
1040
+ /**
1041
+ * \brief Callback used for hit-testing.
1042
+ *
1043
+ * \sa SDL_SetWindowHitTest
1044
+ */
1045
+ typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win,
1046
+ const SDL_Point *area,
1047
+ void *data);
1048
+
1049
+ /**
1050
+ * \brief Provide a callback that decides if a window region has special properties.
1051
+ *
1052
+ * Normally windows are dragged and resized by decorations provided by the
1053
+ * system window manager (a title bar, borders, etc), but for some apps, it
1054
+ * makes sense to drag them from somewhere else inside the window itself; for
1055
+ * example, one might have a borderless window that wants to be draggable
1056
+ * from any part, or simulate its own title bar, etc.
1057
+ *
1058
+ * This function lets the app provide a callback that designates pieces of
1059
+ * a given window as special. This callback is run during event processing
1060
+ * if we need to tell the OS to treat a region of the window specially; the
1061
+ * use of this callback is known as "hit testing."
1062
+ *
1063
+ * Mouse input may not be delivered to your application if it is within
1064
+ * a special area; the OS will often apply that input to moving the window or
1065
+ * resizing the window and not deliver it to the application.
1066
+ *
1067
+ * Specifying NULL for a callback disables hit-testing. Hit-testing is
1068
+ * disabled by default.
1069
+ *
1070
+ * Platforms that don't support this functionality will return -1
1071
+ * unconditionally, even if you're attempting to disable hit-testing.
1072
+ *
1073
+ * Your callback may fire at any time, and its firing does not indicate any
1074
+ * specific behavior (for example, on Windows, this certainly might fire
1075
+ * when the OS is deciding whether to drag your window, but it fires for lots
1076
+ * of other reasons, too, some unrelated to anything you probably care about
1077
+ * _and when the mouse isn't actually at the location it is testing_).
1078
+ * Since this can fire at any time, you should try to keep your callback
1079
+ * efficient, devoid of allocations, etc.
1080
+ *
1081
+ * \param window The window to set hit-testing on.
1082
+ * \param callback The callback to call when doing a hit-test.
1083
+ * \param callback_data An app-defined void pointer passed to the callback.
1084
+ * \return 0 on success, -1 on error (including unsupported).
1085
+ */
1086
+ extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window,
1087
+ SDL_HitTest callback,
1088
+ void *callback_data);
1089
+
1090
+ /**
1091
+ * \brief Destroy a window.
1092
+ */
1093
+ extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window);
1094
+
1095
+
1096
+ /**
1097
+ * \brief Returns whether the screensaver is currently enabled (default off).
1098
+ *
1099
+ * \sa SDL_EnableScreenSaver()
1100
+ * \sa SDL_DisableScreenSaver()
1101
+ */
1102
+ extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void);
1103
+
1104
+ /**
1105
+ * \brief Allow the screen to be blanked by a screensaver
1106
+ *
1107
+ * \sa SDL_IsScreenSaverEnabled()
1108
+ * \sa SDL_DisableScreenSaver()
1109
+ */
1110
+ extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void);
1111
+
1112
+ /**
1113
+ * \brief Prevent the screen from being blanked by a screensaver
1114
+ *
1115
+ * \sa SDL_IsScreenSaverEnabled()
1116
+ * \sa SDL_EnableScreenSaver()
1117
+ */
1118
+ extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void);
1119
+
1120
+
1121
+ /**
1122
+ * \name OpenGL support functions
1123
+ */
1124
+ /* @{ */
1125
+
1126
+ /**
1127
+ * \brief Dynamically load an OpenGL library.
1128
+ *
1129
+ * \param path The platform dependent OpenGL library name, or NULL to open the
1130
+ * default OpenGL library.
1131
+ *
1132
+ * \return 0 on success, or -1 if the library couldn't be loaded.
1133
+ *
1134
+ * This should be done after initializing the video driver, but before
1135
+ * creating any OpenGL windows. If no OpenGL library is loaded, the default
1136
+ * library will be loaded upon creation of the first OpenGL window.
1137
+ *
1138
+ * \note If you do this, you need to retrieve all of the GL functions used in
1139
+ * your program from the dynamic library using SDL_GL_GetProcAddress().
1140
+ *
1141
+ * \sa SDL_GL_GetProcAddress()
1142
+ * \sa SDL_GL_UnloadLibrary()
1143
+ */
1144
+ extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path);
1145
+
1146
+ /**
1147
+ * \brief Get the address of an OpenGL function.
1148
+ */
1149
+ extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc);
1150
+
1151
+ /**
1152
+ * \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary().
1153
+ *
1154
+ * \sa SDL_GL_LoadLibrary()
1155
+ */
1156
+ extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void);
1157
+
1158
+ /**
1159
+ * \brief Return true if an OpenGL extension is supported for the current
1160
+ * context.
1161
+ */
1162
+ extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char
1163
+ *extension);
1164
+
1165
+ /**
1166
+ * \brief Reset all previously set OpenGL context attributes to their default values
1167
+ */
1168
+ extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void);
1169
+
1170
+ /**
1171
+ * \brief Set an OpenGL window attribute before window creation.
1172
+ *
1173
+ * \return 0 on success, or -1 if the attribute could not be set.
1174
+ */
1175
+ extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value);
1176
+
1177
+ /**
1178
+ * \brief Get the actual value for an attribute from the current context.
1179
+ *
1180
+ * \return 0 on success, or -1 if the attribute could not be retrieved.
1181
+ * The integer at \c value will be modified in either case.
1182
+ */
1183
+ extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value);
1184
+
1185
+ /**
1186
+ * \brief Create an OpenGL context for use with an OpenGL window, and make it
1187
+ * current.
1188
+ *
1189
+ * \sa SDL_GL_DeleteContext()
1190
+ */
1191
+ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window *
1192
+ window);
1193
+
1194
+ /**
1195
+ * \brief Set up an OpenGL context for rendering into an OpenGL window.
1196
+ *
1197
+ * \note The context must have been created with a compatible window.
1198
+ */
1199
+ extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window,
1200
+ SDL_GLContext context);
1201
+
1202
+ /**
1203
+ * \brief Get the currently active OpenGL window.
1204
+ */
1205
+ extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void);
1206
+
1207
+ /**
1208
+ * \brief Get the currently active OpenGL context.
1209
+ */
1210
+ extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void);
1211
+
1212
+ /**
1213
+ * \brief Get the size of a window's underlying drawable in pixels (for use
1214
+ * with glViewport).
1215
+ *
1216
+ * \param window Window from which the drawable size should be queried
1217
+ * \param w Pointer to variable for storing the width in pixels, may be NULL
1218
+ * \param h Pointer to variable for storing the height in pixels, may be NULL
1219
+ *
1220
+ * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI
1221
+ * drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a
1222
+ * platform with high-DPI support (Apple calls this "Retina"), and not disabled
1223
+ * by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint.
1224
+ *
1225
+ * \sa SDL_GetWindowSize()
1226
+ * \sa SDL_CreateWindow()
1227
+ */
1228
+ extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w,
1229
+ int *h);
1230
+
1231
+ /**
1232
+ * \brief Set the swap interval for the current OpenGL context.
1233
+ *
1234
+ * \param interval 0 for immediate updates, 1 for updates synchronized with the
1235
+ * vertical retrace. If the system supports it, you may
1236
+ * specify -1 to allow late swaps to happen immediately
1237
+ * instead of waiting for the next retrace.
1238
+ *
1239
+ * \return 0 on success, or -1 if setting the swap interval is not supported.
1240
+ *
1241
+ * \sa SDL_GL_GetSwapInterval()
1242
+ */
1243
+ extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval);
1244
+
1245
+ /**
1246
+ * \brief Get the swap interval for the current OpenGL context.
1247
+ *
1248
+ * \return 0 if there is no vertical retrace synchronization, 1 if the buffer
1249
+ * swap is synchronized with the vertical retrace, and -1 if late
1250
+ * swaps happen immediately instead of waiting for the next retrace.
1251
+ * If the system can't determine the swap interval, or there isn't a
1252
+ * valid current context, this will return 0 as a safe default.
1253
+ *
1254
+ * \sa SDL_GL_SetSwapInterval()
1255
+ */
1256
+ extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void);
1257
+
1258
+ /**
1259
+ * \brief Swap the OpenGL buffers for a window, if double-buffering is
1260
+ * supported.
1261
+ */
1262
+ extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window);
1263
+
1264
+ /**
1265
+ * \brief Delete an OpenGL context.
1266
+ *
1267
+ * \sa SDL_GL_CreateContext()
1268
+ */
1269
+ extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context);
1270
+
1271
+ /* @} *//* OpenGL support functions */
1272
+
1273
+
1274
+ /* Ends C function definitions when using C++ */
1275
+ #ifdef __cplusplus
1276
+ }
1277
+ #endif
1278
+ #include "close_code.h"
1279
+
1280
+ #endif /* SDL_video_h_ */
1281
+
1282
+ /* vi: set ts=4 sw=4 expandtab: */