gosu 0.15.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (242) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +1 -0
  3. data/COPYING +1 -1
  4. data/dependencies/SDL/include/SDL.h +138 -0
  5. data/dependencies/SDL/include/SDL_assert.h +293 -0
  6. data/dependencies/SDL/include/SDL_atomic.h +295 -0
  7. data/dependencies/SDL/include/SDL_audio.h +859 -0
  8. data/dependencies/SDL/include/SDL_bits.h +121 -0
  9. data/dependencies/SDL/include/SDL_blendmode.h +123 -0
  10. data/dependencies/SDL/include/SDL_clipboard.h +71 -0
  11. data/dependencies/SDL/include/SDL_config.h +55 -0
  12. data/dependencies/SDL/include/SDL_config_android.h +182 -0
  13. data/dependencies/SDL/include/SDL_config_iphoneos.h +207 -0
  14. data/dependencies/SDL/include/SDL_config_macosx.h +266 -0
  15. data/dependencies/SDL/include/SDL_config_minimal.h +85 -0
  16. data/dependencies/SDL/include/SDL_config_os2.h +188 -0
  17. data/dependencies/SDL/include/SDL_config_pandora.h +135 -0
  18. data/dependencies/SDL/include/SDL_config_psp.h +165 -0
  19. data/dependencies/SDL/include/SDL_config_windows.h +288 -0
  20. data/dependencies/SDL/include/SDL_config_winrt.h +243 -0
  21. data/dependencies/SDL/include/SDL_config_wiz.h +149 -0
  22. data/dependencies/SDL/include/SDL_copying.h +20 -0
  23. data/dependencies/SDL/include/SDL_cpuinfo.h +299 -0
  24. data/dependencies/SDL/include/SDL_egl.h +1676 -0
  25. data/dependencies/SDL/include/SDL_endian.h +263 -0
  26. data/dependencies/SDL/include/SDL_error.h +112 -0
  27. data/dependencies/SDL/include/SDL_events.h +827 -0
  28. data/dependencies/SDL/include/SDL_filesystem.h +136 -0
  29. data/dependencies/SDL/include/SDL_gamecontroller.h +541 -0
  30. data/dependencies/SDL/include/SDL_gesture.h +87 -0
  31. data/dependencies/SDL/include/SDL_haptic.h +1247 -0
  32. data/dependencies/SDL/include/SDL_hints.h +1578 -0
  33. data/dependencies/SDL/include/SDL_joystick.h +499 -0
  34. data/dependencies/SDL/include/SDL_keyboard.h +217 -0
  35. data/dependencies/SDL/include/SDL_keycode.h +351 -0
  36. data/dependencies/SDL/include/SDL_loadso.h +81 -0
  37. data/dependencies/SDL/include/SDL_locale.h +101 -0
  38. data/dependencies/SDL/include/SDL_log.h +211 -0
  39. data/dependencies/SDL/include/SDL_main.h +180 -0
  40. data/dependencies/SDL/include/SDL_messagebox.h +146 -0
  41. data/dependencies/SDL/include/SDL_metal.h +117 -0
  42. data/dependencies/SDL/include/SDL_misc.h +75 -0
  43. data/dependencies/SDL/include/SDL_mouse.h +302 -0
  44. data/dependencies/SDL/include/SDL_mutex.h +251 -0
  45. data/dependencies/SDL/include/SDL_name.h +33 -0
  46. data/dependencies/SDL/include/SDL_opengl.h +2183 -0
  47. data/dependencies/SDL/include/SDL_opengl_glext.h +11180 -0
  48. data/dependencies/SDL/include/SDL_opengles.h +39 -0
  49. data/dependencies/SDL/include/SDL_opengles2.h +52 -0
  50. data/dependencies/SDL/include/SDL_opengles2_gl2.h +621 -0
  51. data/dependencies/SDL/include/SDL_opengles2_gl2ext.h +2050 -0
  52. data/dependencies/SDL/include/SDL_opengles2_gl2platform.h +30 -0
  53. data/dependencies/SDL/include/SDL_opengles2_khrplatform.h +282 -0
  54. data/dependencies/SDL/include/SDL_pixels.h +479 -0
  55. data/dependencies/SDL/include/SDL_platform.h +198 -0
  56. data/dependencies/SDL/include/SDL_power.h +75 -0
  57. data/dependencies/SDL/include/SDL_quit.h +58 -0
  58. data/dependencies/SDL/include/SDL_rect.h +174 -0
  59. data/dependencies/SDL/include/SDL_render.h +1158 -0
  60. data/dependencies/SDL/include/SDL_revision.h +2 -0
  61. data/dependencies/SDL/include/SDL_rwops.h +283 -0
  62. data/dependencies/SDL/include/SDL_scancode.h +413 -0
  63. data/dependencies/SDL/include/SDL_sensor.h +267 -0
  64. data/dependencies/SDL/include/SDL_shape.h +144 -0
  65. data/dependencies/SDL/include/SDL_stdinc.h +647 -0
  66. data/dependencies/SDL/include/SDL_surface.h +563 -0
  67. data/dependencies/SDL/include/SDL_system.h +325 -0
  68. data/dependencies/SDL/include/SDL_syswm.h +354 -0
  69. data/dependencies/SDL/include/SDL_test.h +69 -0
  70. data/dependencies/SDL/include/SDL_test_assert.h +105 -0
  71. data/dependencies/SDL/include/SDL_test_common.h +218 -0
  72. data/dependencies/SDL/include/SDL_test_compare.h +69 -0
  73. data/dependencies/SDL/include/SDL_test_crc32.h +124 -0
  74. data/dependencies/SDL/include/SDL_test_font.h +81 -0
  75. data/dependencies/SDL/include/SDL_test_fuzzer.h +384 -0
  76. data/dependencies/SDL/include/SDL_test_harness.h +134 -0
  77. data/dependencies/SDL/include/SDL_test_images.h +78 -0
  78. data/dependencies/SDL/include/SDL_test_log.h +67 -0
  79. data/dependencies/SDL/include/SDL_test_md5.h +129 -0
  80. data/dependencies/SDL/include/SDL_test_memory.h +63 -0
  81. data/dependencies/SDL/include/SDL_test_random.h +115 -0
  82. data/dependencies/SDL/include/SDL_thread.h +366 -0
  83. data/dependencies/SDL/include/SDL_timer.h +115 -0
  84. data/dependencies/SDL/include/SDL_touch.h +102 -0
  85. data/dependencies/SDL/include/SDL_types.h +29 -0
  86. data/dependencies/SDL/include/SDL_version.h +162 -0
  87. data/dependencies/SDL/include/SDL_video.h +1282 -0
  88. data/dependencies/SDL/include/SDL_vulkan.h +276 -0
  89. data/dependencies/SDL/include/begin_code.h +166 -0
  90. data/dependencies/SDL/include/close_code.h +40 -0
  91. data/dependencies/SDL/lib/x64/libSDL2.dll.a +0 -0
  92. data/dependencies/SDL/lib/x86/libSDL2.dll.a +0 -0
  93. data/dependencies/SDL_sound/SDL_sound.c +795 -0
  94. data/dependencies/SDL_sound/SDL_sound.h +725 -0
  95. data/dependencies/SDL_sound/SDL_sound_aiff.c +537 -0
  96. data/dependencies/SDL_sound/SDL_sound_au.c +352 -0
  97. data/dependencies/SDL_sound/SDL_sound_coreaudio.c +747 -0
  98. data/dependencies/SDL_sound/SDL_sound_flac.c +182 -0
  99. data/dependencies/SDL_sound/SDL_sound_internal.h +304 -0
  100. data/dependencies/SDL_sound/SDL_sound_modplug.c +228 -0
  101. data/dependencies/SDL_sound/SDL_sound_mp3.c +184 -0
  102. data/dependencies/SDL_sound/SDL_sound_raw.c +164 -0
  103. data/dependencies/SDL_sound/SDL_sound_shn.c +1309 -0
  104. data/dependencies/SDL_sound/SDL_sound_voc.c +550 -0
  105. data/dependencies/SDL_sound/SDL_sound_vorbis.c +223 -0
  106. data/dependencies/SDL_sound/SDL_sound_wav.c +783 -0
  107. data/dependencies/SDL_sound/dr_flac.h +5906 -0
  108. data/dependencies/SDL_sound/dr_mp3.h +2832 -0
  109. data/dependencies/SDL_sound/libmodplug/fastmix.c +1748 -0
  110. data/dependencies/SDL_sound/libmodplug/libmodplug.h +1001 -0
  111. data/dependencies/SDL_sound/libmodplug/load_669.c +188 -0
  112. data/dependencies/SDL_sound/libmodplug/load_abc.c +4725 -0
  113. data/dependencies/SDL_sound/libmodplug/load_amf.c +403 -0
  114. data/dependencies/SDL_sound/libmodplug/load_ams.c +587 -0
  115. data/dependencies/SDL_sound/libmodplug/load_dbm.c +357 -0
  116. data/dependencies/SDL_sound/libmodplug/load_dmf.c +531 -0
  117. data/dependencies/SDL_sound/libmodplug/load_dsm.c +232 -0
  118. data/dependencies/SDL_sound/libmodplug/load_far.c +253 -0
  119. data/dependencies/SDL_sound/libmodplug/load_it.c +796 -0
  120. data/dependencies/SDL_sound/libmodplug/load_mdl.c +488 -0
  121. data/dependencies/SDL_sound/libmodplug/load_med.c +757 -0
  122. data/dependencies/SDL_sound/libmodplug/load_mid.c +1405 -0
  123. data/dependencies/SDL_sound/libmodplug/load_mod.c +269 -0
  124. data/dependencies/SDL_sound/libmodplug/load_mt2.c +546 -0
  125. data/dependencies/SDL_sound/libmodplug/load_mtm.c +142 -0
  126. data/dependencies/SDL_sound/libmodplug/load_okt.c +192 -0
  127. data/dependencies/SDL_sound/libmodplug/load_pat.c +1143 -0
  128. data/dependencies/SDL_sound/libmodplug/load_pat.h +25 -0
  129. data/dependencies/SDL_sound/libmodplug/load_psm.c +350 -0
  130. data/dependencies/SDL_sound/libmodplug/load_ptm.c +204 -0
  131. data/dependencies/SDL_sound/libmodplug/load_s3m.c +325 -0
  132. data/dependencies/SDL_sound/libmodplug/load_stm.c +180 -0
  133. data/dependencies/SDL_sound/libmodplug/load_ult.c +206 -0
  134. data/dependencies/SDL_sound/libmodplug/load_umx.c +51 -0
  135. data/dependencies/SDL_sound/libmodplug/load_xm.c +554 -0
  136. data/dependencies/SDL_sound/libmodplug/mmcmp.c +382 -0
  137. data/dependencies/SDL_sound/libmodplug/modplug.c +170 -0
  138. data/dependencies/SDL_sound/libmodplug/modplug.h +90 -0
  139. data/dependencies/SDL_sound/libmodplug/snd_dsp.c +301 -0
  140. data/dependencies/SDL_sound/libmodplug/snd_flt.c +63 -0
  141. data/dependencies/SDL_sound/libmodplug/snd_fx.c +2350 -0
  142. data/dependencies/SDL_sound/libmodplug/sndfile.c +1169 -0
  143. data/dependencies/SDL_sound/libmodplug/sndmix.c +1034 -0
  144. data/dependencies/SDL_sound/libmodplug/tables.h +371 -0
  145. data/{src/stb_vorbis.c → dependencies/SDL_sound/stb_vorbis.h} +128 -23
  146. data/dependencies/al_soft/AL/al.h +655 -0
  147. data/dependencies/al_soft/AL/alc.h +270 -0
  148. data/dependencies/al_soft/AL/alext.h +585 -0
  149. data/dependencies/al_soft/AL/efx-creative.h +3 -0
  150. data/dependencies/al_soft/AL/efx-presets.h +402 -0
  151. data/dependencies/al_soft/AL/efx.h +762 -0
  152. data/dependencies/al_soft/x64/libOpenAL32.dll.a +0 -0
  153. data/dependencies/al_soft/x86/libOpenAL32.dll.a +0 -0
  154. data/{src → dependencies/stb}/stb_image.h +476 -176
  155. data/{src → dependencies/stb}/stb_image_write.h +253 -131
  156. data/{src → dependencies/stb}/stb_truetype.h +262 -104
  157. data/{src → dependencies/utf8proc}/utf8proc.c +47 -29
  158. data/{src → dependencies/utf8proc}/utf8proc.h +46 -24
  159. data/{src → dependencies/utf8proc}/utf8proc_data.h +10043 -9609
  160. data/ext/gosu/extconf.rb +53 -39
  161. data/{Gosu → include/Gosu}/Audio.hpp +6 -8
  162. data/include/Gosu/Bitmap.hpp +100 -0
  163. data/{Gosu → include/Gosu}/Buttons.hpp +104 -44
  164. data/include/Gosu/Channel.h +25 -0
  165. data/include/Gosu/Color.h +38 -0
  166. data/{Gosu → include/Gosu}/Color.hpp +0 -0
  167. data/{Gosu → include/Gosu}/Directories.hpp +0 -0
  168. data/include/Gosu/Font.h +36 -0
  169. data/{Gosu → include/Gosu}/Font.hpp +1 -1
  170. data/{Gosu → include/Gosu}/Fwd.hpp +0 -5
  171. data/include/Gosu/Gosu.h +82 -0
  172. data/{Gosu → include/Gosu}/Gosu.hpp +0 -0
  173. data/{Gosu → include/Gosu}/Graphics.hpp +0 -0
  174. data/{Gosu → include/Gosu}/GraphicsBase.hpp +0 -0
  175. data/{Gosu → include/Gosu}/IO.hpp +0 -0
  176. data/include/Gosu/Image.h +54 -0
  177. data/{Gosu → include/Gosu}/Image.hpp +7 -6
  178. data/{Gosu → include/Gosu}/ImageData.hpp +0 -0
  179. data/{Gosu → include/Gosu}/Input.hpp +39 -51
  180. data/{Gosu → include/Gosu}/Inspection.hpp +0 -0
  181. data/{Gosu → include/Gosu}/Math.hpp +0 -0
  182. data/{Gosu → include/Gosu}/Platform.hpp +0 -0
  183. data/include/Gosu/Sample.h +19 -0
  184. data/include/Gosu/Song.h +24 -0
  185. data/{Gosu → include/Gosu}/Text.hpp +0 -0
  186. data/include/Gosu/TextInput.h +30 -0
  187. data/{Gosu → include/Gosu}/TextInput.hpp +0 -0
  188. data/{Gosu → include/Gosu}/Timing.hpp +0 -0
  189. data/{Gosu → include/Gosu}/Utility.hpp +15 -4
  190. data/{Gosu → include/Gosu}/Version.hpp +2 -2
  191. data/include/Gosu/Window.h +63 -0
  192. data/{Gosu → include/Gosu}/Window.hpp +23 -25
  193. data/lib/OpenAL32.dll +0 -0
  194. data/lib/SDL2.dll +0 -0
  195. data/lib/gosu.rb +0 -3
  196. data/lib/gosu/patches.rb +0 -23
  197. data/lib/gosu/preview.rb +1 -3
  198. data/lib/gosu/swig_patches.rb +3 -2
  199. data/lib64/OpenAL32.dll +0 -0
  200. data/lib64/SDL2.dll +0 -0
  201. data/rdoc/gosu.rb +98 -22
  202. data/src/Audio.cpp +50 -224
  203. data/src/AudioFile.hpp +20 -37
  204. data/src/AudioFileAudioToolbox.cpp +237 -0
  205. data/src/AudioFileSDLSound.cpp +147 -0
  206. data/src/AudioImpl.cpp +3 -12
  207. data/src/AudioImpl.hpp +3 -1
  208. data/src/Bitmap.cpp +85 -83
  209. data/src/BitmapIO.cpp +52 -58
  210. data/src/ChannelWrapper.cpp +50 -0
  211. data/src/ColorWrapper.cpp +126 -0
  212. data/src/Constants.cpp +338 -0
  213. data/src/Font.cpp +4 -1
  214. data/src/FontWrapper.cpp +74 -0
  215. data/src/GosuWrapper.cpp +251 -0
  216. data/src/Graphics.cpp +7 -4
  217. data/src/Image.cpp +13 -16
  218. data/src/ImageWrapper.cpp +168 -0
  219. data/src/Input.cpp +412 -164
  220. data/src/LargeImageData.cpp +2 -1
  221. data/src/MarkupParser.cpp +2 -1
  222. data/src/RubyGosu.cxx +912 -172
  223. data/src/RubyGosu.h +4 -2
  224. data/src/SampleWrapper.cpp +30 -0
  225. data/src/SongWrapper.cpp +52 -0
  226. data/src/TexChunk.cpp +1 -1
  227. data/src/Text.cpp +1 -0
  228. data/src/TextBuilder.cpp +3 -1
  229. data/src/TextInputWrapper.cpp +101 -0
  230. data/src/Texture.cpp +1 -1
  231. data/src/TrueTypeFont.cpp +2 -1
  232. data/src/Utility.cpp +11 -7
  233. data/src/Window.cpp +30 -39
  234. data/src/WindowWrapper.cpp +317 -0
  235. metadata +212 -43
  236. data/Gosu/AutoLink.hpp +0 -14
  237. data/Gosu/Bitmap.hpp +0 -113
  238. data/lib/gosu/zen.rb +0 -89
  239. data/src/AudioToolboxFile.hpp +0 -210
  240. data/src/OggFile.hpp +0 -92
  241. data/src/SndFile.hpp +0 -174
  242. data/src/WinMain.cpp +0 -64
@@ -0,0 +1,267 @@
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_sensor.h
24
+ *
25
+ * Include file for SDL sensor event handling
26
+ *
27
+ */
28
+
29
+ #ifndef SDL_sensor_h_
30
+ #define SDL_sensor_h_
31
+
32
+ #include "SDL_stdinc.h"
33
+ #include "SDL_error.h"
34
+
35
+ #include "begin_code.h"
36
+ /* Set up for C function definitions, even when using C++ */
37
+ #ifdef __cplusplus
38
+ /* *INDENT-OFF* */
39
+ extern "C" {
40
+ /* *INDENT-ON* */
41
+ #endif
42
+
43
+ /**
44
+ * \brief SDL_sensor.h
45
+ *
46
+ * In order to use these functions, SDL_Init() must have been called
47
+ * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system
48
+ * for sensors, and load appropriate drivers.
49
+ */
50
+
51
+ struct _SDL_Sensor;
52
+ typedef struct _SDL_Sensor SDL_Sensor;
53
+
54
+ /**
55
+ * This is a unique ID for a sensor for the time it is connected to the system,
56
+ * and is never reused for the lifetime of the application.
57
+ *
58
+ * The ID value starts at 0 and increments from there. The value -1 is an invalid ID.
59
+ */
60
+ typedef Sint32 SDL_SensorID;
61
+
62
+ /* The different sensors defined by SDL
63
+ *
64
+ * Additional sensors may be available, using platform dependent semantics.
65
+ *
66
+ * Hare are the additional Android sensors:
67
+ * https://developer.android.com/reference/android/hardware/SensorEvent.html#values
68
+ */
69
+ typedef enum
70
+ {
71
+ SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */
72
+ SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */
73
+ SDL_SENSOR_ACCEL, /**< Accelerometer */
74
+ SDL_SENSOR_GYRO /**< Gyroscope */
75
+ } SDL_SensorType;
76
+
77
+ /**
78
+ * Accelerometer sensor
79
+ *
80
+ * The accelerometer returns the current acceleration in SI meters per
81
+ * second squared. This measurement includes the force of gravity, so
82
+ * a device at rest will have an value of SDL_STANDARD_GRAVITY away
83
+ * from the center of the earth.
84
+ *
85
+ * values[0]: Acceleration on the x axis
86
+ * values[1]: Acceleration on the y axis
87
+ * values[2]: Acceleration on the z axis
88
+ *
89
+ * For phones held in portrait mode and game controllers held in front of you,
90
+ * the axes are defined as follows:
91
+ * -X ... +X : left ... right
92
+ * -Y ... +Y : bottom ... top
93
+ * -Z ... +Z : farther ... closer
94
+ *
95
+ * The axis data is not changed when the phone is rotated.
96
+ *
97
+ * \sa SDL_GetDisplayOrientation()
98
+ */
99
+ #define SDL_STANDARD_GRAVITY 9.80665f
100
+
101
+ /**
102
+ * Gyroscope sensor
103
+ *
104
+ * The gyroscope returns the current rate of rotation in radians per second.
105
+ * The rotation is positive in the counter-clockwise direction. That is,
106
+ * an observer looking from a positive location on one of the axes would
107
+ * see positive rotation on that axis when it appeared to be rotating
108
+ * counter-clockwise.
109
+ *
110
+ * values[0]: Angular speed around the x axis (pitch)
111
+ * values[1]: Angular speed around the y axis (yaw)
112
+ * values[2]: Angular speed around the z axis (roll)
113
+ *
114
+ * For phones held in portrait mode and game controllers held in front of you,
115
+ * the axes are defined as follows:
116
+ * -X ... +X : left ... right
117
+ * -Y ... +Y : bottom ... top
118
+ * -Z ... +Z : farther ... closer
119
+ *
120
+ * The axis data is not changed when the phone or controller is rotated.
121
+ *
122
+ * \sa SDL_GetDisplayOrientation()
123
+ */
124
+
125
+ /* Function prototypes */
126
+
127
+ /**
128
+ * Locking for multi-threaded access to the sensor API
129
+ *
130
+ * If you are using the sensor API or handling events from multiple threads
131
+ * you should use these locking functions to protect access to the sensors.
132
+ *
133
+ * In particular, you are guaranteed that the sensor list won't change, so
134
+ * the API functions that take a sensor index will be valid, and sensor
135
+ * events will not be delivered.
136
+ */
137
+ extern DECLSPEC void SDLCALL SDL_LockSensors(void);
138
+ extern DECLSPEC void SDLCALL SDL_UnlockSensors(void);
139
+
140
+ /**
141
+ * \brief Count the number of sensors attached to the system right now
142
+ */
143
+ extern DECLSPEC int SDLCALL SDL_NumSensors(void);
144
+
145
+ /**
146
+ * \brief Get the implementation dependent name of a sensor.
147
+ *
148
+ * This can be called before any sensors are opened.
149
+ *
150
+ * \return The sensor name, or NULL if device_index is out of range.
151
+ */
152
+ extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
153
+
154
+ /**
155
+ * \brief Get the type of a sensor.
156
+ *
157
+ * This can be called before any sensors are opened.
158
+ *
159
+ * \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range.
160
+ */
161
+ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
162
+
163
+ /**
164
+ * \brief Get the platform dependent type of a sensor.
165
+ *
166
+ * This can be called before any sensors are opened.
167
+ *
168
+ * \return The sensor platform dependent type, or -1 if device_index is out of range.
169
+ */
170
+ extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
171
+
172
+ /**
173
+ * \brief Get the instance ID of a sensor.
174
+ *
175
+ * This can be called before any sensors are opened.
176
+ *
177
+ * \return The sensor instance ID, or -1 if device_index is out of range.
178
+ */
179
+ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
180
+
181
+ /**
182
+ * \brief Open a sensor for use.
183
+ *
184
+ * The index passed as an argument refers to the N'th sensor on the system.
185
+ *
186
+ * \return A sensor identifier, or NULL if an error occurred.
187
+ */
188
+ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
189
+
190
+ /**
191
+ * Return the SDL_Sensor associated with an instance id.
192
+ */
193
+ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
194
+
195
+ /**
196
+ * \brief Get the implementation dependent name of a sensor.
197
+ *
198
+ * \return The sensor name, or NULL if the sensor is NULL.
199
+ */
200
+ extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
201
+
202
+ /**
203
+ * \brief Get the type of a sensor.
204
+ *
205
+ * This can be called before any sensors are opened.
206
+ *
207
+ * \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL.
208
+ */
209
+ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
210
+
211
+ /**
212
+ * \brief Get the platform dependent type of a sensor.
213
+ *
214
+ * This can be called before any sensors are opened.
215
+ *
216
+ * \return The sensor platform dependent type, or -1 if the sensor is NULL.
217
+ */
218
+ extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
219
+
220
+ /**
221
+ * \brief Get the instance ID of a sensor.
222
+ *
223
+ * This can be called before any sensors are opened.
224
+ *
225
+ * \return The sensor instance ID, or -1 if the sensor is NULL.
226
+ */
227
+ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
228
+
229
+ /**
230
+ * Get the current state of an opened sensor.
231
+ *
232
+ * The number of values and interpretation of the data is sensor dependent.
233
+ *
234
+ * \param sensor The sensor to query
235
+ * \param data A pointer filled with the current sensor state
236
+ * \param num_values The number of values to write to data
237
+ *
238
+ * \return 0 or -1 if an error occurred.
239
+ */
240
+ extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
241
+
242
+ /**
243
+ * Close a sensor previously opened with SDL_SensorOpen()
244
+ */
245
+ extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
246
+
247
+ /**
248
+ * Update the current state of the open sensors.
249
+ *
250
+ * This is called automatically by the event loop if sensor events are enabled.
251
+ *
252
+ * This needs to be called from the thread that initialized the sensor subsystem.
253
+ */
254
+ extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
255
+
256
+
257
+ /* Ends C function definitions when using C++ */
258
+ #ifdef __cplusplus
259
+ /* *INDENT-OFF* */
260
+ }
261
+ /* *INDENT-ON* */
262
+ #endif
263
+ #include "close_code.h"
264
+
265
+ #endif /* SDL_sensor_h_ */
266
+
267
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,144 @@
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_shape_h_
23
+ #define SDL_shape_h_
24
+
25
+ #include "SDL_stdinc.h"
26
+ #include "SDL_pixels.h"
27
+ #include "SDL_rect.h"
28
+ #include "SDL_surface.h"
29
+ #include "SDL_video.h"
30
+
31
+ #include "begin_code.h"
32
+ /* Set up for C function definitions, even when using C++ */
33
+ #ifdef __cplusplus
34
+ extern "C" {
35
+ #endif
36
+
37
+ /** \file SDL_shape.h
38
+ *
39
+ * Header file for the shaped window API.
40
+ */
41
+
42
+ #define SDL_NONSHAPEABLE_WINDOW -1
43
+ #define SDL_INVALID_SHAPE_ARGUMENT -2
44
+ #define SDL_WINDOW_LACKS_SHAPE -3
45
+
46
+ /**
47
+ * \brief Create a window that can be shaped with the specified position, dimensions, and flags.
48
+ *
49
+ * \param title The title of the window, in UTF-8 encoding.
50
+ * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or
51
+ * ::SDL_WINDOWPOS_UNDEFINED.
52
+ * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or
53
+ * ::SDL_WINDOWPOS_UNDEFINED.
54
+ * \param w The width of the window.
55
+ * \param h The height of the window.
56
+ * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following:
57
+ * ::SDL_WINDOW_OPENGL, ::SDL_WINDOW_INPUT_GRABBED,
58
+ * ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_RESIZABLE,
59
+ * ::SDL_WINDOW_MAXIMIZED, ::SDL_WINDOW_MINIMIZED,
60
+ * ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset.
61
+ *
62
+ * \return The window created, or NULL if window creation failed.
63
+ *
64
+ * \sa SDL_DestroyWindow()
65
+ */
66
+ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags);
67
+
68
+ /**
69
+ * \brief Return whether the given window is a shaped window.
70
+ *
71
+ * \param window The window to query for being shaped.
72
+ *
73
+ * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL.
74
+ *
75
+ * \sa SDL_CreateShapedWindow
76
+ */
77
+ extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window);
78
+
79
+ /** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */
80
+ typedef enum {
81
+ /** \brief The default mode, a binarized alpha cutoff of 1. */
82
+ ShapeModeDefault,
83
+ /** \brief A binarized alpha cutoff with a given integer value. */
84
+ ShapeModeBinarizeAlpha,
85
+ /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */
86
+ ShapeModeReverseBinarizeAlpha,
87
+ /** \brief A color key is applied. */
88
+ ShapeModeColorKey
89
+ } WindowShapeMode;
90
+
91
+ #define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha)
92
+
93
+ /** \brief A union containing parameters for shaped windows. */
94
+ typedef union {
95
+ /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */
96
+ Uint8 binarizationCutoff;
97
+ SDL_Color colorKey;
98
+ } SDL_WindowShapeParams;
99
+
100
+ /** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */
101
+ typedef struct SDL_WindowShapeMode {
102
+ /** \brief The mode of these window-shape parameters. */
103
+ WindowShapeMode mode;
104
+ /** \brief Window-shape parameters. */
105
+ SDL_WindowShapeParams parameters;
106
+ } SDL_WindowShapeMode;
107
+
108
+ /**
109
+ * \brief Set the shape and parameters of a shaped window.
110
+ *
111
+ * \param window The shaped window whose parameters should be set.
112
+ * \param shape A surface encoding the desired shape for the window.
113
+ * \param shape_mode The parameters to set for the shaped window.
114
+ *
115
+ * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW
116
+ * if the SDL_Window given does not reference a valid shaped window.
117
+ *
118
+ * \sa SDL_WindowShapeMode
119
+ * \sa SDL_GetShapedWindowMode.
120
+ */
121
+ extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode);
122
+
123
+ /**
124
+ * \brief Get the shape parameters of a shaped window.
125
+ *
126
+ * \param window The shaped window whose parameters should be retrieved.
127
+ * \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape.
128
+ *
129
+ * \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode
130
+ * data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if
131
+ * the SDL_Window given is a shapeable window currently lacking a shape.
132
+ *
133
+ * \sa SDL_WindowShapeMode
134
+ * \sa SDL_SetWindowShape
135
+ */
136
+ extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode);
137
+
138
+ /* Ends C function definitions when using C++ */
139
+ #ifdef __cplusplus
140
+ }
141
+ #endif
142
+ #include "close_code.h"
143
+
144
+ #endif /* SDL_shape_h_ */
@@ -0,0 +1,647 @@
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_stdinc.h
24
+ *
25
+ * This is a general header that includes C language support.
26
+ */
27
+
28
+ #ifndef SDL_stdinc_h_
29
+ #define SDL_stdinc_h_
30
+
31
+ #include "SDL_config.h"
32
+
33
+ #ifdef __APPLE__
34
+ #ifndef _DARWIN_C_SOURCE
35
+ #define _DARWIN_C_SOURCE 1 /* for memset_pattern4() */
36
+ #endif
37
+ #endif
38
+
39
+ #ifdef HAVE_SYS_TYPES_H
40
+ #include <sys/types.h>
41
+ #endif
42
+ #ifdef HAVE_STDIO_H
43
+ #include <stdio.h>
44
+ #endif
45
+ #if defined(STDC_HEADERS)
46
+ # include <stdlib.h>
47
+ # include <stddef.h>
48
+ # include <stdarg.h>
49
+ #else
50
+ # if defined(HAVE_STDLIB_H)
51
+ # include <stdlib.h>
52
+ # elif defined(HAVE_MALLOC_H)
53
+ # include <malloc.h>
54
+ # endif
55
+ # if defined(HAVE_STDDEF_H)
56
+ # include <stddef.h>
57
+ # endif
58
+ # if defined(HAVE_STDARG_H)
59
+ # include <stdarg.h>
60
+ # endif
61
+ #endif
62
+ #ifdef HAVE_STRING_H
63
+ # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
64
+ # include <memory.h>
65
+ # endif
66
+ # include <string.h>
67
+ #endif
68
+ #ifdef HAVE_STRINGS_H
69
+ # include <strings.h>
70
+ #endif
71
+ #ifdef HAVE_WCHAR_H
72
+ # include <wchar.h>
73
+ #endif
74
+ #if defined(HAVE_INTTYPES_H)
75
+ # include <inttypes.h>
76
+ #elif defined(HAVE_STDINT_H)
77
+ # include <stdint.h>
78
+ #endif
79
+ #ifdef HAVE_CTYPE_H
80
+ # include <ctype.h>
81
+ #endif
82
+ #ifdef HAVE_MATH_H
83
+ # if defined(__WINRT__)
84
+ /* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
85
+ WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
86
+ for more information.
87
+ */
88
+ # define _USE_MATH_DEFINES
89
+ # endif
90
+ # include <math.h>
91
+ #endif
92
+ #ifdef HAVE_FLOAT_H
93
+ # include <float.h>
94
+ #endif
95
+ #if defined(HAVE_ALLOCA) && !defined(alloca)
96
+ # if defined(HAVE_ALLOCA_H)
97
+ # include <alloca.h>
98
+ # elif defined(__GNUC__)
99
+ # define alloca __builtin_alloca
100
+ # elif defined(_MSC_VER)
101
+ # include <malloc.h>
102
+ # define alloca _alloca
103
+ # elif defined(__WATCOMC__)
104
+ # include <malloc.h>
105
+ # elif defined(__BORLANDC__)
106
+ # include <malloc.h>
107
+ # elif defined(__DMC__)
108
+ # include <stdlib.h>
109
+ # elif defined(__AIX__)
110
+ #pragma alloca
111
+ # elif defined(__MRC__)
112
+ void *alloca(unsigned);
113
+ # else
114
+ char *alloca();
115
+ # endif
116
+ #endif
117
+
118
+ /**
119
+ * The number of elements in an array.
120
+ */
121
+ #define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
122
+ #define SDL_TABLESIZE(table) SDL_arraysize(table)
123
+
124
+ /**
125
+ * Macro useful for building other macros with strings in them
126
+ *
127
+ * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
128
+ */
129
+ #define SDL_STRINGIFY_ARG(arg) #arg
130
+
131
+ /**
132
+ * \name Cast operators
133
+ *
134
+ * Use proper C++ casts when compiled as C++ to be compatible with the option
135
+ * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
136
+ */
137
+ /* @{ */
138
+ #ifdef __cplusplus
139
+ #define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
140
+ #define SDL_static_cast(type, expression) static_cast<type>(expression)
141
+ #define SDL_const_cast(type, expression) const_cast<type>(expression)
142
+ #else
143
+ #define SDL_reinterpret_cast(type, expression) ((type)(expression))
144
+ #define SDL_static_cast(type, expression) ((type)(expression))
145
+ #define SDL_const_cast(type, expression) ((type)(expression))
146
+ #endif
147
+ /* @} *//* Cast operators */
148
+
149
+ /* Define a four character code as a Uint32 */
150
+ #define SDL_FOURCC(A, B, C, D) \
151
+ ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
152
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
153
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
154
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
155
+
156
+ /**
157
+ * \name Basic data types
158
+ */
159
+ /* @{ */
160
+
161
+ #ifdef __CC_ARM
162
+ /* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
163
+ #define SDL_FALSE 0
164
+ #define SDL_TRUE 1
165
+ typedef int SDL_bool;
166
+ #else
167
+ typedef enum
168
+ {
169
+ SDL_FALSE = 0,
170
+ SDL_TRUE = 1
171
+ } SDL_bool;
172
+ #endif
173
+
174
+ /**
175
+ * \brief A signed 8-bit integer type.
176
+ */
177
+ #define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */
178
+ #define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */
179
+ typedef int8_t Sint8;
180
+ /**
181
+ * \brief An unsigned 8-bit integer type.
182
+ */
183
+ #define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
184
+ #define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
185
+ typedef uint8_t Uint8;
186
+ /**
187
+ * \brief A signed 16-bit integer type.
188
+ */
189
+ #define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
190
+ #define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
191
+ typedef int16_t Sint16;
192
+ /**
193
+ * \brief An unsigned 16-bit integer type.
194
+ */
195
+ #define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
196
+ #define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
197
+ typedef uint16_t Uint16;
198
+ /**
199
+ * \brief A signed 32-bit integer type.
200
+ */
201
+ #define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
202
+ #define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
203
+ typedef int32_t Sint32;
204
+ /**
205
+ * \brief An unsigned 32-bit integer type.
206
+ */
207
+ #define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
208
+ #define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
209
+ typedef uint32_t Uint32;
210
+
211
+ /**
212
+ * \brief A signed 64-bit integer type.
213
+ */
214
+ #define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
215
+ #define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
216
+ typedef int64_t Sint64;
217
+ /**
218
+ * \brief An unsigned 64-bit integer type.
219
+ */
220
+ #define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
221
+ #define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */
222
+ typedef uint64_t Uint64;
223
+
224
+ /* @} *//* Basic data types */
225
+
226
+ /* Make sure we have macros for printing 64 bit values.
227
+ * <stdint.h> should define these but this is not true all platforms.
228
+ * (for example win32) */
229
+ #ifndef SDL_PRIs64
230
+ #ifdef PRIs64
231
+ #define SDL_PRIs64 PRIs64
232
+ #elif defined(__WIN32__)
233
+ #define SDL_PRIs64 "I64d"
234
+ #elif defined(__LINUX__) && defined(__LP64__)
235
+ #define SDL_PRIs64 "ld"
236
+ #else
237
+ #define SDL_PRIs64 "lld"
238
+ #endif
239
+ #endif
240
+ #ifndef SDL_PRIu64
241
+ #ifdef PRIu64
242
+ #define SDL_PRIu64 PRIu64
243
+ #elif defined(__WIN32__)
244
+ #define SDL_PRIu64 "I64u"
245
+ #elif defined(__LINUX__) && defined(__LP64__)
246
+ #define SDL_PRIu64 "lu"
247
+ #else
248
+ #define SDL_PRIu64 "llu"
249
+ #endif
250
+ #endif
251
+ #ifndef SDL_PRIx64
252
+ #ifdef PRIx64
253
+ #define SDL_PRIx64 PRIx64
254
+ #elif defined(__WIN32__)
255
+ #define SDL_PRIx64 "I64x"
256
+ #elif defined(__LINUX__) && defined(__LP64__)
257
+ #define SDL_PRIx64 "lx"
258
+ #else
259
+ #define SDL_PRIx64 "llx"
260
+ #endif
261
+ #endif
262
+ #ifndef SDL_PRIX64
263
+ #ifdef PRIX64
264
+ #define SDL_PRIX64 PRIX64
265
+ #elif defined(__WIN32__)
266
+ #define SDL_PRIX64 "I64X"
267
+ #elif defined(__LINUX__) && defined(__LP64__)
268
+ #define SDL_PRIX64 "lX"
269
+ #else
270
+ #define SDL_PRIX64 "llX"
271
+ #endif
272
+ #endif
273
+
274
+ /* Annotations to help code analysis tools */
275
+ #ifdef SDL_DISABLE_ANALYZE_MACROS
276
+ #define SDL_IN_BYTECAP(x)
277
+ #define SDL_INOUT_Z_CAP(x)
278
+ #define SDL_OUT_Z_CAP(x)
279
+ #define SDL_OUT_CAP(x)
280
+ #define SDL_OUT_BYTECAP(x)
281
+ #define SDL_OUT_Z_BYTECAP(x)
282
+ #define SDL_PRINTF_FORMAT_STRING
283
+ #define SDL_SCANF_FORMAT_STRING
284
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
285
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber )
286
+ #else
287
+ #if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
288
+ #include <sal.h>
289
+
290
+ #define SDL_IN_BYTECAP(x) _In_bytecount_(x)
291
+ #define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
292
+ #define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
293
+ #define SDL_OUT_CAP(x) _Out_cap_(x)
294
+ #define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
295
+ #define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
296
+
297
+ #define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
298
+ #define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
299
+ #else
300
+ #define SDL_IN_BYTECAP(x)
301
+ #define SDL_INOUT_Z_CAP(x)
302
+ #define SDL_OUT_Z_CAP(x)
303
+ #define SDL_OUT_CAP(x)
304
+ #define SDL_OUT_BYTECAP(x)
305
+ #define SDL_OUT_Z_BYTECAP(x)
306
+ #define SDL_PRINTF_FORMAT_STRING
307
+ #define SDL_SCANF_FORMAT_STRING
308
+ #endif
309
+ #if defined(__GNUC__)
310
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
311
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
312
+ #else
313
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
314
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber )
315
+ #endif
316
+ #endif /* SDL_DISABLE_ANALYZE_MACROS */
317
+
318
+ #define SDL_COMPILE_TIME_ASSERT(name, x) \
319
+ typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
320
+ /** \cond */
321
+ #ifndef DOXYGEN_SHOULD_IGNORE_THIS
322
+ SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
323
+ SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
324
+ SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
325
+ SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
326
+ SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
327
+ SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
328
+ SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
329
+ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
330
+ #endif /* DOXYGEN_SHOULD_IGNORE_THIS */
331
+ /** \endcond */
332
+
333
+ /* Check to make sure enums are the size of ints, for structure packing.
334
+ For both Watcom C/C++ and Borland C/C++ the compiler option that makes
335
+ enums having the size of an int must be enabled.
336
+ This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
337
+ */
338
+
339
+ /** \cond */
340
+ #ifndef DOXYGEN_SHOULD_IGNORE_THIS
341
+ #if !defined(__ANDROID__)
342
+ /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
343
+ typedef enum
344
+ {
345
+ DUMMY_ENUM_VALUE
346
+ } SDL_DUMMY_ENUM;
347
+
348
+ SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
349
+ #endif
350
+ #endif /* DOXYGEN_SHOULD_IGNORE_THIS */
351
+ /** \endcond */
352
+
353
+ #include "begin_code.h"
354
+ /* Set up for C function definitions, even when using C++ */
355
+ #ifdef __cplusplus
356
+ extern "C" {
357
+ #endif
358
+
359
+ #ifdef HAVE_ALLOCA
360
+ #define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
361
+ #define SDL_stack_free(data)
362
+ #else
363
+ #define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
364
+ #define SDL_stack_free(data) SDL_free(data)
365
+ #endif
366
+
367
+ extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
368
+ extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
369
+ extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
370
+ extern DECLSPEC void SDLCALL SDL_free(void *mem);
371
+
372
+ typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
373
+ typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
374
+ typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
375
+ typedef void (SDLCALL *SDL_free_func)(void *mem);
376
+
377
+ /**
378
+ * \brief Get the current set of SDL memory functions
379
+ */
380
+ extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
381
+ SDL_calloc_func *calloc_func,
382
+ SDL_realloc_func *realloc_func,
383
+ SDL_free_func *free_func);
384
+
385
+ /**
386
+ * \brief Replace SDL's memory allocation functions with a custom set
387
+ *
388
+ * \note If you are replacing SDL's memory functions, you should call
389
+ * SDL_GetNumAllocations() and be very careful if it returns non-zero.
390
+ * That means that your free function will be called with memory
391
+ * allocated by the previous memory allocation functions.
392
+ */
393
+ extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
394
+ SDL_calloc_func calloc_func,
395
+ SDL_realloc_func realloc_func,
396
+ SDL_free_func free_func);
397
+
398
+ /**
399
+ * \brief Get the number of outstanding (unfreed) allocations
400
+ */
401
+ extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
402
+
403
+ extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
404
+ extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
405
+
406
+ extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
407
+
408
+ extern DECLSPEC int SDLCALL SDL_abs(int x);
409
+
410
+ /* !!! FIXME: these have side effects. You probably shouldn't use them. */
411
+ /* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */
412
+ #define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
413
+ #define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
414
+
415
+ extern DECLSPEC int SDLCALL SDL_isdigit(int x);
416
+ extern DECLSPEC int SDLCALL SDL_isspace(int x);
417
+ extern DECLSPEC int SDLCALL SDL_isupper(int x);
418
+ extern DECLSPEC int SDLCALL SDL_islower(int x);
419
+ extern DECLSPEC int SDLCALL SDL_toupper(int x);
420
+ extern DECLSPEC int SDLCALL SDL_tolower(int x);
421
+
422
+ extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len);
423
+
424
+ extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
425
+
426
+ #define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
427
+ #define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
428
+ #define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x)))
429
+
430
+ /* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
431
+ SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
432
+ {
433
+ #ifdef __APPLE__
434
+ memset_pattern4(dst, &val, dwords * 4);
435
+ #elif defined(__GNUC__) && defined(i386)
436
+ int u0, u1, u2;
437
+ __asm__ __volatile__ (
438
+ "cld \n\t"
439
+ "rep ; stosl \n\t"
440
+ : "=&D" (u0), "=&a" (u1), "=&c" (u2)
441
+ : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
442
+ : "memory"
443
+ );
444
+ #else
445
+ size_t _n = (dwords + 3) / 4;
446
+ Uint32 *_p = SDL_static_cast(Uint32 *, dst);
447
+ Uint32 _val = (val);
448
+ if (dwords == 0)
449
+ return;
450
+ switch (dwords % 4)
451
+ {
452
+ case 0: do { *_p++ = _val; /* fallthrough */
453
+ case 3: *_p++ = _val; /* fallthrough */
454
+ case 2: *_p++ = _val; /* fallthrough */
455
+ case 1: *_p++ = _val; /* fallthrough */
456
+ } while ( --_n );
457
+ }
458
+ #endif
459
+ }
460
+
461
+ extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
462
+
463
+ extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
464
+ extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
465
+
466
+ extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
467
+ extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
468
+ extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
469
+ extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
470
+ extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle);
471
+
472
+ extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
473
+ extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen);
474
+ extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2);
475
+ extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len);
476
+
477
+ extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
478
+ extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
479
+ extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
480
+ extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
481
+ extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
482
+ extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
483
+ extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
484
+ extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
485
+ extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
486
+ extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
487
+ extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
488
+ extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr);
489
+ extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
490
+
491
+ extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
492
+ extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
493
+ extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
494
+ extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
495
+ extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
496
+ extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
497
+
498
+ extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
499
+ extern DECLSPEC double SDLCALL SDL_atof(const char *str);
500
+ extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
501
+ extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
502
+ extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
503
+ extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
504
+ extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
505
+
506
+ extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
507
+ extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
508
+ extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
509
+ extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
510
+
511
+ extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
512
+ extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
513
+ extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3);
514
+ extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
515
+
516
+ #ifndef HAVE_M_PI
517
+ #ifndef M_PI
518
+ #define M_PI 3.14159265358979323846264338327950288 /**< pi */
519
+ #endif
520
+ #endif
521
+
522
+ extern DECLSPEC double SDLCALL SDL_acos(double x);
523
+ extern DECLSPEC float SDLCALL SDL_acosf(float x);
524
+ extern DECLSPEC double SDLCALL SDL_asin(double x);
525
+ extern DECLSPEC float SDLCALL SDL_asinf(float x);
526
+ extern DECLSPEC double SDLCALL SDL_atan(double x);
527
+ extern DECLSPEC float SDLCALL SDL_atanf(float x);
528
+ extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
529
+ extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y);
530
+ extern DECLSPEC double SDLCALL SDL_ceil(double x);
531
+ extern DECLSPEC float SDLCALL SDL_ceilf(float x);
532
+ extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
533
+ extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
534
+ extern DECLSPEC double SDLCALL SDL_cos(double x);
535
+ extern DECLSPEC float SDLCALL SDL_cosf(float x);
536
+ extern DECLSPEC double SDLCALL SDL_exp(double x);
537
+ extern DECLSPEC float SDLCALL SDL_expf(float x);
538
+ extern DECLSPEC double SDLCALL SDL_fabs(double x);
539
+ extern DECLSPEC float SDLCALL SDL_fabsf(float x);
540
+ extern DECLSPEC double SDLCALL SDL_floor(double x);
541
+ extern DECLSPEC float SDLCALL SDL_floorf(float x);
542
+ extern DECLSPEC double SDLCALL SDL_trunc(double x);
543
+ extern DECLSPEC float SDLCALL SDL_truncf(float x);
544
+ extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
545
+ extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
546
+ extern DECLSPEC double SDLCALL SDL_log(double x);
547
+ extern DECLSPEC float SDLCALL SDL_logf(float x);
548
+ extern DECLSPEC double SDLCALL SDL_log10(double x);
549
+ extern DECLSPEC float SDLCALL SDL_log10f(float x);
550
+ extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
551
+ extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
552
+ extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
553
+ extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
554
+ extern DECLSPEC double SDLCALL SDL_sin(double x);
555
+ extern DECLSPEC float SDLCALL SDL_sinf(float x);
556
+ extern DECLSPEC double SDLCALL SDL_sqrt(double x);
557
+ extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
558
+ extern DECLSPEC double SDLCALL SDL_tan(double x);
559
+ extern DECLSPEC float SDLCALL SDL_tanf(float x);
560
+
561
+ /* The SDL implementation of iconv() returns these error codes */
562
+ #define SDL_ICONV_ERROR (size_t)-1
563
+ #define SDL_ICONV_E2BIG (size_t)-2
564
+ #define SDL_ICONV_EILSEQ (size_t)-3
565
+ #define SDL_ICONV_EINVAL (size_t)-4
566
+
567
+ /* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
568
+ typedef struct _SDL_iconv_t *SDL_iconv_t;
569
+ extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
570
+ const char *fromcode);
571
+ extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
572
+ extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
573
+ size_t * inbytesleft, char **outbuf,
574
+ size_t * outbytesleft);
575
+ /**
576
+ * This function converts a string between encodings in one pass, returning a
577
+ * string that must be freed with SDL_free() or NULL on error.
578
+ */
579
+ extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
580
+ const char *fromcode,
581
+ const char *inbuf,
582
+ size_t inbytesleft);
583
+ #define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
584
+ #define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
585
+ #define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
586
+
587
+ /* force builds using Clang's static analysis tools to use literal C runtime
588
+ here, since there are possibly tests that are ineffective otherwise. */
589
+ #if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
590
+
591
+ /* The analyzer knows about strlcpy even when the system doesn't provide it */
592
+ #ifndef HAVE_STRLCPY
593
+ size_t strlcpy(char* dst, const char* src, size_t size);
594
+ #endif
595
+
596
+ /* The analyzer knows about strlcat even when the system doesn't provide it */
597
+ #ifndef HAVE_STRLCAT
598
+ size_t strlcat(char* dst, const char* src, size_t size);
599
+ #endif
600
+
601
+ #define SDL_malloc malloc
602
+ #define SDL_calloc calloc
603
+ #define SDL_realloc realloc
604
+ #define SDL_free free
605
+ #define SDL_memset memset
606
+ #define SDL_memcpy memcpy
607
+ #define SDL_memmove memmove
608
+ #define SDL_memcmp memcmp
609
+ #define SDL_strlcpy strlcpy
610
+ #define SDL_strlcat strlcat
611
+ #define SDL_strlen strlen
612
+ #define SDL_wcslen wcslen
613
+ #define SDL_wcslcpy wcslcpy
614
+ #define SDL_wcslcat wcslcat
615
+ #define SDL_strdup strdup
616
+ #define SDL_wcsdup wcsdup
617
+ #define SDL_strchr strchr
618
+ #define SDL_strrchr strrchr
619
+ #define SDL_strstr strstr
620
+ #define SDL_wcsstr wcsstr
621
+ #define SDL_strtokr strtok_r
622
+ #define SDL_strcmp strcmp
623
+ #define SDL_wcscmp wcscmp
624
+ #define SDL_strncmp strncmp
625
+ #define SDL_wcsncmp wcsncmp
626
+ #define SDL_strcasecmp strcasecmp
627
+ #define SDL_strncasecmp strncasecmp
628
+ #define SDL_sscanf sscanf
629
+ #define SDL_vsscanf vsscanf
630
+ #define SDL_snprintf snprintf
631
+ #define SDL_vsnprintf vsnprintf
632
+ #endif
633
+
634
+ SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
635
+ {
636
+ return SDL_memcpy(dst, src, dwords * 4);
637
+ }
638
+
639
+ /* Ends C function definitions when using C++ */
640
+ #ifdef __cplusplus
641
+ }
642
+ #endif
643
+ #include "close_code.h"
644
+
645
+ #endif /* SDL_stdinc_h_ */
646
+
647
+ /* vi: set ts=4 sw=4 expandtab: */