ruby2d 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/assets/README.md +20 -7
  3. data/assets/include/SDL2/SDL.h +135 -0
  4. data/assets/include/SDL2/SDL_assert.h +291 -0
  5. data/assets/include/SDL2/SDL_atomic.h +277 -0
  6. data/assets/include/SDL2/SDL_audio.h +826 -0
  7. data/assets/include/SDL2/SDL_bits.h +112 -0
  8. data/assets/include/SDL2/SDL_blendmode.h +120 -0
  9. data/assets/include/SDL2/SDL_clipboard.h +71 -0
  10. data/assets/include/SDL2/SDL_config.h +421 -0
  11. data/assets/include/SDL2/SDL_cpuinfo.h +188 -0
  12. data/assets/include/SDL2/SDL_egl.h +1673 -0
  13. data/assets/include/SDL2/SDL_endian.h +260 -0
  14. data/assets/include/SDL2/SDL_error.h +76 -0
  15. data/assets/include/SDL2/SDL_events.h +788 -0
  16. data/assets/include/SDL2/SDL_filesystem.h +136 -0
  17. data/assets/include/SDL2/SDL_gamecontroller.h +390 -0
  18. data/assets/include/SDL2/SDL_gesture.h +87 -0
  19. data/assets/include/SDL2/SDL_haptic.h +1238 -0
  20. data/assets/include/SDL2/SDL_hints.h +1135 -0
  21. data/assets/include/SDL2/SDL_image.h +161 -0
  22. data/assets/include/SDL2/SDL_joystick.h +408 -0
  23. data/assets/include/SDL2/SDL_keyboard.h +217 -0
  24. data/assets/include/SDL2/SDL_keycode.h +349 -0
  25. data/assets/include/SDL2/SDL_loadso.h +81 -0
  26. data/assets/include/SDL2/SDL_log.h +211 -0
  27. data/assets/include/SDL2/SDL_main.h +168 -0
  28. data/assets/include/SDL2/SDL_messagebox.h +144 -0
  29. data/assets/include/SDL2/SDL_mixer.h +651 -0
  30. data/assets/include/SDL2/SDL_mouse.h +302 -0
  31. data/assets/include/SDL2/SDL_mutex.h +251 -0
  32. data/assets/include/SDL2/SDL_name.h +33 -0
  33. data/assets/include/SDL2/SDL_opengl.h +2183 -0
  34. data/assets/include/SDL2/SDL_opengl_glext.h +11177 -0
  35. data/assets/include/SDL2/SDL_opengles.h +39 -0
  36. data/assets/include/SDL2/SDL_opengles2.h +52 -0
  37. data/assets/include/SDL2/SDL_opengles2_gl2.h +621 -0
  38. data/assets/include/SDL2/SDL_opengles2_gl2ext.h +2050 -0
  39. data/assets/include/SDL2/SDL_opengles2_gl2platform.h +30 -0
  40. data/assets/include/SDL2/SDL_opengles2_khrplatform.h +282 -0
  41. data/assets/include/SDL2/SDL_pixels.h +470 -0
  42. data/assets/include/SDL2/SDL_platform.h +198 -0
  43. data/assets/include/SDL2/SDL_power.h +75 -0
  44. data/assets/include/SDL2/SDL_quit.h +58 -0
  45. data/assets/include/SDL2/SDL_rect.h +148 -0
  46. data/assets/include/SDL2/SDL_render.h +931 -0
  47. data/assets/include/SDL2/SDL_revision.h +2 -0
  48. data/assets/include/SDL2/SDL_rwops.h +254 -0
  49. data/assets/include/SDL2/SDL_scancode.h +413 -0
  50. data/assets/include/SDL2/SDL_sensor.h +251 -0
  51. data/assets/include/SDL2/SDL_shape.h +144 -0
  52. data/assets/include/SDL2/SDL_stdinc.h +607 -0
  53. data/assets/include/SDL2/SDL_surface.h +553 -0
  54. data/assets/include/SDL2/SDL_system.h +279 -0
  55. data/assets/include/SDL2/SDL_syswm.h +324 -0
  56. data/assets/include/SDL2/SDL_test.h +69 -0
  57. data/assets/include/SDL2/SDL_test_assert.h +105 -0
  58. data/assets/include/SDL2/SDL_test_common.h +188 -0
  59. data/assets/include/SDL2/SDL_test_compare.h +69 -0
  60. data/assets/include/SDL2/SDL_test_crc32.h +124 -0
  61. data/assets/include/SDL2/SDL_test_font.h +81 -0
  62. data/assets/include/SDL2/SDL_test_fuzzer.h +384 -0
  63. data/assets/include/SDL2/SDL_test_harness.h +134 -0
  64. data/assets/include/SDL2/SDL_test_images.h +78 -0
  65. data/assets/include/SDL2/SDL_test_log.h +67 -0
  66. data/assets/include/SDL2/SDL_test_md5.h +129 -0
  67. data/assets/include/SDL2/SDL_test_memory.h +63 -0
  68. data/assets/include/SDL2/SDL_test_random.h +115 -0
  69. data/assets/include/SDL2/SDL_thread.h +343 -0
  70. data/assets/include/SDL2/SDL_timer.h +115 -0
  71. data/assets/include/SDL2/SDL_touch.h +86 -0
  72. data/assets/include/SDL2/SDL_ttf.h +294 -0
  73. data/assets/include/SDL2/SDL_types.h +29 -0
  74. data/assets/include/SDL2/SDL_version.h +162 -0
  75. data/assets/include/SDL2/SDL_video.h +1276 -0
  76. data/assets/include/SDL2/SDL_vulkan.h +278 -0
  77. data/assets/include/SDL2/begin_code.h +167 -0
  78. data/assets/include/SDL2/close_code.h +37 -0
  79. data/assets/include/glew.h +23686 -0
  80. data/assets/include/simple2d.h +735 -0
  81. data/assets/ios/MRuby.framework/Headers/mrbconf.h +3 -5
  82. data/assets/ios/MRuby.framework/Headers/mruby.h +35 -32
  83. data/assets/ios/MRuby.framework/Headers/mruby/array.h +1 -0
  84. data/assets/ios/MRuby.framework/Headers/mruby/boxing_word.h +9 -1
  85. data/assets/ios/MRuby.framework/Headers/mruby/class.h +14 -11
  86. data/assets/ios/MRuby.framework/Headers/mruby/common.h +5 -0
  87. data/assets/ios/MRuby.framework/Headers/mruby/compile.h +4 -3
  88. data/assets/ios/MRuby.framework/Headers/mruby/debug.h +3 -2
  89. data/assets/ios/MRuby.framework/Headers/mruby/dump.h +2 -2
  90. data/assets/ios/MRuby.framework/Headers/mruby/hash.h +38 -5
  91. data/assets/ios/MRuby.framework/Headers/mruby/irep.h +17 -4
  92. data/assets/ios/MRuby.framework/Headers/mruby/object.h +4 -5
  93. data/assets/ios/MRuby.framework/Headers/mruby/opcode.h +47 -139
  94. data/assets/ios/MRuby.framework/Headers/mruby/ops.h +117 -0
  95. data/assets/ios/MRuby.framework/Headers/mruby/proc.h +4 -4
  96. data/assets/ios/MRuby.framework/Headers/mruby/string.h +11 -7
  97. data/assets/ios/MRuby.framework/Headers/mruby/throw.h +4 -4
  98. data/assets/ios/MRuby.framework/Headers/mruby/variable.h +2 -4
  99. data/assets/ios/MRuby.framework/Headers/mruby/version.h +6 -6
  100. data/assets/ios/MRuby.framework/MRuby +0 -0
  101. data/assets/ios/MyApp.xcodeproj/project.pbxproj +24 -18
  102. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  103. data/assets/ios/main.c +1 -1
  104. data/assets/macos/lib/libFLAC.a +0 -0
  105. data/assets/macos/lib/libSDL2.a +0 -0
  106. data/assets/macos/lib/libSDL2_image.a +0 -0
  107. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  108. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  109. data/assets/macos/lib/libfreetype.a +0 -0
  110. data/assets/macos/lib/libjpeg.a +0 -0
  111. data/assets/macos/lib/libmpg123.a +0 -0
  112. data/assets/macos/lib/libogg.a +0 -0
  113. data/assets/macos/lib/libpng16.a +0 -0
  114. data/assets/macos/lib/libsimple2d.a +0 -0
  115. data/assets/macos/lib/libtiff.a +0 -0
  116. data/assets/macos/lib/libvorbis.a +0 -0
  117. data/assets/macos/lib/libvorbisfile.a +0 -0
  118. data/assets/macos/lib/libwebp.a +0 -0
  119. data/assets/mingw/bin/SDL2.dll +0 -0
  120. data/assets/mingw/bin/SDL2_image.dll +0 -0
  121. data/assets/mingw/bin/SDL2_mixer.dll +0 -0
  122. data/assets/mingw/bin/SDL2_ttf.dll +0 -0
  123. data/assets/mingw/bin/glew32.dll +0 -0
  124. data/assets/mingw/bin/libFLAC-8.dll +0 -0
  125. data/assets/mingw/bin/libfreetype-6.dll +0 -0
  126. data/assets/mingw/bin/libjpeg-9.dll +0 -0
  127. data/assets/mingw/bin/libmodplug-1.dll +0 -0
  128. data/assets/mingw/bin/libmpg123-0.dll +0 -0
  129. data/assets/mingw/bin/libogg-0.dll +0 -0
  130. data/assets/mingw/bin/libopus-0.dll +0 -0
  131. data/assets/mingw/bin/libopusfile-0.dll +0 -0
  132. data/assets/mingw/bin/libpng16-16.dll +0 -0
  133. data/assets/mingw/bin/libtiff-5.dll +0 -0
  134. data/assets/mingw/bin/libvorbis-0.dll +0 -0
  135. data/assets/mingw/bin/libvorbisfile-3.dll +0 -0
  136. data/assets/mingw/bin/libwebp-7.dll +0 -0
  137. data/assets/mingw/bin/zlib1.dll +0 -0
  138. data/assets/mingw/lib/libSDL2.a +0 -0
  139. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  140. data/assets/mingw/lib/libSDL2_image.a +0 -0
  141. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  142. data/assets/mingw/lib/libSDL2_mixer.a +0 -0
  143. data/assets/mingw/lib/libSDL2_mixer.dll.a +0 -0
  144. data/assets/mingw/lib/libSDL2_test.a +0 -0
  145. data/assets/mingw/lib/libSDL2_ttf.a +0 -0
  146. data/assets/mingw/lib/libSDL2_ttf.dll.a +0 -0
  147. data/assets/mingw/lib/libSDL2main.a +0 -0
  148. data/assets/mingw/lib/libglew32.a +0 -0
  149. data/assets/mingw/lib/libglew32.dll.a +0 -0
  150. data/assets/mingw/lib/libsimple2d.a +0 -0
  151. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +4 -0
  152. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +4 -0
  153. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +4 -0
  154. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +4 -0
  155. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +4 -0
  156. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +4 -0
  157. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +4 -0
  158. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +4 -0
  159. data/assets/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +7 -0
  160. data/assets/tvos/MRuby.framework/Headers/mrbconf.h +3 -5
  161. data/assets/tvos/MRuby.framework/Headers/mruby.h +35 -32
  162. data/assets/tvos/MRuby.framework/Headers/mruby/array.h +1 -0
  163. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_word.h +9 -1
  164. data/assets/tvos/MRuby.framework/Headers/mruby/class.h +14 -11
  165. data/assets/tvos/MRuby.framework/Headers/mruby/common.h +5 -0
  166. data/assets/tvos/MRuby.framework/Headers/mruby/compile.h +4 -3
  167. data/assets/tvos/MRuby.framework/Headers/mruby/debug.h +3 -2
  168. data/assets/tvos/MRuby.framework/Headers/mruby/dump.h +2 -2
  169. data/assets/tvos/MRuby.framework/Headers/mruby/hash.h +38 -5
  170. data/assets/tvos/MRuby.framework/Headers/mruby/irep.h +17 -4
  171. data/assets/tvos/MRuby.framework/Headers/mruby/object.h +4 -5
  172. data/assets/tvos/MRuby.framework/Headers/mruby/opcode.h +47 -139
  173. data/assets/tvos/MRuby.framework/Headers/mruby/ops.h +117 -0
  174. data/assets/tvos/MRuby.framework/Headers/mruby/proc.h +4 -4
  175. data/assets/tvos/MRuby.framework/Headers/mruby/string.h +11 -7
  176. data/assets/tvos/MRuby.framework/Headers/mruby/throw.h +4 -4
  177. data/assets/tvos/MRuby.framework/Headers/mruby/variable.h +2 -4
  178. data/assets/tvos/MRuby.framework/Headers/mruby/version.h +6 -6
  179. data/assets/tvos/MRuby.framework/MRuby +0 -0
  180. data/assets/tvos/MyApp.xcodeproj/project.pbxproj +25 -19
  181. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  182. data/assets/tvos/main.c +1 -1
  183. data/ext/ruby2d/extconf.rb +59 -50
  184. data/ext/ruby2d/ruby2d.c +0 -1
  185. data/lib/ruby2d.rb +1 -7
  186. data/lib/ruby2d/cli/launch.rb +1 -1
  187. data/lib/ruby2d/font.rb +32 -7
  188. data/lib/ruby2d/version.rb +1 -1
  189. metadata +132 -6
  190. data/assets/opal.js +0 -21637
  191. data/assets/simple2d.js +0 -1379
  192. data/assets/template.html +0 -18
@@ -0,0 +1,251 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2018 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 includes gravity, so a device at rest will have
82
+ * an acceleration of SDL_STANDARD_GRAVITY straight down.
83
+ *
84
+ * values[0]: Acceleration on the x axis
85
+ * values[1]: Acceleration on the y axis
86
+ * values[2]: Acceleration on the z axis
87
+ *
88
+ * For phones held in portrait mode, the axes are defined as follows:
89
+ * -X ... +X : left ... right
90
+ * -Y ... +Y : bottom ... top
91
+ * -Z ... +Z : farther ... closer
92
+ *
93
+ * The axis data is not changed when the phone is rotated.
94
+ *
95
+ * \sa SDL_GetDisplayOrientation()
96
+ */
97
+ #define SDL_STANDARD_GRAVITY 9.80665f
98
+
99
+ /**
100
+ * Gyroscope sensor
101
+ *
102
+ * The gyroscope returns the current rate of rotation in radians per second.
103
+ * The rotation is positive in the counter-clockwise direction. That is,
104
+ * an observer looking from a positive location on one of the axes would
105
+ * see positive rotation on that axis when it appeared to be rotating
106
+ * counter-clockwise.
107
+ *
108
+ * values[0]: Angular speed around the x axis
109
+ * values[1]: Angular speed around the y axis
110
+ * values[2]: Angular speed around the z axis
111
+ *
112
+ * For phones held in portrait mode, the axes are defined as follows:
113
+ * -X ... +X : left ... right
114
+ * -Y ... +Y : bottom ... top
115
+ * -Z ... +Z : farther ... closer
116
+ *
117
+ * The axis data is not changed when the phone is rotated.
118
+ *
119
+ * \sa SDL_GetDisplayOrientation()
120
+ */
121
+
122
+ /* Function prototypes */
123
+
124
+ /**
125
+ * \brief Count the number of sensors attached to the system right now
126
+ */
127
+ extern DECLSPEC int SDLCALL SDL_NumSensors(void);
128
+
129
+ /**
130
+ * \brief Get the implementation dependent name of a sensor.
131
+ *
132
+ * This can be called before any sensors are opened.
133
+ *
134
+ * \return The sensor name, or NULL if device_index is out of range.
135
+ */
136
+ extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index);
137
+
138
+ /**
139
+ * \brief Get the type of a sensor.
140
+ *
141
+ * This can be called before any sensors are opened.
142
+ *
143
+ * \return The sensor type, or SDL_SENSOR_INVALID if device_index is out of range.
144
+ */
145
+ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index);
146
+
147
+ /**
148
+ * \brief Get the platform dependent type of a sensor.
149
+ *
150
+ * This can be called before any sensors are opened.
151
+ *
152
+ * \return The sensor platform dependent type, or -1 if device_index is out of range.
153
+ */
154
+ extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index);
155
+
156
+ /**
157
+ * \brief Get the instance ID of a sensor.
158
+ *
159
+ * This can be called before any sensors are opened.
160
+ *
161
+ * \return The sensor instance ID, or -1 if device_index is out of range.
162
+ */
163
+ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index);
164
+
165
+ /**
166
+ * \brief Open a sensor for use.
167
+ *
168
+ * The index passed as an argument refers to the N'th sensor on the system.
169
+ *
170
+ * \return A sensor identifier, or NULL if an error occurred.
171
+ */
172
+ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index);
173
+
174
+ /**
175
+ * Return the SDL_Sensor associated with an instance id.
176
+ */
177
+ extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id);
178
+
179
+ /**
180
+ * \brief Get the implementation dependent name of a sensor.
181
+ *
182
+ * \return The sensor name, or NULL if the sensor is NULL.
183
+ */
184
+ extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor);
185
+
186
+ /**
187
+ * \brief Get the type of a sensor.
188
+ *
189
+ * This can be called before any sensors are opened.
190
+ *
191
+ * \return The sensor type, or SDL_SENSOR_INVALID if the sensor is NULL.
192
+ */
193
+ extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor);
194
+
195
+ /**
196
+ * \brief Get the platform dependent type of a sensor.
197
+ *
198
+ * This can be called before any sensors are opened.
199
+ *
200
+ * \return The sensor platform dependent type, or -1 if the sensor is NULL.
201
+ */
202
+ extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor);
203
+
204
+ /**
205
+ * \brief Get the instance ID of a sensor.
206
+ *
207
+ * This can be called before any sensors are opened.
208
+ *
209
+ * \return The sensor instance ID, or -1 if the sensor is NULL.
210
+ */
211
+ extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor);
212
+
213
+ /**
214
+ * Get the current state of an opened sensor.
215
+ *
216
+ * The number of values and interpretation of the data is sensor dependent.
217
+ *
218
+ * \param sensor The sensor to query
219
+ * \param data A pointer filled with the current sensor state
220
+ * \param num_values The number of values to write to data
221
+ *
222
+ * \return 0 or -1 if an error occurred.
223
+ */
224
+ extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor * sensor, float *data, int num_values);
225
+
226
+ /**
227
+ * Close a sensor previously opened with SDL_SensorOpen()
228
+ */
229
+ extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor * sensor);
230
+
231
+ /**
232
+ * Update the current state of the open sensors.
233
+ *
234
+ * This is called automatically by the event loop if sensor events are enabled.
235
+ *
236
+ * This needs to be called from the thread that initialized the sensor subsystem.
237
+ */
238
+ extern DECLSPEC void SDLCALL SDL_SensorUpdate(void);
239
+
240
+
241
+ /* Ends C function definitions when using C++ */
242
+ #ifdef __cplusplus
243
+ /* *INDENT-OFF* */
244
+ }
245
+ /* *INDENT-ON* */
246
+ #endif
247
+ #include "close_code.h"
248
+
249
+ #endif /* _SDL_sensor_h */
250
+
251
+ /* vi: set ts=4 sw=4 expandtab: */
@@ -0,0 +1,144 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2018 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,607 @@
1
+ /*
2
+ Simple DirectMedia Layer
3
+ Copyright (C) 1997-2018 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 HAVE_SYS_TYPES_H
34
+ #include <sys/types.h>
35
+ #endif
36
+ #ifdef HAVE_STDIO_H
37
+ #include <stdio.h>
38
+ #endif
39
+ #if defined(STDC_HEADERS)
40
+ # include <stdlib.h>
41
+ # include <stddef.h>
42
+ # include <stdarg.h>
43
+ #else
44
+ # if defined(HAVE_STDLIB_H)
45
+ # include <stdlib.h>
46
+ # elif defined(HAVE_MALLOC_H)
47
+ # include <malloc.h>
48
+ # endif
49
+ # if defined(HAVE_STDDEF_H)
50
+ # include <stddef.h>
51
+ # endif
52
+ # if defined(HAVE_STDARG_H)
53
+ # include <stdarg.h>
54
+ # endif
55
+ #endif
56
+ #ifdef HAVE_STRING_H
57
+ # if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
58
+ # include <memory.h>
59
+ # endif
60
+ # include <string.h>
61
+ #endif
62
+ #ifdef HAVE_STRINGS_H
63
+ # include <strings.h>
64
+ #endif
65
+ #ifdef HAVE_WCHAR_H
66
+ # include <wchar.h>
67
+ #endif
68
+ #if defined(HAVE_INTTYPES_H)
69
+ # include <inttypes.h>
70
+ #elif defined(HAVE_STDINT_H)
71
+ # include <stdint.h>
72
+ #endif
73
+ #ifdef HAVE_CTYPE_H
74
+ # include <ctype.h>
75
+ #endif
76
+ #ifdef HAVE_MATH_H
77
+ # if defined(__WINRT__)
78
+ /* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on
79
+ WinRT. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx
80
+ for more information.
81
+ */
82
+ # define _USE_MATH_DEFINES
83
+ # endif
84
+ # include <math.h>
85
+ #endif
86
+ #ifdef HAVE_FLOAT_H
87
+ # include <float.h>
88
+ #endif
89
+ #if defined(HAVE_ALLOCA) && !defined(alloca)
90
+ # if defined(HAVE_ALLOCA_H)
91
+ # include <alloca.h>
92
+ # elif defined(__GNUC__)
93
+ # define alloca __builtin_alloca
94
+ # elif defined(_MSC_VER)
95
+ # include <malloc.h>
96
+ # define alloca _alloca
97
+ # elif defined(__WATCOMC__)
98
+ # include <malloc.h>
99
+ # elif defined(__BORLANDC__)
100
+ # include <malloc.h>
101
+ # elif defined(__DMC__)
102
+ # include <stdlib.h>
103
+ # elif defined(__AIX__)
104
+ #pragma alloca
105
+ # elif defined(__MRC__)
106
+ void *alloca(unsigned);
107
+ # else
108
+ char *alloca();
109
+ # endif
110
+ #endif
111
+
112
+ /**
113
+ * The number of elements in an array.
114
+ */
115
+ #define SDL_arraysize(array) (sizeof(array)/sizeof(array[0]))
116
+ #define SDL_TABLESIZE(table) SDL_arraysize(table)
117
+
118
+ /**
119
+ * Macro useful for building other macros with strings in them
120
+ *
121
+ * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n")
122
+ */
123
+ #define SDL_STRINGIFY_ARG(arg) #arg
124
+
125
+ /**
126
+ * \name Cast operators
127
+ *
128
+ * Use proper C++ casts when compiled as C++ to be compatible with the option
129
+ * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above).
130
+ */
131
+ /* @{ */
132
+ #ifdef __cplusplus
133
+ #define SDL_reinterpret_cast(type, expression) reinterpret_cast<type>(expression)
134
+ #define SDL_static_cast(type, expression) static_cast<type>(expression)
135
+ #define SDL_const_cast(type, expression) const_cast<type>(expression)
136
+ #else
137
+ #define SDL_reinterpret_cast(type, expression) ((type)(expression))
138
+ #define SDL_static_cast(type, expression) ((type)(expression))
139
+ #define SDL_const_cast(type, expression) ((type)(expression))
140
+ #endif
141
+ /* @} *//* Cast operators */
142
+
143
+ /* Define a four character code as a Uint32 */
144
+ #define SDL_FOURCC(A, B, C, D) \
145
+ ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \
146
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \
147
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \
148
+ (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24))
149
+
150
+ /**
151
+ * \name Basic data types
152
+ */
153
+ /* @{ */
154
+
155
+ #ifdef __CC_ARM
156
+ /* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */
157
+ #define SDL_FALSE 0
158
+ #define SDL_TRUE 1
159
+ typedef int SDL_bool;
160
+ #else
161
+ typedef enum
162
+ {
163
+ SDL_FALSE = 0,
164
+ SDL_TRUE = 1
165
+ } SDL_bool;
166
+ #endif
167
+
168
+ /**
169
+ * \brief A signed 8-bit integer type.
170
+ */
171
+ #define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */
172
+ #define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */
173
+ typedef int8_t Sint8;
174
+ /**
175
+ * \brief An unsigned 8-bit integer type.
176
+ */
177
+ #define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */
178
+ #define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */
179
+ typedef uint8_t Uint8;
180
+ /**
181
+ * \brief A signed 16-bit integer type.
182
+ */
183
+ #define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */
184
+ #define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */
185
+ typedef int16_t Sint16;
186
+ /**
187
+ * \brief An unsigned 16-bit integer type.
188
+ */
189
+ #define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */
190
+ #define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */
191
+ typedef uint16_t Uint16;
192
+ /**
193
+ * \brief A signed 32-bit integer type.
194
+ */
195
+ #define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */
196
+ #define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */
197
+ typedef int32_t Sint32;
198
+ /**
199
+ * \brief An unsigned 32-bit integer type.
200
+ */
201
+ #define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */
202
+ #define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */
203
+ typedef uint32_t Uint32;
204
+
205
+ /**
206
+ * \brief A signed 64-bit integer type.
207
+ */
208
+ #define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */
209
+ #define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */
210
+ typedef int64_t Sint64;
211
+ /**
212
+ * \brief An unsigned 64-bit integer type.
213
+ */
214
+ #define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */
215
+ #define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */
216
+ typedef uint64_t Uint64;
217
+
218
+ /* @} *//* Basic data types */
219
+
220
+ /* Make sure we have macros for printing 64 bit values.
221
+ * <stdint.h> should define these but this is not true all platforms.
222
+ * (for example win32) */
223
+ #ifndef SDL_PRIs64
224
+ #ifdef PRIs64
225
+ #define SDL_PRIs64 PRIs64
226
+ #elif defined(__WIN32__)
227
+ #define SDL_PRIs64 "I64d"
228
+ #elif defined(__LINUX__) && defined(__LP64__)
229
+ #define SDL_PRIs64 "ld"
230
+ #else
231
+ #define SDL_PRIs64 "lld"
232
+ #endif
233
+ #endif
234
+ #ifndef SDL_PRIu64
235
+ #ifdef PRIu64
236
+ #define SDL_PRIu64 PRIu64
237
+ #elif defined(__WIN32__)
238
+ #define SDL_PRIu64 "I64u"
239
+ #elif defined(__LINUX__) && defined(__LP64__)
240
+ #define SDL_PRIu64 "lu"
241
+ #else
242
+ #define SDL_PRIu64 "llu"
243
+ #endif
244
+ #endif
245
+ #ifndef SDL_PRIx64
246
+ #ifdef PRIx64
247
+ #define SDL_PRIx64 PRIx64
248
+ #elif defined(__WIN32__)
249
+ #define SDL_PRIx64 "I64x"
250
+ #elif defined(__LINUX__) && defined(__LP64__)
251
+ #define SDL_PRIx64 "lx"
252
+ #else
253
+ #define SDL_PRIx64 "llx"
254
+ #endif
255
+ #endif
256
+ #ifndef SDL_PRIX64
257
+ #ifdef PRIX64
258
+ #define SDL_PRIX64 PRIX64
259
+ #elif defined(__WIN32__)
260
+ #define SDL_PRIX64 "I64X"
261
+ #elif defined(__LINUX__) && defined(__LP64__)
262
+ #define SDL_PRIX64 "lX"
263
+ #else
264
+ #define SDL_PRIX64 "llX"
265
+ #endif
266
+ #endif
267
+
268
+ /* Annotations to help code analysis tools */
269
+ #ifdef SDL_DISABLE_ANALYZE_MACROS
270
+ #define SDL_IN_BYTECAP(x)
271
+ #define SDL_INOUT_Z_CAP(x)
272
+ #define SDL_OUT_Z_CAP(x)
273
+ #define SDL_OUT_CAP(x)
274
+ #define SDL_OUT_BYTECAP(x)
275
+ #define SDL_OUT_Z_BYTECAP(x)
276
+ #define SDL_PRINTF_FORMAT_STRING
277
+ #define SDL_SCANF_FORMAT_STRING
278
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
279
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber )
280
+ #else
281
+ #if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */
282
+ #include <sal.h>
283
+
284
+ #define SDL_IN_BYTECAP(x) _In_bytecount_(x)
285
+ #define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x)
286
+ #define SDL_OUT_Z_CAP(x) _Out_z_cap_(x)
287
+ #define SDL_OUT_CAP(x) _Out_cap_(x)
288
+ #define SDL_OUT_BYTECAP(x) _Out_bytecap_(x)
289
+ #define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x)
290
+
291
+ #define SDL_PRINTF_FORMAT_STRING _Printf_format_string_
292
+ #define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_
293
+ #else
294
+ #define SDL_IN_BYTECAP(x)
295
+ #define SDL_INOUT_Z_CAP(x)
296
+ #define SDL_OUT_Z_CAP(x)
297
+ #define SDL_OUT_CAP(x)
298
+ #define SDL_OUT_BYTECAP(x)
299
+ #define SDL_OUT_Z_BYTECAP(x)
300
+ #define SDL_PRINTF_FORMAT_STRING
301
+ #define SDL_SCANF_FORMAT_STRING
302
+ #endif
303
+ #if defined(__GNUC__)
304
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 )))
305
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 )))
306
+ #else
307
+ #define SDL_PRINTF_VARARG_FUNC( fmtargnumber )
308
+ #define SDL_SCANF_VARARG_FUNC( fmtargnumber )
309
+ #endif
310
+ #endif /* SDL_DISABLE_ANALYZE_MACROS */
311
+
312
+ #define SDL_COMPILE_TIME_ASSERT(name, x) \
313
+ typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1]
314
+ /** \cond */
315
+ #ifndef DOXYGEN_SHOULD_IGNORE_THIS
316
+ SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1);
317
+ SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1);
318
+ SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2);
319
+ SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2);
320
+ SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4);
321
+ SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4);
322
+ SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8);
323
+ SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8);
324
+ #endif /* DOXYGEN_SHOULD_IGNORE_THIS */
325
+ /** \endcond */
326
+
327
+ /* Check to make sure enums are the size of ints, for structure packing.
328
+ For both Watcom C/C++ and Borland C/C++ the compiler option that makes
329
+ enums having the size of an int must be enabled.
330
+ This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11).
331
+ */
332
+
333
+ /** \cond */
334
+ #ifndef DOXYGEN_SHOULD_IGNORE_THIS
335
+ #if !defined(__ANDROID__)
336
+ /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */
337
+ typedef enum
338
+ {
339
+ DUMMY_ENUM_VALUE
340
+ } SDL_DUMMY_ENUM;
341
+
342
+ SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int));
343
+ #endif
344
+ #endif /* DOXYGEN_SHOULD_IGNORE_THIS */
345
+ /** \endcond */
346
+
347
+ #include "begin_code.h"
348
+ /* Set up for C function definitions, even when using C++ */
349
+ #ifdef __cplusplus
350
+ extern "C" {
351
+ #endif
352
+
353
+ #ifdef HAVE_ALLOCA
354
+ #define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count))
355
+ #define SDL_stack_free(data)
356
+ #else
357
+ #define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count))
358
+ #define SDL_stack_free(data) SDL_free(data)
359
+ #endif
360
+
361
+ extern DECLSPEC void *SDLCALL SDL_malloc(size_t size);
362
+ extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size);
363
+ extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size);
364
+ extern DECLSPEC void SDLCALL SDL_free(void *mem);
365
+
366
+ typedef void *(SDLCALL *SDL_malloc_func)(size_t size);
367
+ typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size);
368
+ typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size);
369
+ typedef void (SDLCALL *SDL_free_func)(void *mem);
370
+
371
+ /**
372
+ * \brief Get the current set of SDL memory functions
373
+ */
374
+ extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func,
375
+ SDL_calloc_func *calloc_func,
376
+ SDL_realloc_func *realloc_func,
377
+ SDL_free_func *free_func);
378
+
379
+ /**
380
+ * \brief Replace SDL's memory allocation functions with a custom set
381
+ *
382
+ * \note If you are replacing SDL's memory functions, you should call
383
+ * SDL_GetNumAllocations() and be very careful if it returns non-zero.
384
+ * That means that your free function will be called with memory
385
+ * allocated by the previous memory allocation functions.
386
+ */
387
+ extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func,
388
+ SDL_calloc_func calloc_func,
389
+ SDL_realloc_func realloc_func,
390
+ SDL_free_func free_func);
391
+
392
+ /**
393
+ * \brief Get the number of outstanding (unfreed) allocations
394
+ */
395
+ extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void);
396
+
397
+ extern DECLSPEC char *SDLCALL SDL_getenv(const char *name);
398
+ extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite);
399
+
400
+ extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (*compare) (const void *, const void *));
401
+
402
+ extern DECLSPEC int SDLCALL SDL_abs(int x);
403
+
404
+ /* !!! FIXME: these have side effects. You probably shouldn't use them. */
405
+ /* !!! FIXME: Maybe we do forceinline functions of SDL_mini, SDL_minf, etc? */
406
+ #define SDL_min(x, y) (((x) < (y)) ? (x) : (y))
407
+ #define SDL_max(x, y) (((x) > (y)) ? (x) : (y))
408
+
409
+ extern DECLSPEC int SDLCALL SDL_isdigit(int x);
410
+ extern DECLSPEC int SDLCALL SDL_isspace(int x);
411
+ extern DECLSPEC int SDLCALL SDL_toupper(int x);
412
+ extern DECLSPEC int SDLCALL SDL_tolower(int x);
413
+
414
+ extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len);
415
+
416
+ #define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x)))
417
+ #define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x)))
418
+
419
+ /* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */
420
+ SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords)
421
+ {
422
+ #if defined(__GNUC__) && defined(i386)
423
+ int u0, u1, u2;
424
+ __asm__ __volatile__ (
425
+ "cld \n\t"
426
+ "rep ; stosl \n\t"
427
+ : "=&D" (u0), "=&a" (u1), "=&c" (u2)
428
+ : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords))
429
+ : "memory"
430
+ );
431
+ #else
432
+ size_t _n = (dwords + 3) / 4;
433
+ Uint32 *_p = SDL_static_cast(Uint32 *, dst);
434
+ Uint32 _val = (val);
435
+ if (dwords == 0)
436
+ return;
437
+ switch (dwords % 4)
438
+ {
439
+ case 0: do { *_p++ = _val; /* fallthrough */
440
+ case 3: *_p++ = _val; /* fallthrough */
441
+ case 2: *_p++ = _val; /* fallthrough */
442
+ case 1: *_p++ = _val; /* fallthrough */
443
+ } while ( --_n );
444
+ }
445
+ #endif
446
+ }
447
+
448
+ extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
449
+
450
+ extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len);
451
+ extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len);
452
+
453
+ extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr);
454
+ extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr);
455
+ extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
456
+ extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen);
457
+ extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2);
458
+
459
+ extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str);
460
+ extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
461
+ extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes);
462
+ extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen);
463
+ extern DECLSPEC char *SDLCALL SDL_strdup(const char *str);
464
+ extern DECLSPEC char *SDLCALL SDL_strrev(char *str);
465
+ extern DECLSPEC char *SDLCALL SDL_strupr(char *str);
466
+ extern DECLSPEC char *SDLCALL SDL_strlwr(char *str);
467
+ extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c);
468
+ extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c);
469
+ extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle);
470
+ extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str);
471
+
472
+ extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix);
473
+ extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix);
474
+ extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix);
475
+ extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix);
476
+ extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix);
477
+ extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix);
478
+
479
+ extern DECLSPEC int SDLCALL SDL_atoi(const char *str);
480
+ extern DECLSPEC double SDLCALL SDL_atof(const char *str);
481
+ extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base);
482
+ extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base);
483
+ extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base);
484
+ extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base);
485
+ extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp);
486
+
487
+ extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2);
488
+ extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen);
489
+ extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2);
490
+ extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len);
491
+
492
+ extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2);
493
+ extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap);
494
+ 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);
495
+ extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap);
496
+
497
+ #ifndef HAVE_M_PI
498
+ #ifndef M_PI
499
+ #define M_PI 3.14159265358979323846264338327950288 /**< pi */
500
+ #endif
501
+ #endif
502
+
503
+ extern DECLSPEC double SDLCALL SDL_acos(double x);
504
+ extern DECLSPEC float SDLCALL SDL_acosf(float x);
505
+ extern DECLSPEC double SDLCALL SDL_asin(double x);
506
+ extern DECLSPEC float SDLCALL SDL_asinf(float x);
507
+ extern DECLSPEC double SDLCALL SDL_atan(double x);
508
+ extern DECLSPEC float SDLCALL SDL_atanf(float x);
509
+ extern DECLSPEC double SDLCALL SDL_atan2(double x, double y);
510
+ extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y);
511
+ extern DECLSPEC double SDLCALL SDL_ceil(double x);
512
+ extern DECLSPEC float SDLCALL SDL_ceilf(float x);
513
+ extern DECLSPEC double SDLCALL SDL_copysign(double x, double y);
514
+ extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y);
515
+ extern DECLSPEC double SDLCALL SDL_cos(double x);
516
+ extern DECLSPEC float SDLCALL SDL_cosf(float x);
517
+ extern DECLSPEC double SDLCALL SDL_exp(double x);
518
+ extern DECLSPEC float SDLCALL SDL_expf(float x);
519
+ extern DECLSPEC double SDLCALL SDL_fabs(double x);
520
+ extern DECLSPEC float SDLCALL SDL_fabsf(float x);
521
+ extern DECLSPEC double SDLCALL SDL_floor(double x);
522
+ extern DECLSPEC float SDLCALL SDL_floorf(float x);
523
+ extern DECLSPEC double SDLCALL SDL_fmod(double x, double y);
524
+ extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y);
525
+ extern DECLSPEC double SDLCALL SDL_log(double x);
526
+ extern DECLSPEC float SDLCALL SDL_logf(float x);
527
+ extern DECLSPEC double SDLCALL SDL_log10(double x);
528
+ extern DECLSPEC float SDLCALL SDL_log10f(float x);
529
+ extern DECLSPEC double SDLCALL SDL_pow(double x, double y);
530
+ extern DECLSPEC float SDLCALL SDL_powf(float x, float y);
531
+ extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n);
532
+ extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n);
533
+ extern DECLSPEC double SDLCALL SDL_sin(double x);
534
+ extern DECLSPEC float SDLCALL SDL_sinf(float x);
535
+ extern DECLSPEC double SDLCALL SDL_sqrt(double x);
536
+ extern DECLSPEC float SDLCALL SDL_sqrtf(float x);
537
+ extern DECLSPEC double SDLCALL SDL_tan(double x);
538
+ extern DECLSPEC float SDLCALL SDL_tanf(float x);
539
+
540
+ /* The SDL implementation of iconv() returns these error codes */
541
+ #define SDL_ICONV_ERROR (size_t)-1
542
+ #define SDL_ICONV_E2BIG (size_t)-2
543
+ #define SDL_ICONV_EILSEQ (size_t)-3
544
+ #define SDL_ICONV_EINVAL (size_t)-4
545
+
546
+ /* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
547
+ typedef struct _SDL_iconv_t *SDL_iconv_t;
548
+ extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode,
549
+ const char *fromcode);
550
+ extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd);
551
+ extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf,
552
+ size_t * inbytesleft, char **outbuf,
553
+ size_t * outbytesleft);
554
+ /**
555
+ * This function converts a string between encodings in one pass, returning a
556
+ * string that must be freed with SDL_free() or NULL on error.
557
+ */
558
+ extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode,
559
+ const char *fromcode,
560
+ const char *inbuf,
561
+ size_t inbytesleft);
562
+ #define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1)
563
+ #define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
564
+ #define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1)
565
+
566
+ /* force builds using Clang's static analysis tools to use literal C runtime
567
+ here, since there are possibly tests that are ineffective otherwise. */
568
+ #if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS)
569
+ #define SDL_malloc malloc
570
+ #define SDL_calloc calloc
571
+ #define SDL_realloc realloc
572
+ #define SDL_free free
573
+ #define SDL_memset memset
574
+ #define SDL_memcpy memcpy
575
+ #define SDL_memmove memmove
576
+ #define SDL_memcmp memcmp
577
+ #define SDL_strlen strlen
578
+ #define SDL_strlcpy strlcpy
579
+ #define SDL_strlcat strlcat
580
+ #define SDL_strdup strdup
581
+ #define SDL_strchr strchr
582
+ #define SDL_strrchr strrchr
583
+ #define SDL_strstr strstr
584
+ #define SDL_strcmp strcmp
585
+ #define SDL_strncmp strncmp
586
+ #define SDL_strcasecmp strcasecmp
587
+ #define SDL_strncasecmp strncasecmp
588
+ #define SDL_sscanf sscanf
589
+ #define SDL_vsscanf vsscanf
590
+ #define SDL_snprintf snprintf
591
+ #define SDL_vsnprintf vsnprintf
592
+ #endif
593
+
594
+ SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords)
595
+ {
596
+ return SDL_memcpy(dst, src, dwords * 4);
597
+ }
598
+
599
+ /* Ends C function definitions when using C++ */
600
+ #ifdef __cplusplus
601
+ }
602
+ #endif
603
+ #include "close_code.h"
604
+
605
+ #endif /* SDL_stdinc_h_ */
606
+
607
+ /* vi: set ts=4 sw=4 expandtab: */