ruby2d 0.11.2 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. checksums.yaml +4 -4
  2. data/assets/include/GLES2/gl2.h +656 -0
  3. data/assets/include/GLES2/gl2ext.h +3949 -0
  4. data/assets/include/GLES2/gl2ext_angle.h +701 -0
  5. data/assets/include/GLES2/gl2platform.h +27 -0
  6. data/assets/include/GLES3/gl3.h +1192 -0
  7. data/assets/include/GLES3/gl31.h +1507 -0
  8. data/assets/include/GLES3/gl32.h +1808 -0
  9. data/assets/include/GLES3/gl3platform.h +27 -0
  10. data/assets/include/KHR/khrplatform.h +290 -0
  11. data/assets/include/SDL2/SDL.h +1 -0
  12. data/assets/include/SDL2/SDL_assert.h +4 -2
  13. data/assets/include/SDL2/SDL_atomic.h +20 -0
  14. data/assets/include/SDL2/SDL_audio.h +40 -4
  15. data/assets/include/SDL2/SDL_blendmode.h +4 -6
  16. data/assets/include/SDL2/SDL_clipboard.h +47 -0
  17. data/assets/include/SDL2/SDL_config.h +6 -2
  18. data/assets/include/SDL2/SDL_config_android.h +2 -0
  19. data/assets/include/SDL2/SDL_config_emscripten.h +2 -0
  20. data/assets/include/SDL2/SDL_config_iphoneos.h +3 -1
  21. data/assets/include/SDL2/SDL_config_macosx.h +3 -6
  22. data/assets/include/SDL2/SDL_config_minimal.h +18 -11
  23. data/assets/include/SDL2/SDL_config_ngage.h +89 -0
  24. data/assets/include/SDL2/SDL_config_os2.h +5 -3
  25. data/assets/include/SDL2/SDL_config_pandora.h +1 -0
  26. data/assets/include/SDL2/SDL_config_windows.h +71 -45
  27. data/assets/include/SDL2/SDL_config_wingdk.h +253 -0
  28. data/assets/include/SDL2/SDL_config_winrt.h +11 -49
  29. data/assets/include/SDL2/SDL_config_xbox.h +235 -0
  30. data/assets/include/SDL2/SDL_cpuinfo.h +39 -4
  31. data/assets/include/SDL2/SDL_egl.h +59 -9
  32. data/assets/include/SDL2/SDL_endian.h +34 -3
  33. data/assets/include/SDL2/SDL_events.h +32 -1
  34. data/assets/include/SDL2/SDL_filesystem.h +5 -1
  35. data/assets/include/SDL2/SDL_gamecontroller.h +78 -5
  36. data/assets/include/SDL2/SDL_guid.h +100 -0
  37. data/assets/include/SDL2/SDL_hints.h +645 -43
  38. data/assets/include/SDL2/SDL_image.h +2045 -33
  39. data/assets/include/SDL2/SDL_joystick.h +127 -7
  40. data/assets/include/SDL2/SDL_keyboard.h +38 -1
  41. data/assets/include/SDL2/SDL_keycode.h +6 -1
  42. data/assets/include/SDL2/SDL_log.h +2 -2
  43. data/assets/include/SDL2/SDL_main.h +42 -2
  44. data/assets/include/SDL2/SDL_metal.h +2 -1
  45. data/assets/include/SDL2/SDL_mixer.h +2529 -396
  46. data/assets/include/SDL2/SDL_mouse.h +12 -1
  47. data/assets/include/SDL2/SDL_opengl.h +0 -51
  48. data/assets/include/SDL2/SDL_opengl_glext.h +2260 -231
  49. data/assets/include/SDL2/SDL_opengles2_gl2.h +374 -339
  50. data/assets/include/SDL2/SDL_opengles2_gl2ext.h +3479 -1496
  51. data/assets/include/SDL2/SDL_opengles2_gl2platform.h +6 -9
  52. data/assets/include/SDL2/SDL_opengles2_khrplatform.h +43 -14
  53. data/assets/include/SDL2/SDL_platform.h +32 -6
  54. data/assets/include/SDL2/SDL_rect.h +154 -2
  55. data/assets/include/SDL2/SDL_render.h +46 -17
  56. data/assets/include/SDL2/SDL_revision.h +4 -0
  57. data/assets/include/SDL2/SDL_rwops.h +1 -15
  58. data/assets/include/SDL2/SDL_scancode.h +46 -21
  59. data/assets/include/SDL2/SDL_sensor.h +24 -3
  60. data/assets/include/SDL2/SDL_stdinc.h +119 -8
  61. data/assets/include/SDL2/SDL_surface.h +3 -1
  62. data/assets/include/SDL2/SDL_system.h +66 -6
  63. data/assets/include/SDL2/SDL_syswm.h +2 -0
  64. data/assets/include/SDL2/SDL_test_common.h +1 -0
  65. data/assets/include/SDL2/SDL_test_font.h +90 -3
  66. data/assets/include/SDL2/SDL_thread.h +3 -3
  67. data/assets/include/SDL2/SDL_touch.h +8 -0
  68. data/assets/include/SDL2/SDL_ttf.h +2084 -155
  69. data/assets/include/SDL2/SDL_version.h +19 -3
  70. data/assets/include/SDL2/SDL_video.h +71 -9
  71. data/assets/include/SDL2/begin_code.h +4 -4
  72. data/assets/include/mrbconf.h +15 -17
  73. data/assets/include/mruby/array.h +8 -21
  74. data/assets/include/mruby/boxing_nan.h +115 -86
  75. data/assets/include/mruby/boxing_word.h +104 -78
  76. data/assets/include/mruby/common.h +6 -0
  77. data/assets/include/mruby/compile.h +3 -4
  78. data/assets/include/mruby/debug.h +4 -2
  79. data/assets/include/mruby/dump.h +5 -2
  80. data/assets/include/mruby/error.h +12 -2
  81. data/assets/include/mruby/gc.h +2 -0
  82. data/assets/include/mruby/hash.h +1 -3
  83. data/assets/include/mruby/irep.h +4 -4
  84. data/assets/include/mruby/numeric.h +21 -13
  85. data/assets/include/mruby/opcode.h +30 -0
  86. data/assets/include/mruby/ops.h +99 -101
  87. data/assets/include/mruby/presym/scanning.h +15 -9
  88. data/assets/include/mruby/proc.h +4 -2
  89. data/assets/include/mruby/string.h +3 -24
  90. data/assets/include/mruby/value.h +80 -40
  91. data/assets/include/mruby/variable.h +0 -15
  92. data/assets/include/mruby/version.h +5 -5
  93. data/assets/include/mruby.h +86 -16
  94. data/assets/macos/universal/bin/mrbc +0 -0
  95. data/assets/macos/universal/lib/libFLAC.a +0 -0
  96. data/assets/macos/universal/lib/libSDL2.a +0 -0
  97. data/assets/macos/universal/lib/libSDL2_image.a +0 -0
  98. data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
  99. data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
  100. data/assets/macos/universal/lib/libavif.a +0 -0
  101. data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
  102. data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
  103. data/assets/macos/universal/lib/libfreetype.a +0 -0
  104. data/assets/macos/universal/lib/libgraphite2.a +0 -0
  105. data/assets/macos/universal/lib/libharfbuzz.a +0 -0
  106. data/assets/macos/universal/lib/libhwy.a +0 -0
  107. data/assets/macos/universal/lib/libjpeg.a +0 -0
  108. data/assets/macos/universal/lib/libjxl.a +0 -0
  109. data/assets/macos/universal/lib/libmodplug.a +0 -0
  110. data/assets/macos/universal/lib/libmpg123.a +0 -0
  111. data/assets/macos/universal/lib/libmruby.a +0 -0
  112. data/assets/macos/universal/lib/libogg.a +0 -0
  113. data/assets/macos/universal/lib/libpng.a +0 -0
  114. data/assets/macos/universal/lib/libtiff.a +0 -0
  115. data/assets/macos/universal/lib/libvorbis.a +0 -0
  116. data/assets/macos/universal/lib/libvorbisfile.a +0 -0
  117. data/assets/macos/universal/lib/libwebp.a +0 -0
  118. data/assets/macos/universal/lib/libzstd.a +0 -0
  119. data/assets/wasm/libmruby.a +0 -0
  120. data/assets/wasm/template.html +52 -4
  121. data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
  122. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
  123. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
  124. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
  125. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
  126. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
  127. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
  128. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
  129. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
  130. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
  131. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
  132. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
  133. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
  134. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
  135. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
  136. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
  137. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
  138. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
  139. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
  140. data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
  141. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
  142. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
  143. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
  144. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
  145. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
  146. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
  147. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
  148. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
  149. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +1 -0
  150. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
  151. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
  152. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
  153. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
  154. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
  155. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
  156. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
  157. data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
  158. data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
  159. data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
  160. data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
  161. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
  162. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
  163. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
  164. data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
  165. data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
  166. data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
  167. data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
  168. data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
  169. data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
  170. data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
  171. data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
  172. data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
  173. data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
  174. data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
  175. data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
  176. data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
  177. data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
  178. data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
  179. data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -0
  180. data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
  181. data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
  182. data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
  183. data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
  184. data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
  185. data/ext/ruby2d/canvas.c +540 -0
  186. data/ext/ruby2d/extconf.rb +39 -21
  187. data/ext/ruby2d/gl.c +3 -3
  188. data/ext/ruby2d/image.c +7 -7
  189. data/ext/ruby2d/ruby2d.c +741 -24
  190. data/ext/ruby2d/ruby2d.h +66 -3
  191. data/ext/ruby2d/sound.c +16 -2
  192. data/lib/ruby2d/canvas.rb +315 -0
  193. data/lib/ruby2d/circle.rb +30 -15
  194. data/lib/ruby2d/cli/build.rb +11 -4
  195. data/lib/ruby2d/cli/enable_console.rb +3 -1
  196. data/lib/ruby2d/color.rb +133 -77
  197. data/lib/ruby2d/core.rb +32 -0
  198. data/lib/ruby2d/dsl.rb +38 -32
  199. data/lib/ruby2d/exceptions.rb +2 -1
  200. data/lib/ruby2d/font.rb +97 -62
  201. data/lib/ruby2d/image.rb +48 -27
  202. data/lib/ruby2d/line.rb +84 -45
  203. data/lib/ruby2d/music.rb +33 -23
  204. data/lib/ruby2d/pixel.rb +10 -9
  205. data/lib/ruby2d/pixmap.rb +39 -0
  206. data/lib/ruby2d/pixmap_atlas.rb +56 -0
  207. data/lib/ruby2d/quad.rb +98 -49
  208. data/lib/ruby2d/rectangle.rb +35 -36
  209. data/lib/ruby2d/renderable.rb +7 -6
  210. data/lib/ruby2d/sound.rb +23 -17
  211. data/lib/ruby2d/sprite.rb +181 -140
  212. data/lib/ruby2d/square.rb +21 -20
  213. data/lib/ruby2d/text.rb +47 -19
  214. data/lib/ruby2d/texture.rb +13 -3
  215. data/lib/ruby2d/tileset.rb +97 -44
  216. data/lib/ruby2d/triangle.rb +91 -42
  217. data/lib/ruby2d/version.rb +3 -1
  218. data/lib/ruby2d/vertices.rb +81 -45
  219. data/lib/ruby2d/window.rb +508 -371
  220. data/lib/ruby2d.rb +11 -29
  221. metadata +84 -16
  222. data/assets/include/SDL2/SDL_config_psp.h +0 -165
  223. data/assets/include/SDL2/SDL_config_wiz.h +0 -154
  224. data/assets/include/glew.h +0 -23686
  225. data/assets/macos/universal/lib/libpng16.a +0 -0
  226. data/assets/wasm/build_config.rb +0 -13
  227. data/assets/windows/glew/README.md +0 -10
  228. data/assets/windows/glew/glew.h +0 -23686
  229. data/assets/windows/glew/libglew32.a +0 -0
  230. data/assets/windows/mingw-w64-x86_64/lib/libpng16.a +0 -0
  231. data/lib/ruby2d/entity.rb +0 -17
@@ -43,6 +43,7 @@
43
43
 
44
44
  #include "SDL_stdinc.h"
45
45
  #include "SDL_error.h"
46
+ #include "SDL_guid.h"
46
47
 
47
48
  #include "begin_code.h"
48
49
  /* Set up for C function definitions, even when using C++ */
@@ -69,9 +70,7 @@ struct _SDL_Joystick;
69
70
  typedef struct _SDL_Joystick SDL_Joystick;
70
71
 
71
72
  /* A structure that encodes the stable unique id for a joystick device */
72
- typedef struct {
73
- Uint8 data[16];
74
- } SDL_JoystickGUID;
73
+ typedef SDL_GUID SDL_JoystickGUID;
75
74
 
76
75
  /**
77
76
  * This is a unique ID for a joystick for the time it is connected to the system,
@@ -125,6 +124,11 @@ typedef enum
125
124
  * the API functions that take a joystick index will be valid, and joystick
126
125
  * and game controller events will not be delivered.
127
126
  *
127
+ * As of SDL 2.26.0, you can take the joystick lock around reinitializing the
128
+ * joystick subsystem, to prevent other threads from seeing joysticks in an
129
+ * uninitialized state. However, all open joysticks will be closed and SDL
130
+ * functions called with them will fail.
131
+ *
128
132
  * \since This function is available since SDL 2.0.7.
129
133
  */
130
134
  extern DECLSPEC void SDLCALL SDL_LockJoysticks(void);
@@ -153,6 +157,7 @@ extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void);
153
157
  * \since This function is available since SDL 2.0.0.
154
158
  *
155
159
  * \sa SDL_JoystickName
160
+ * \sa SDL_JoystickPath
156
161
  * \sa SDL_JoystickOpen
157
162
  */
158
163
  extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
@@ -174,6 +179,23 @@ extern DECLSPEC int SDLCALL SDL_NumJoysticks(void);
174
179
  */
175
180
  extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index);
176
181
 
182
+ /**
183
+ * Get the implementation dependent path of a joystick.
184
+ *
185
+ * This can be called before any joysticks are opened.
186
+ *
187
+ * \param device_index the index of the joystick to query (the N'th joystick
188
+ * on the system)
189
+ * \returns the path of the selected joystick. If no path can be found, this
190
+ * function returns NULL; call SDL_GetError() for more information.
191
+ *
192
+ * \since This function is available since SDL 2.24.0.
193
+ *
194
+ * \sa SDL_JoystickPath
195
+ * \sa SDL_JoystickOpen
196
+ */
197
+ extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index);
198
+
177
199
  /**
178
200
  * Get the player index of a joystick, or -1 if it's not available This can be
179
201
  * called before any joysticks are opened.
@@ -330,6 +352,54 @@ extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type,
330
352
  int nbuttons,
331
353
  int nhats);
332
354
 
355
+ /**
356
+ * The structure that defines an extended virtual joystick description
357
+ *
358
+ * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx()
359
+ * All other elements of this structure are optional and can be left 0.
360
+ *
361
+ * \sa SDL_JoystickAttachVirtualEx
362
+ */
363
+ typedef struct SDL_VirtualJoystickDesc
364
+ {
365
+ Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */
366
+ Uint16 type; /**< `SDL_JoystickType` */
367
+ Uint16 naxes; /**< the number of axes on this joystick */
368
+ Uint16 nbuttons; /**< the number of buttons on this joystick */
369
+ Uint16 nhats; /**< the number of hats on this joystick */
370
+ Uint16 vendor_id; /**< the USB vendor ID of this joystick */
371
+ Uint16 product_id; /**< the USB product ID of this joystick */
372
+ Uint16 padding; /**< unused */
373
+ Uint32 button_mask; /**< A mask of which buttons are valid for this controller
374
+ e.g. (1 << SDL_CONTROLLER_BUTTON_A) */
375
+ Uint32 axis_mask; /**< A mask of which axes are valid for this controller
376
+ e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */
377
+ const char *name; /**< the name of the joystick */
378
+
379
+ void *userdata; /**< User data pointer passed to callbacks */
380
+ void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */
381
+ void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */
382
+ int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */
383
+ int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */
384
+ int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */
385
+ int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */
386
+
387
+ } SDL_VirtualJoystickDesc;
388
+
389
+ /**
390
+ * \brief The current version of the SDL_VirtualJoystickDesc structure
391
+ */
392
+ #define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1
393
+
394
+ /**
395
+ * Attach a new virtual joystick with extended properties.
396
+ *
397
+ * \returns the joystick's device index, or -1 if an error occurred.
398
+ *
399
+ * \since This function is available since SDL 2.24.0.
400
+ */
401
+ extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc);
402
+
333
403
  /**
334
404
  * Detach a virtual joystick.
335
405
  *
@@ -360,6 +430,10 @@ extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index);
360
430
  * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout,
361
431
  * SDL_WaitEvent.
362
432
  *
433
+ * Note that when sending trigger axes, you should scale the value to the full
434
+ * range of Sint16. For example, a trigger at rest would have the value of
435
+ * `SDL_JOYSTICK_AXIS_MIN`.
436
+ *
363
437
  * \param joystick the virtual joystick on which to set state.
364
438
  * \param axis the specific axis on the virtual joystick to set.
365
439
  * \param value the new value for the specified axis.
@@ -419,6 +493,19 @@ extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, in
419
493
  */
420
494
  extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick);
421
495
 
496
+ /**
497
+ * Get the implementation dependent path of a joystick.
498
+ *
499
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
500
+ * \returns the path of the selected joystick. If no path can be found, this
501
+ * function returns NULL; call SDL_GetError() for more information.
502
+ *
503
+ * \since This function is available since SDL 2.24.0.
504
+ *
505
+ * \sa SDL_JoystickPathForIndex
506
+ */
507
+ extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick);
508
+
422
509
  /**
423
510
  * Get the player index of an opened joystick.
424
511
  *
@@ -436,7 +523,8 @@ extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick);
436
523
  * Set the player index of an opened joystick.
437
524
  *
438
525
  * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
439
- * \param player_index the player index to set.
526
+ * \param player_index Player index to assign to this joystick, or -1 to clear
527
+ * the player index and turn off player LEDs.
440
528
  *
441
529
  * \since This function is available since SDL 2.0.12.
442
530
  */
@@ -495,6 +583,19 @@ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick);
495
583
  */
496
584
  extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick);
497
585
 
586
+ /**
587
+ * Get the firmware version of an opened joystick, if available.
588
+ *
589
+ * If the firmware version isn't available this function returns 0.
590
+ *
591
+ * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen()
592
+ * \returns the firmware version of the selected joystick, or 0 if
593
+ * unavailable.
594
+ *
595
+ * \since This function is available since SDL 2.24.0.
596
+ */
597
+ extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick);
598
+
498
599
  /**
499
600
  * Get the serial number of an opened joystick, if available.
500
601
  *
@@ -551,6 +652,25 @@ extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, ch
551
652
  */
552
653
  extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID);
553
654
 
655
+ /**
656
+ * Get the device information encoded in a SDL_JoystickGUID structure
657
+ *
658
+ * \param guid the SDL_JoystickGUID you wish to get info about
659
+ * \param vendor A pointer filled in with the device VID, or 0 if not
660
+ * available
661
+ * \param product A pointer filled in with the device PID, or 0 if not
662
+ * available
663
+ * \param version A pointer filled in with the device version, or 0 if not
664
+ * available
665
+ * \param crc16 A pointer filled in with a CRC used to distinguish different
666
+ * products with the same VID/PID, or 0 if not available
667
+ *
668
+ * \since This function is available since SDL 2.26.0.
669
+ *
670
+ * \sa SDL_JoystickGetDeviceGUID
671
+ */
672
+ extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16);
673
+
554
674
  /**
555
675
  * Get the status of a specified joystick.
556
676
  *
@@ -829,9 +949,9 @@ extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 lo
829
949
  * Each call to this function cancels any previous trigger rumble effect, and
830
950
  * calling it with 0 intensity stops any rumbling.
831
951
  *
832
- * Note that this function is for _trigger_ rumble; the first joystick to
833
- * support this was the PlayStation 5's DualShock 5 controller. If you want
834
- * the (more common) whole-controller rumble, use SDL_JoystickRumble()
952
+ * Note that this is rumbling of the _triggers_ and not the game controller as
953
+ * a whole. This is currently only supported on Xbox One controllers. If you
954
+ * want the (more common) whole-controller rumble, use SDL_JoystickRumble()
835
955
  * instead.
836
956
  *
837
957
  * \param joystick The joystick to vibrate
@@ -90,9 +90,21 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void);
90
90
  * \since This function is available since SDL 2.0.0.
91
91
  *
92
92
  * \sa SDL_PumpEvents
93
+ * \sa SDL_ResetKeyboard
93
94
  */
94
95
  extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys);
95
96
 
97
+ /**
98
+ * Clear the state of the keyboard
99
+ *
100
+ * This function will generate key up events for all pressed keys.
101
+ *
102
+ * \since This function is available since SDL 2.24.0.
103
+ *
104
+ * \sa SDL_GetKeyboardState
105
+ */
106
+ extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void);
107
+
96
108
  /**
97
109
  * Get the current key modifier state for the keyboard.
98
110
  *
@@ -268,9 +280,34 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void);
268
280
  */
269
281
  extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
270
282
 
283
+ /**
284
+ * Dismiss the composition window/IME without disabling the subsystem.
285
+ *
286
+ * \since This function is available since SDL 2.0.22.
287
+ *
288
+ * \sa SDL_StartTextInput
289
+ * \sa SDL_StopTextInput
290
+ */
291
+ extern DECLSPEC void SDLCALL SDL_ClearComposition(void);
292
+
293
+ /**
294
+ * Returns if an IME Composite or Candidate window is currently shown.
295
+ *
296
+ * \since This function is available since SDL 2.0.22.
297
+ */
298
+ extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void);
299
+
271
300
  /**
272
301
  * Set the rectangle used to type Unicode text inputs.
273
302
  *
303
+ * To start text input in a given location, this function is intended to be
304
+ * called before SDL_StartTextInput, although some platforms support moving
305
+ * the rectangle even while text input (and a composition) is active.
306
+ *
307
+ * Note: If you want to use the system native IME window, try setting hint
308
+ * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you
309
+ * any feedback.
310
+ *
274
311
  * \param rect the SDL_Rect structure representing the rectangle to receive
275
312
  * text (ignored if NULL)
276
313
  *
@@ -278,7 +315,7 @@ extern DECLSPEC void SDLCALL SDL_StopTextInput(void);
278
315
  *
279
316
  * \sa SDL_StartTextInput
280
317
  */
281
- extern DECLSPEC void SDLCALL SDL_SetTextInputRect(SDL_Rect *rect);
318
+ extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect);
282
319
 
283
320
  /**
284
321
  * Check whether the platform has screen keyboard support.
@@ -318,7 +318,12 @@ typedef enum
318
318
  SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2),
319
319
 
320
320
  SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND),
321
- SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD)
321
+ SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD),
322
+
323
+ SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT),
324
+ SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT),
325
+ SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL),
326
+ SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL)
322
327
  } SDL_KeyCode;
323
328
 
324
329
  /**
@@ -47,9 +47,9 @@ extern "C" {
47
47
 
48
48
 
49
49
  /**
50
- * \brief The maximum size of a log message
50
+ * \brief The maximum size of a log message prior to SDL 2.0.24
51
51
  *
52
- * Messages longer than the maximum size will be truncated
52
+ * As of 2.0.24 there is no limit to the length of SDL log messages.
53
53
  */
54
54
  #define SDL_MAX_LOG_MESSAGE 4096
55
55
 
@@ -51,6 +51,15 @@
51
51
  */
52
52
  #define SDL_MAIN_NEEDED
53
53
 
54
+ #elif defined(__GDK__)
55
+ /* On GDK, SDL provides a main function that initializes the game runtime.
56
+
57
+ Please note that #include'ing SDL_main.h is not enough to get a main()
58
+ function working. You must either link against SDL2main or, if not possible,
59
+ call the SDL_GDKRunApp function from your entry point.
60
+ */
61
+ #define SDL_MAIN_NEEDED
62
+
54
63
  #elif defined(__IPHONEOS__)
55
64
  /* On iOS SDL provides a main function that creates an application delegate
56
65
  and starts the iOS application run loop.
@@ -92,6 +101,22 @@
92
101
  */
93
102
  #define SDL_MAIN_AVAILABLE
94
103
 
104
+ #elif defined(__PS2__)
105
+ #define SDL_MAIN_AVAILABLE
106
+
107
+ #define SDL_PS2_SKIP_IOP_RESET() \
108
+ void reset_IOP(); \
109
+ void reset_IOP() {}
110
+
111
+ #elif defined(__3DS__)
112
+ /*
113
+ On N3DS, SDL provides a main function that sets up the screens
114
+ and storage.
115
+
116
+ If you provide this yourself, you may define SDL_MAIN_HANDLED
117
+ */
118
+ #define SDL_MAIN_AVAILABLE
119
+
95
120
  #endif
96
121
  #endif /* SDL_MAIN_HANDLED */
97
122
 
@@ -145,7 +170,7 @@ extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]);
145
170
  */
146
171
  extern DECLSPEC void SDLCALL SDL_SetMainReady(void);
147
172
 
148
- #ifdef __WIN32__
173
+ #if defined(__WIN32__) || defined(__GDK__)
149
174
 
150
175
  /**
151
176
  * Register a win32 window class for SDL's use.
@@ -189,7 +214,7 @@ extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void
189
214
  */
190
215
  extern DECLSPEC void SDLCALL SDL_UnregisterApp(void);
191
216
 
192
- #endif /* __WIN32__ */
217
+ #endif /* defined(__WIN32__) || defined(__GDK__) */
193
218
 
194
219
 
195
220
  #ifdef __WINRT__
@@ -224,6 +249,21 @@ extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_fun
224
249
 
225
250
  #endif /* __IPHONEOS__ */
226
251
 
252
+ #ifdef __GDK__
253
+
254
+ /**
255
+ * Initialize and launch an SDL GDK application.
256
+ *
257
+ * \param mainFunction the SDL app's C-style main(), an SDL_main_func
258
+ * \param reserved reserved for future use; should be NULL
259
+ * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve
260
+ * more information on the failure.
261
+ *
262
+ * \since This function is available since SDL 2.24.0.
263
+ */
264
+ extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved);
265
+
266
+ #endif /* __GDK__ */
227
267
 
228
268
  #ifdef __cplusplus
229
269
  }
@@ -82,7 +82,7 @@ extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view);
82
82
  *
83
83
  * \since This function is available since SDL 2.0.14.
84
84
  *
85
- * \sa SDL_MetalCreateView
85
+ * \sa SDL_Metal_CreateView
86
86
  */
87
87
  extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
88
88
 
@@ -92,6 +92,7 @@ extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view);
92
92
  *
93
93
  * \param window SDL_Window from which the drawable size should be queried
94
94
  * \param w Pointer to variable for storing the width in pixels, may be NULL
95
+ * \param h Pointer to variable for storing the height in pixels, may be NULL
95
96
  *
96
97
  * \since This function is available since SDL 2.0.14.
97
98
  *