ruby2d 0.12.1 → 1.0.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 (620) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.md +7 -0
  3. data/README.md +141 -0
  4. data/USAGE.md +2435 -0
  5. data/assets/Rakefile +637 -0
  6. data/assets/build_support/CMakeLists.txt +94 -0
  7. data/assets/build_support/mruby/build_config.rb +34 -0
  8. data/assets/build_support/mruby/build_config_wasm.rb +30 -0
  9. data/assets/build_support/sdl_test.c +174 -0
  10. data/assets/deps.yaml +16 -0
  11. data/assets/platform/include/SDL3/SDL.h +91 -0
  12. data/assets/platform/include/SDL3/SDL_assert.h +705 -0
  13. data/assets/platform/include/SDL3/SDL_asyncio.h +550 -0
  14. data/assets/platform/include/SDL3/SDL_atomic.h +692 -0
  15. data/assets/platform/include/SDL3/SDL_audio.h +2370 -0
  16. data/assets/platform/include/SDL3/SDL_begin_code.h +553 -0
  17. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_bits.h +47 -27
  18. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_blendmode.h +59 -55
  19. data/assets/platform/include/SDL3/SDL_camera.h +535 -0
  20. data/assets/platform/include/SDL3/SDL_clipboard.h +331 -0
  21. data/assets/{include/SDL2/close_code.h → platform/include/SDL3/SDL_close_code.h} +9 -8
  22. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_copying.h +3 -1
  23. data/assets/platform/include/SDL3/SDL_cpuinfo.h +374 -0
  24. data/assets/platform/include/SDL3/SDL_dialog.h +343 -0
  25. data/assets/platform/include/SDL3/SDL_dlopennote.h +234 -0
  26. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_egl.h +11 -8
  27. data/assets/platform/include/SDL3/SDL_endian.h +645 -0
  28. data/assets/platform/include/SDL3/SDL_error.h +226 -0
  29. data/assets/platform/include/SDL3/SDL_events.h +1645 -0
  30. data/assets/platform/include/SDL3/SDL_filesystem.h +537 -0
  31. data/assets/platform/include/SDL3/SDL_gamepad.h +1656 -0
  32. data/assets/platform/include/SDL3/SDL_gpu.h +4608 -0
  33. data/assets/platform/include/SDL3/SDL_guid.h +106 -0
  34. data/assets/platform/include/SDL3/SDL_haptic.h +1461 -0
  35. data/assets/platform/include/SDL3/SDL_hidapi.h +571 -0
  36. data/assets/platform/include/SDL3/SDL_hints.h +5001 -0
  37. data/assets/platform/include/SDL3/SDL_init.h +507 -0
  38. data/assets/platform/include/SDL3/SDL_intrin.h +410 -0
  39. data/assets/platform/include/SDL3/SDL_iostream.h +1379 -0
  40. data/assets/platform/include/SDL3/SDL_joystick.h +1385 -0
  41. data/assets/platform/include/SDL3/SDL_keyboard.h +608 -0
  42. data/assets/platform/include/SDL3/SDL_keycode.h +347 -0
  43. data/assets/platform/include/SDL3/SDL_loadso.h +145 -0
  44. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_locale.h +40 -24
  45. data/assets/platform/include/SDL3/SDL_log.h +541 -0
  46. data/assets/platform/include/SDL3/SDL_main.h +704 -0
  47. data/assets/platform/include/SDL3/SDL_main_impl.h +151 -0
  48. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_messagebox.h +85 -48
  49. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_metal.h +29 -29
  50. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_misc.h +13 -12
  51. data/assets/platform/include/SDL3/SDL_mouse.h +813 -0
  52. data/assets/platform/include/SDL3/SDL_mutex.h +1117 -0
  53. data/assets/platform/include/SDL3/SDL_oldnames.h +1339 -0
  54. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl.h +1247 -278
  55. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengl_glext.h +5 -1
  56. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles.h +6 -7
  57. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2.h +10 -11
  58. data/assets/platform/include/SDL3/SDL_pen.h +198 -0
  59. data/assets/platform/include/SDL3/SDL_pixels.h +1441 -0
  60. data/assets/{include/SDL2/SDL_test_log.h → platform/include/SDL3/SDL_platform.h} +25 -26
  61. data/assets/platform/include/SDL3/SDL_platform_defines.h +497 -0
  62. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_power.h +40 -20
  63. data/assets/platform/include/SDL3/SDL_process.h +441 -0
  64. data/assets/platform/include/SDL3/SDL_properties.h +572 -0
  65. data/assets/platform/include/SDL3/SDL_rect.h +528 -0
  66. data/assets/platform/include/SDL3/SDL_render.h +3028 -0
  67. data/assets/platform/include/SDL3/SDL_revision.h +59 -0
  68. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_scancode.h +59 -68
  69. data/assets/platform/include/SDL3/SDL_sensor.h +321 -0
  70. data/assets/platform/include/SDL3/SDL_stdinc.h +6186 -0
  71. data/assets/platform/include/SDL3/SDL_storage.h +686 -0
  72. data/assets/platform/include/SDL3/SDL_surface.h +1769 -0
  73. data/assets/platform/include/SDL3/SDL_system.h +840 -0
  74. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test.h +16 -22
  75. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_assert.h +27 -34
  76. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_common.h +109 -52
  77. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_compare.h +22 -14
  78. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_crc32.h +27 -30
  79. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_font.h +50 -49
  80. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_fuzzer.h +64 -79
  81. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_harness.h +47 -30
  82. data/assets/platform/include/SDL3/SDL_test_log.h +83 -0
  83. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_md5.h +21 -28
  84. data/assets/{include/SDL2 → platform/include/SDL3}/SDL_test_memory.h +19 -16
  85. data/assets/platform/include/SDL3/SDL_thread.h +602 -0
  86. data/assets/platform/include/SDL3/SDL_time.h +249 -0
  87. data/assets/platform/include/SDL3/SDL_timer.h +454 -0
  88. data/assets/platform/include/SDL3/SDL_touch.h +184 -0
  89. data/assets/platform/include/SDL3/SDL_tray.h +544 -0
  90. data/assets/platform/include/SDL3/SDL_version.h +198 -0
  91. data/assets/platform/include/SDL3/SDL_video.h +3497 -0
  92. data/assets/platform/include/SDL3/SDL_vulkan.h +287 -0
  93. data/assets/platform/include/SDL3_image/SDL_image.h +3328 -0
  94. data/assets/platform/include/SDL3_mixer/SDL_mixer.h +3369 -0
  95. data/assets/platform/include/SDL3_ttf/SDL_textengine.h +181 -0
  96. data/assets/platform/include/SDL3_ttf/SDL_ttf.h +2833 -0
  97. data/assets/{include → platform/include}/mrbconf.h +42 -31
  98. data/assets/{include → platform/include}/mruby/array.h +3 -4
  99. data/assets/{include → platform/include}/mruby/boxing_nan.h +10 -0
  100. data/assets/platform/include/mruby/boxing_no.h +59 -0
  101. data/assets/{include → platform/include}/mruby/boxing_word.h +72 -26
  102. data/assets/platform/include/mruby/class.h +157 -0
  103. data/assets/{include → platform/include}/mruby/common.h +30 -1
  104. data/assets/{include → platform/include}/mruby/compile.h +52 -74
  105. data/assets/{include → platform/include}/mruby/data.h +2 -2
  106. data/assets/{include → platform/include}/mruby/debug.h +12 -5
  107. data/assets/{include → platform/include}/mruby/dump.h +7 -9
  108. data/assets/{include → platform/include}/mruby/endian.h +1 -1
  109. data/assets/platform/include/mruby/error.h +173 -0
  110. data/assets/platform/include/mruby/gc.h +79 -0
  111. data/assets/{include → platform/include}/mruby/hash.h +1 -7
  112. data/assets/platform/include/mruby/internal.h +282 -0
  113. data/assets/platform/include/mruby/irep.h +143 -0
  114. data/assets/{include → platform/include}/mruby/istruct.h +1 -1
  115. data/assets/platform/include/mruby/khash.h +455 -0
  116. data/assets/platform/include/mruby/mempool.h +19 -0
  117. data/assets/{include → platform/include}/mruby/numeric.h +7 -10
  118. data/assets/platform/include/mruby/object.h +51 -0
  119. data/assets/{include → platform/include}/mruby/opcode.h +5 -5
  120. data/assets/{include → platform/include}/mruby/ops.h +19 -6
  121. data/assets/platform/include/mruby/presym/id.h +1447 -0
  122. data/assets/{include → platform/include}/mruby/presym/scanning.h +10 -7
  123. data/assets/platform/include/mruby/presym/table.h +2893 -0
  124. data/assets/platform/include/mruby/presym.h +65 -0
  125. data/assets/platform/include/mruby/proc.h +184 -0
  126. data/assets/{include → platform/include}/mruby/range.h +0 -2
  127. data/assets/{include → platform/include}/mruby/string.h +33 -53
  128. data/assets/platform/include/mruby/throw.h +81 -0
  129. data/assets/{include → platform/include}/mruby/value.h +64 -29
  130. data/assets/{include → platform/include}/mruby/variable.h +6 -23
  131. data/assets/{include → platform/include}/mruby/version.h +7 -7
  132. data/assets/{include → platform/include}/mruby.h +238 -116
  133. data/assets/platform/macos-arm64/bin/mrbc +0 -0
  134. data/assets/platform/macos-arm64/lib/libSDL3.a +0 -0
  135. data/assets/platform/macos-arm64/lib/libSDL3_image.a +0 -0
  136. data/assets/platform/macos-arm64/lib/libSDL3_mixer.a +0 -0
  137. data/assets/platform/macos-arm64/lib/libSDL3_ttf.a +0 -0
  138. data/assets/platform/macos-arm64/lib/libmruby.a +0 -0
  139. data/assets/platform/wasm/lib/libFLAC.a +0 -0
  140. data/assets/platform/wasm/lib/libSDL3.a +0 -0
  141. data/assets/platform/wasm/lib/libSDL3_image.a +0 -0
  142. data/assets/platform/wasm/lib/libSDL3_mixer.a +0 -0
  143. data/assets/platform/wasm/lib/libSDL3_ttf.a +0 -0
  144. data/assets/platform/wasm/lib/libfreetype.a +0 -0
  145. data/assets/platform/wasm/lib/libharfbuzz.a +0 -0
  146. data/assets/platform/wasm/lib/libmruby.a +0 -0
  147. data/assets/platform/wasm/lib/libogg.a +0 -0
  148. data/assets/platform/wasm/lib/libplutosvg.a +0 -0
  149. data/assets/platform/wasm/lib/libplutovg.a +0 -0
  150. data/assets/platform/wasm/lib/libpng.a +0 -0
  151. data/assets/platform/wasm/lib/libpng16.a +0 -0
  152. data/assets/platform/wasm/lib/libvorbis.a +0 -0
  153. data/assets/platform/wasm/lib/libvorbisfile.a +0 -0
  154. data/assets/platform/wasm/lib/libzlibstatic.a +0 -0
  155. data/assets/platform/windows-arm64-mingw-ucrt/bin/mrbc.exe +0 -0
  156. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3.a +0 -0
  157. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_image.a +0 -0
  158. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
  159. data/assets/platform/windows-arm64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
  160. data/assets/platform/windows-arm64-mingw-ucrt/lib/libmruby.a +0 -0
  161. data/assets/platform/windows-x86_64-mingw-ucrt/bin/mrbc.exe +0 -0
  162. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3.a +0 -0
  163. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_image.a +0 -0
  164. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_mixer.a +0 -0
  165. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libSDL3_ttf.a +0 -0
  166. data/assets/platform/windows-x86_64-mingw-ucrt/lib/libmruby.a +0 -0
  167. data/assets/resources/fonts/outfit/OFL.txt +93 -0
  168. data/assets/resources/fonts/outfit/outfit.ttf +0 -0
  169. data/assets/resources/fonts/roboto_mono/OFL.txt +91 -0
  170. data/assets/resources/fonts/roboto_mono/roboto_mono.ttf +0 -0
  171. data/assets/resources/icons/icon.icns +0 -0
  172. data/assets/resources/icons/icon.png +0 -0
  173. data/assets/resources/spritesheets/License.txt +28 -0
  174. data/assets/resources/spritesheets/spritesheet-backgrounds.png +0 -0
  175. data/assets/resources/spritesheets/spritesheet-backgrounds.xml +16 -0
  176. data/assets/resources/spritesheets/spritesheet-characters.png +0 -0
  177. data/assets/resources/spritesheets/spritesheet-characters.xml +47 -0
  178. data/assets/resources/spritesheets/spritesheet-enemies.png +0 -0
  179. data/assets/resources/spritesheets/spritesheet-enemies.xml +62 -0
  180. data/assets/resources/spritesheets/spritesheet-tiles.png +0 -0
  181. data/assets/resources/spritesheets/spritesheet-tiles.xml +316 -0
  182. data/assets/{wasm → resources/web}/template.html +1 -1
  183. data/assets/target.rb +131 -0
  184. data/bin/ruby2d +281 -82
  185. data/examples/astar.rb +269 -0
  186. data/examples/asteroids.rb +403 -0
  187. data/examples/bezier_editor.rb +96 -0
  188. data/examples/boids.rb +191 -0
  189. data/examples/bouncing_balls.rb +119 -0
  190. data/examples/breakout.rb +186 -0
  191. data/examples/constellations.rb +100 -0
  192. data/examples/dashboard.rb +133 -0
  193. data/examples/double_pendulum.rb +254 -0
  194. data/examples/falling_sand.rb +291 -0
  195. data/examples/fireworks.rb +110 -0
  196. data/examples/fluid_dynamics.rb +340 -0
  197. data/examples/fourier_epicycles.rb +142 -0
  198. data/examples/fractal_tree.rb +326 -0
  199. data/examples/game_of_life.rb +148 -0
  200. data/examples/gamepads.rb +333 -0
  201. data/examples/hill_driver.rb +613 -0
  202. data/examples/logo_animation.rb +251 -0
  203. data/examples/lorenz_attractor.rb +115 -0
  204. data/examples/mandelbrot.rb +207 -0
  205. data/examples/marching_squares.rb +200 -0
  206. data/examples/maze.rb +323 -0
  207. data/examples/nbody.rb +338 -0
  208. data/examples/outrun.rb +391 -0
  209. data/examples/pixel_paint.rb +313 -0
  210. data/examples/platformer.rb +335 -0
  211. data/examples/ray_casting_maze.rb +175 -0
  212. data/examples/shadow_casting.rb +151 -0
  213. data/examples/shape_recognizer.rb +908 -0
  214. data/examples/snake.rb +144 -0
  215. data/examples/sprite_sheets.rb +246 -0
  216. data/examples/swarm.rb +206 -0
  217. data/examples/tsp_annealing.rb +104 -0
  218. data/examples/ui_controls.rb +163 -0
  219. data/examples/wireframe_3d.rb +139 -0
  220. data/ext/ruby2d/audio.c +324 -0
  221. data/ext/ruby2d/canvas.c +1715 -494
  222. data/ext/ruby2d/ext.c +541 -0
  223. data/ext/ruby2d/extconf.rb +122 -145
  224. data/ext/ruby2d/font.c +566 -20
  225. data/ext/ruby2d/fps.c +92 -0
  226. data/ext/ruby2d/image.c +466 -41
  227. data/ext/ruby2d/ruby2d.c +374 -1890
  228. data/ext/ruby2d/ruby2d.h +840 -460
  229. data/ext/ruby2d/shapes.c +931 -101
  230. data/ext/ruby2d/text.c +586 -21
  231. data/ext/ruby2d/window.c +1693 -283
  232. data/lib/ruby2d/atlas_parser.rb +194 -0
  233. data/lib/ruby2d/audio.rb +73 -0
  234. data/lib/ruby2d/benchmark.rb +259 -0
  235. data/lib/ruby2d/bitmap_text.rb +155 -0
  236. data/lib/ruby2d/button.rb +402 -0
  237. data/lib/ruby2d/canvas.rb +703 -279
  238. data/lib/ruby2d/circle.rb +206 -29
  239. data/lib/ruby2d/cli/browser.rb +314 -0
  240. data/lib/ruby2d/cli/build.rb +471 -257
  241. data/lib/ruby2d/cli/colorize.rb +7 -5
  242. data/lib/ruby2d/cli/examples.rb +127 -0
  243. data/lib/ruby2d/cli/launch.rb +24 -39
  244. data/lib/ruby2d/cli/lib_files.rb +48 -0
  245. data/lib/ruby2d/cli/messages.rb +40 -0
  246. data/lib/ruby2d/cli/setup.rb +273 -0
  247. data/lib/ruby2d/cli/static_server.rb +160 -0
  248. data/lib/ruby2d/cli/usage.rb +255 -0
  249. data/lib/ruby2d/color.rb +191 -69
  250. data/lib/ruby2d/core.rb +37 -19
  251. data/lib/ruby2d/deps_help.rb +89 -0
  252. data/lib/ruby2d/dsl.rb +51 -12
  253. data/lib/ruby2d/ellipse.rb +228 -0
  254. data/lib/ruby2d/exceptions.rb +0 -2
  255. data/lib/ruby2d/font.rb +34 -74
  256. data/lib/ruby2d/gamepad.rb +323 -0
  257. data/lib/ruby2d/gem_paths.rb +19 -0
  258. data/lib/ruby2d/image.rb +155 -52
  259. data/lib/ruby2d/interactive.rb +103 -0
  260. data/lib/ruby2d/json_parser.rb +268 -0
  261. data/lib/ruby2d/line.rb +194 -85
  262. data/lib/ruby2d/mruby_compat.rb +12 -0
  263. data/lib/ruby2d/polygon.rb +297 -0
  264. data/lib/ruby2d/polyline.rb +368 -0
  265. data/lib/ruby2d/quad.rb +358 -94
  266. data/lib/ruby2d/rectangle.rb +77 -19
  267. data/lib/ruby2d/renderable.rb +411 -11
  268. data/lib/ruby2d/sprite.rb +471 -180
  269. data/lib/ruby2d/sprite_sheet.rb +64 -0
  270. data/lib/ruby2d/square.rb +29 -17
  271. data/lib/ruby2d/text.rb +196 -65
  272. data/lib/ruby2d/tileset.rb +139 -81
  273. data/lib/ruby2d/triangle.rb +324 -89
  274. data/lib/ruby2d/version.rb +1 -3
  275. data/lib/ruby2d/vertices.rb +62 -85
  276. data/lib/ruby2d/warnings.rb +29 -0
  277. data/lib/ruby2d/window/class_methods.rb +218 -0
  278. data/lib/ruby2d/window/gamepad_events.rb +141 -0
  279. data/lib/ruby2d/window/key_events.rb +74 -0
  280. data/lib/ruby2d/window/mouse_events.rb +171 -0
  281. data/lib/ruby2d/window/object_events.rb +168 -0
  282. data/lib/ruby2d/window.rb +632 -585
  283. data/lib/ruby2d.rb +14 -19
  284. metadata +275 -443
  285. data/assets/app.icns +0 -0
  286. data/assets/include/GL/glew.h +0 -26427
  287. data/assets/include/GLES2/gl2.h +0 -656
  288. data/assets/include/GLES2/gl2ext.h +0 -3949
  289. data/assets/include/GLES2/gl2ext_angle.h +0 -701
  290. data/assets/include/GLES2/gl2platform.h +0 -27
  291. data/assets/include/GLES3/gl3.h +0 -1192
  292. data/assets/include/GLES3/gl31.h +0 -1507
  293. data/assets/include/GLES3/gl32.h +0 -1808
  294. data/assets/include/GLES3/gl3platform.h +0 -27
  295. data/assets/include/KHR/khrplatform.h +0 -290
  296. data/assets/include/SDL2/SDL.h +0 -233
  297. data/assets/include/SDL2/SDL_assert.h +0 -326
  298. data/assets/include/SDL2/SDL_atomic.h +0 -415
  299. data/assets/include/SDL2/SDL_audio.h +0 -1500
  300. data/assets/include/SDL2/SDL_clipboard.h +0 -141
  301. data/assets/include/SDL2/SDL_config.h +0 -61
  302. data/assets/include/SDL2/SDL_config_android.h +0 -194
  303. data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
  304. data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
  305. data/assets/include/SDL2/SDL_config_macosx.h +0 -277
  306. data/assets/include/SDL2/SDL_config_minimal.h +0 -95
  307. data/assets/include/SDL2/SDL_config_ngage.h +0 -89
  308. data/assets/include/SDL2/SDL_config_os2.h +0 -207
  309. data/assets/include/SDL2/SDL_config_pandora.h +0 -141
  310. data/assets/include/SDL2/SDL_config_windows.h +0 -331
  311. data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
  312. data/assets/include/SDL2/SDL_config_winrt.h +0 -220
  313. data/assets/include/SDL2/SDL_config_xbox.h +0 -235
  314. data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
  315. data/assets/include/SDL2/SDL_endian.h +0 -348
  316. data/assets/include/SDL2/SDL_error.h +0 -163
  317. data/assets/include/SDL2/SDL_events.h +0 -1166
  318. data/assets/include/SDL2/SDL_filesystem.h +0 -149
  319. data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
  320. data/assets/include/SDL2/SDL_gesture.h +0 -117
  321. data/assets/include/SDL2/SDL_guid.h +0 -100
  322. data/assets/include/SDL2/SDL_haptic.h +0 -1341
  323. data/assets/include/SDL2/SDL_hidapi.h +0 -451
  324. data/assets/include/SDL2/SDL_hints.h +0 -2569
  325. data/assets/include/SDL2/SDL_image.h +0 -2173
  326. data/assets/include/SDL2/SDL_joystick.h +0 -1066
  327. data/assets/include/SDL2/SDL_keyboard.h +0 -353
  328. data/assets/include/SDL2/SDL_keycode.h +0 -358
  329. data/assets/include/SDL2/SDL_loadso.h +0 -115
  330. data/assets/include/SDL2/SDL_log.h +0 -404
  331. data/assets/include/SDL2/SDL_main.h +0 -275
  332. data/assets/include/SDL2/SDL_mixer.h +0 -2784
  333. data/assets/include/SDL2/SDL_mouse.h +0 -465
  334. data/assets/include/SDL2/SDL_mutex.h +0 -471
  335. data/assets/include/SDL2/SDL_name.h +0 -33
  336. data/assets/include/SDL2/SDL_pixels.h +0 -644
  337. data/assets/include/SDL2/SDL_platform.h +0 -261
  338. data/assets/include/SDL2/SDL_quit.h +0 -58
  339. data/assets/include/SDL2/SDL_rect.h +0 -376
  340. data/assets/include/SDL2/SDL_render.h +0 -1919
  341. data/assets/include/SDL2/SDL_revision.h +0 -6
  342. data/assets/include/SDL2/SDL_rwops.h +0 -841
  343. data/assets/include/SDL2/SDL_sensor.h +0 -322
  344. data/assets/include/SDL2/SDL_shape.h +0 -155
  345. data/assets/include/SDL2/SDL_stdinc.h +0 -830
  346. data/assets/include/SDL2/SDL_surface.h +0 -997
  347. data/assets/include/SDL2/SDL_system.h +0 -623
  348. data/assets/include/SDL2/SDL_syswm.h +0 -386
  349. data/assets/include/SDL2/SDL_test_images.h +0 -78
  350. data/assets/include/SDL2/SDL_test_random.h +0 -115
  351. data/assets/include/SDL2/SDL_thread.h +0 -464
  352. data/assets/include/SDL2/SDL_timer.h +0 -222
  353. data/assets/include/SDL2/SDL_touch.h +0 -150
  354. data/assets/include/SDL2/SDL_ttf.h +0 -2316
  355. data/assets/include/SDL2/SDL_types.h +0 -29
  356. data/assets/include/SDL2/SDL_version.h +0 -204
  357. data/assets/include/SDL2/SDL_video.h +0 -2150
  358. data/assets/include/SDL2/SDL_vulkan.h +0 -215
  359. data/assets/include/SDL2/begin_code.h +0 -187
  360. data/assets/include/mruby/boxing_no.h +0 -58
  361. data/assets/include/mruby/class.h +0 -108
  362. data/assets/include/mruby/error.h +0 -147
  363. data/assets/include/mruby/gc.h +0 -94
  364. data/assets/include/mruby/irep.h +0 -147
  365. data/assets/include/mruby/khash.h +0 -284
  366. data/assets/include/mruby/object.h +0 -43
  367. data/assets/include/mruby/presym/disable.h +0 -70
  368. data/assets/include/mruby/presym/enable.h +0 -37
  369. data/assets/include/mruby/presym.h +0 -40
  370. data/assets/include/mruby/proc.h +0 -211
  371. data/assets/include/mruby/throw.h +0 -66
  372. data/assets/macos/universal/bin/mrbc +0 -0
  373. data/assets/macos/universal/lib/libFLAC.a +0 -0
  374. data/assets/macos/universal/lib/libSDL2.a +0 -0
  375. data/assets/macos/universal/lib/libSDL2_image.a +0 -0
  376. data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
  377. data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
  378. data/assets/macos/universal/lib/libavif.a +0 -0
  379. data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
  380. data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
  381. data/assets/macos/universal/lib/libfreetype.a +0 -0
  382. data/assets/macos/universal/lib/libgraphite2.a +0 -0
  383. data/assets/macos/universal/lib/libharfbuzz.a +0 -0
  384. data/assets/macos/universal/lib/libhwy.a +0 -0
  385. data/assets/macos/universal/lib/libjpeg.a +0 -0
  386. data/assets/macos/universal/lib/libjxl.a +0 -0
  387. data/assets/macos/universal/lib/libmodplug.a +0 -0
  388. data/assets/macos/universal/lib/libmpg123.a +0 -0
  389. data/assets/macos/universal/lib/libmruby.a +0 -0
  390. data/assets/macos/universal/lib/libogg.a +0 -0
  391. data/assets/macos/universal/lib/libpng.a +0 -0
  392. data/assets/macos/universal/lib/libtiff.a +0 -0
  393. data/assets/macos/universal/lib/libvorbis.a +0 -0
  394. data/assets/macos/universal/lib/libvorbisfile.a +0 -0
  395. data/assets/macos/universal/lib/libwebp.a +0 -0
  396. data/assets/macos/universal/lib/libzstd.a +0 -0
  397. data/assets/test_media/README.md +0 -3
  398. data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
  399. data/assets/test_media/bitstream_vera/vera.ttf +0 -0
  400. data/assets/test_media/boom.png +0 -0
  401. data/assets/test_media/coin.png +0 -0
  402. data/assets/test_media/colors.png +0 -0
  403. data/assets/test_media/controller.png +0 -0
  404. data/assets/test_media/dial.wav +0 -0
  405. data/assets/test_media/hero.png +0 -0
  406. data/assets/test_media/image.bmp +0 -0
  407. data/assets/test_media/image.jpg +0 -0
  408. data/assets/test_media/image.png +0 -0
  409. data/assets/test_media/music.flac +0 -0
  410. data/assets/test_media/music.mp3 +0 -0
  411. data/assets/test_media/music.ogg +0 -0
  412. data/assets/test_media/music.wav +0 -0
  413. data/assets/test_media/originals/boom.pxm +0 -0
  414. data/assets/test_media/originals/coin.pxm +0 -0
  415. data/assets/test_media/originals/controller.sketch +0 -0
  416. data/assets/test_media/originals/hero.pxm +0 -0
  417. data/assets/test_media/originals/image.pxm +0 -0
  418. data/assets/test_media/originals/music.caf +0 -0
  419. data/assets/test_media/originals/texture_atlas.pxm +0 -0
  420. data/assets/test_media/rondo_alla_turka.ogg +0 -0
  421. data/assets/test_media/sound.flac +0 -0
  422. data/assets/test_media/sound.mp3 +0 -0
  423. data/assets/test_media/sound.ogg +0 -0
  424. data/assets/test_media/sound.wav +0 -0
  425. data/assets/test_media/sprite_sheet.png +0 -0
  426. data/assets/test_media/texture_atlas.png +0 -0
  427. data/assets/wasm/libmruby.a +0 -0
  428. data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
  429. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
  430. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
  431. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
  432. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
  433. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
  434. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
  435. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
  436. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
  437. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
  438. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
  439. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
  440. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
  441. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
  442. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
  443. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
  444. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
  445. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
  446. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
  447. data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
  448. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
  449. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
  450. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
  451. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
  452. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
  453. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
  454. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
  455. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
  456. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
  457. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
  458. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
  459. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
  460. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
  461. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
  462. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
  463. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
  464. data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
  465. data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
  466. data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
  467. data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
  468. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
  469. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
  470. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
  471. data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
  472. data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
  473. data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
  474. data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
  475. data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
  476. data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
  477. data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
  478. data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
  479. data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
  480. data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
  481. data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
  482. data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
  483. data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
  484. data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
  485. data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
  486. data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
  487. data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
  488. data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
  489. data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
  490. data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
  491. data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
  492. data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
  493. data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
  494. data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
  495. data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
  496. data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
  497. data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
  498. data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
  499. data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
  500. data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  501. data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
  502. data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
  503. data/assets/xcode/ios/Info.plist +0 -43
  504. data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
  505. data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
  506. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  507. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  508. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  509. data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
  510. data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
  511. data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
  512. data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
  513. data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
  514. data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
  515. data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
  516. data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
  517. data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
  518. data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
  519. data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
  520. data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
  521. data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
  522. data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
  523. data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
  524. data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
  525. data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
  526. data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
  527. data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
  528. data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
  529. data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
  530. data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
  531. data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
  532. data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
  533. data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
  534. data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
  535. data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
  536. data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
  537. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  538. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  539. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  540. data/assets/xcode/ios/main.c +0 -1
  541. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  542. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
  543. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
  544. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  545. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
  546. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  547. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  548. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  549. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
  550. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
  551. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  552. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
  553. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  554. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  555. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
  556. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
  557. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
  558. data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
  559. data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
  560. data/assets/xcode/tvos/Info.plist +0 -30
  561. data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
  562. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
  563. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  564. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  565. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  566. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
  567. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
  568. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
  569. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
  570. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
  571. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
  572. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
  573. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
  574. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
  575. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
  576. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
  577. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
  578. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
  579. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
  580. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
  581. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
  582. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
  583. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
  584. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
  585. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
  586. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
  587. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
  588. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
  589. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
  590. data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
  591. data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
  592. data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
  593. data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
  594. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  595. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  596. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  597. data/assets/xcode/tvos/main.c +0 -1
  598. data/ext/ruby2d/common.c +0 -185
  599. data/ext/ruby2d/controllers.c +0 -110
  600. data/ext/ruby2d/gl.c +0 -398
  601. data/ext/ruby2d/gl2.c +0 -86
  602. data/ext/ruby2d/gl3.c +0 -304
  603. data/ext/ruby2d/gles.c +0 -302
  604. data/ext/ruby2d/input.c +0 -48
  605. data/ext/ruby2d/music.c +0 -127
  606. data/ext/ruby2d/sound.c +0 -132
  607. data/lib/ruby2d/cli/console.rb +0 -65
  608. data/lib/ruby2d/cli/enable_console.rb +0 -7
  609. data/lib/ruby2d/cli/platform.rb +0 -17
  610. data/lib/ruby2d/music.rb +0 -77
  611. data/lib/ruby2d/pixel.rb +0 -18
  612. data/lib/ruby2d/pixmap.rb +0 -39
  613. data/lib/ruby2d/pixmap_atlas.rb +0 -56
  614. data/lib/ruby2d/sound.rb +0 -61
  615. data/lib/ruby2d/texture.rb +0 -38
  616. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
  617. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
  618. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
  619. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
  620. /data/assets/{include → platform/include}/mruby/re.h +0 -0
data/ext/ruby2d/ext.c ADDED
@@ -0,0 +1,541 @@
1
+ // ext.c
2
+ //
3
+ // Ruby2D::Ext — Ruby-callable bindings exposing libruby2d C primitives.
4
+ // Per-shape Ruby code calls these directly instead of having C functions
5
+ // reach into Ruby objects via r_ivar_get. Keeps SDL3-touching code in C
6
+ // and per-frame logic in Ruby.
7
+ //
8
+ // Fixed-arity shapes (Triangle, Quad, Line, Circle, Ellipse) use positional
9
+ // float args. Variadic shapes (Polygon, Polyline) take Ruby arrays for
10
+ // vertex and color buffers since the count is not known at bind time.
11
+
12
+ #include "ruby2d.h"
13
+
14
+
15
+ // File-scope storage for the Ext module so subsystem .c files (audio, image,
16
+ // text, etc.) can register their own Ext bindings on it without re-creating it.
17
+ R_CLASS ruby2d_ext_module;
18
+
19
+ // Shared ivar ID cache. Subsystem .c files use these instead of caching their
20
+ // own per-file copies — same Ruby ivar name, same R_ID across subsystems. The
21
+ // IDs are interned during R2D_Ext_Init (which runs first), so they're ready
22
+ // when subsequent subsystem inits execute.
23
+ R_ID id_x, id_y, id_width, id_height, id_rotate;
24
+ R_ID id_color, id_r, id_g, id_b, id_a;
25
+ R_ID id_ext_image, id_ext_text;
26
+ R_ID id_path, id_content;
27
+ R_ID id_viewport_width, id_viewport_height;
28
+
29
+
30
+ // Fixed-arity shape bindings //////////////////////////////////////////////////
31
+
32
+
33
+ /*
34
+ * Ruby2D::Ext.draw_triangle(
35
+ * x1, y1, r1, g1, b1, a1,
36
+ * x2, y2, r2, g2, b2, a2,
37
+ * x3, y3, r3, g3, b3, a3
38
+ * )
39
+ */
40
+ R_VAL ruby2d_ext_draw_triangle(RUBY2D_METHOD_ARGS_VARIADIC) {
41
+ RUBY2D_EXTRACT_VARIADIC;
42
+ if (argc != 18) r_raise("Ruby2D::Ext.draw_triangle expects 18 args, got %d", (int)argc);
43
+
44
+ R2D_DrawTriangle(
45
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
46
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]), NUM2DBL(argv[4]), NUM2DBL(argv[5]),
47
+
48
+ NUM2DBL(argv[6]), NUM2DBL(argv[7]),
49
+ NUM2DBL(argv[8]), NUM2DBL(argv[9]), NUM2DBL(argv[10]), NUM2DBL(argv[11]),
50
+
51
+ NUM2DBL(argv[12]), NUM2DBL(argv[13]),
52
+ NUM2DBL(argv[14]), NUM2DBL(argv[15]), NUM2DBL(argv[16]), NUM2DBL(argv[17])
53
+ );
54
+
55
+ return R_NIL;
56
+ }
57
+
58
+
59
+ /*
60
+ * Ruby2D::Ext.draw_triangle_uniform(x1, y1, x2, y2, x3, y3, r, g, b, a)
61
+ *
62
+ * Solid (single-color) triangle: one rgba is replicated to all three vertices,
63
+ * so a uniform Triangle passes 10 args instead of 18 and skips the per-vertex
64
+ * color marshaling. Geometry is identical to draw_triangle with equal colors.
65
+ */
66
+ R_VAL ruby2d_ext_draw_triangle_uniform(RUBY2D_METHOD_ARGS_VARIADIC) {
67
+ RUBY2D_EXTRACT_VARIADIC;
68
+ if (argc != 10) r_raise("Ruby2D::Ext.draw_triangle_uniform expects 10 args, got %d", (int)argc);
69
+
70
+ float r = NUM2DBL(argv[6]);
71
+ float g = NUM2DBL(argv[7]);
72
+ float b = NUM2DBL(argv[8]);
73
+ float a = NUM2DBL(argv[9]);
74
+
75
+ R2D_DrawTriangle(
76
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]), r, g, b, a,
77
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]), r, g, b, a,
78
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]), r, g, b, a
79
+ );
80
+
81
+ return R_NIL;
82
+ }
83
+
84
+
85
+ /*
86
+ * Ruby2D::Ext.stroke_triangle(
87
+ * x1, y1, x2, y2, x3, y3,
88
+ * stroke_width,
89
+ * r1, g1, b1, a1,
90
+ * r2, g2, b2, a2,
91
+ * r3, g3, b3, a3
92
+ * )
93
+ */
94
+ R_VAL ruby2d_ext_stroke_triangle(RUBY2D_METHOD_ARGS_VARIADIC) {
95
+ RUBY2D_EXTRACT_VARIADIC;
96
+ if (argc != 19) r_raise("Ruby2D::Ext.stroke_triangle expects 19 args, got %d", (int)argc);
97
+
98
+ float pts[6] = {
99
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
100
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
101
+ NUM2DBL(argv[4]), NUM2DBL(argv[5])
102
+ };
103
+ float sw = NUM2DBL(argv[6]);
104
+ float colors[12] = {
105
+ NUM2DBL(argv[7]), NUM2DBL(argv[8]), NUM2DBL(argv[9]), NUM2DBL(argv[10]),
106
+ NUM2DBL(argv[11]), NUM2DBL(argv[12]), NUM2DBL(argv[13]), NUM2DBL(argv[14]),
107
+ NUM2DBL(argv[15]), NUM2DBL(argv[16]), NUM2DBL(argv[17]), NUM2DBL(argv[18])
108
+ };
109
+
110
+ R2D_StrokePath(pts, 3, 1, sw, R2D_MITER_LIMIT, colors);
111
+
112
+ return R_NIL;
113
+ }
114
+
115
+
116
+ /*
117
+ * Ruby2D::Ext.stroke_triangle_uniform(x1, y1, x2, y2, x3, y3, sw, r, g, b, a)
118
+ *
119
+ * Solid (single-color) triangle outline: one rgba replicated to all three
120
+ * vertices, so a uniform stroke passes 11 args instead of 19.
121
+ */
122
+ R_VAL ruby2d_ext_stroke_triangle_uniform(RUBY2D_METHOD_ARGS_VARIADIC) {
123
+ RUBY2D_EXTRACT_VARIADIC;
124
+ if (argc != 11) r_raise("Ruby2D::Ext.stroke_triangle_uniform expects 11 args, got %d", (int)argc);
125
+
126
+ float pts[6] = {
127
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
128
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
129
+ NUM2DBL(argv[4]), NUM2DBL(argv[5])
130
+ };
131
+ float sw = NUM2DBL(argv[6]);
132
+ float r = NUM2DBL(argv[7]), g = NUM2DBL(argv[8]), b = NUM2DBL(argv[9]), a = NUM2DBL(argv[10]);
133
+ float colors[12] = { r,g,b,a, r,g,b,a, r,g,b,a };
134
+
135
+ R2D_StrokePath(pts, 3, 1, sw, R2D_MITER_LIMIT, colors);
136
+
137
+ return R_NIL;
138
+ }
139
+
140
+
141
+ /*
142
+ * Ruby2D::Ext.draw_quad(
143
+ * x1, y1, r1, g1, b1, a1,
144
+ * x2, y2, r2, g2, b2, a2,
145
+ * x3, y3, r3, g3, b3, a3,
146
+ * x4, y4, r4, g4, b4, a4
147
+ * )
148
+ */
149
+ R_VAL ruby2d_ext_draw_quad(RUBY2D_METHOD_ARGS_VARIADIC) {
150
+ RUBY2D_EXTRACT_VARIADIC;
151
+ if (argc != 24) r_raise("Ruby2D::Ext.draw_quad expects 24 args, got %d", (int)argc);
152
+
153
+ R2D_DrawQuad(
154
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
155
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]), NUM2DBL(argv[4]), NUM2DBL(argv[5]),
156
+
157
+ NUM2DBL(argv[6]), NUM2DBL(argv[7]),
158
+ NUM2DBL(argv[8]), NUM2DBL(argv[9]), NUM2DBL(argv[10]), NUM2DBL(argv[11]),
159
+
160
+ NUM2DBL(argv[12]), NUM2DBL(argv[13]),
161
+ NUM2DBL(argv[14]), NUM2DBL(argv[15]), NUM2DBL(argv[16]), NUM2DBL(argv[17]),
162
+
163
+ NUM2DBL(argv[18]), NUM2DBL(argv[19]),
164
+ NUM2DBL(argv[20]), NUM2DBL(argv[21]), NUM2DBL(argv[22]), NUM2DBL(argv[23])
165
+ );
166
+
167
+ return R_NIL;
168
+ }
169
+
170
+
171
+ /*
172
+ * Ruby2D::Ext.draw_quad_uniform(x1, y1, x2, y2, x3, y3, x4, y4, r, g, b, a)
173
+ *
174
+ * Solid (single-color) quad: one rgba is replicated to all four vertices, so a
175
+ * uniform Quad/Rectangle/Square passes 12 args instead of 24 and skips the
176
+ * per-vertex color marshaling. Geometry is identical to draw_quad with equal
177
+ * colors — the common case for solid rectangles.
178
+ */
179
+ R_VAL ruby2d_ext_draw_quad_uniform(RUBY2D_METHOD_ARGS_VARIADIC) {
180
+ RUBY2D_EXTRACT_VARIADIC;
181
+ if (argc != 12) r_raise("Ruby2D::Ext.draw_quad_uniform expects 12 args, got %d", (int)argc);
182
+
183
+ float r = NUM2DBL(argv[8]);
184
+ float g = NUM2DBL(argv[9]);
185
+ float b = NUM2DBL(argv[10]);
186
+ float a = NUM2DBL(argv[11]);
187
+
188
+ R2D_DrawQuad(
189
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]), r, g, b, a,
190
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]), r, g, b, a,
191
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]), r, g, b, a,
192
+ NUM2DBL(argv[6]), NUM2DBL(argv[7]), r, g, b, a
193
+ );
194
+
195
+ return R_NIL;
196
+ }
197
+
198
+
199
+ /*
200
+ * Ruby2D::Ext.stroke_quad(
201
+ * x1, y1, x2, y2, x3, y3, x4, y4,
202
+ * stroke_width,
203
+ * r1, g1, b1, a1,
204
+ * r2, g2, b2, a2,
205
+ * r3, g3, b3, a3,
206
+ * r4, g4, b4, a4
207
+ * )
208
+ */
209
+ R_VAL ruby2d_ext_stroke_quad(RUBY2D_METHOD_ARGS_VARIADIC) {
210
+ RUBY2D_EXTRACT_VARIADIC;
211
+ if (argc != 25) r_raise("Ruby2D::Ext.stroke_quad expects 25 args, got %d", (int)argc);
212
+
213
+ float pts[8] = {
214
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
215
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
216
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]),
217
+ NUM2DBL(argv[6]), NUM2DBL(argv[7])
218
+ };
219
+ float sw = NUM2DBL(argv[8]);
220
+ float colors[16] = {
221
+ NUM2DBL(argv[9]), NUM2DBL(argv[10]), NUM2DBL(argv[11]), NUM2DBL(argv[12]),
222
+ NUM2DBL(argv[13]), NUM2DBL(argv[14]), NUM2DBL(argv[15]), NUM2DBL(argv[16]),
223
+ NUM2DBL(argv[17]), NUM2DBL(argv[18]), NUM2DBL(argv[19]), NUM2DBL(argv[20]),
224
+ NUM2DBL(argv[21]), NUM2DBL(argv[22]), NUM2DBL(argv[23]), NUM2DBL(argv[24])
225
+ };
226
+
227
+ R2D_StrokePath(pts, 4, 1, sw, R2D_MITER_LIMIT, colors);
228
+
229
+ return R_NIL;
230
+ }
231
+
232
+
233
+ /*
234
+ * Ruby2D::Ext.stroke_quad_uniform(x1, y1, x2, y2, x3, y3, x4, y4, sw, r, g, b, a)
235
+ *
236
+ * Solid (single-color) quad outline: one rgba is replicated to all four
237
+ * vertices, so a uniform stroke passes 13 args instead of 25. Identical stroke
238
+ * geometry to stroke_quad with equal colors.
239
+ */
240
+ R_VAL ruby2d_ext_stroke_quad_uniform(RUBY2D_METHOD_ARGS_VARIADIC) {
241
+ RUBY2D_EXTRACT_VARIADIC;
242
+ if (argc != 13) r_raise("Ruby2D::Ext.stroke_quad_uniform expects 13 args, got %d", (int)argc);
243
+
244
+ float pts[8] = {
245
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
246
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
247
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]),
248
+ NUM2DBL(argv[6]), NUM2DBL(argv[7])
249
+ };
250
+ float sw = NUM2DBL(argv[8]);
251
+ float r = NUM2DBL(argv[9]), g = NUM2DBL(argv[10]), b = NUM2DBL(argv[11]), a = NUM2DBL(argv[12]);
252
+ float colors[16] = { r,g,b,a, r,g,b,a, r,g,b,a, r,g,b,a };
253
+
254
+ R2D_StrokePath(pts, 4, 1, sw, R2D_MITER_LIMIT, colors);
255
+
256
+ return R_NIL;
257
+ }
258
+
259
+
260
+ /*
261
+ * Ruby2D::Ext.draw_line(
262
+ * x1, y1, x2, y2,
263
+ * stroke_width,
264
+ * r1, g1, b1, a1, -- start + perp
265
+ * r2, g2, b2, a2, -- start - perp
266
+ * r3, g3, b3, a3, -- end - perp
267
+ * r4, g4, b4, a4 -- end + perp
268
+ * )
269
+ */
270
+ R_VAL ruby2d_ext_draw_line(RUBY2D_METHOD_ARGS_VARIADIC) {
271
+ RUBY2D_EXTRACT_VARIADIC;
272
+ if (argc != 21) r_raise("Ruby2D::Ext.draw_line expects 21 args, got %d", (int)argc);
273
+
274
+ R2D_DrawLine(
275
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
276
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
277
+ NUM2DBL(argv[4]),
278
+
279
+ NUM2DBL(argv[5]), NUM2DBL(argv[6]), NUM2DBL(argv[7]), NUM2DBL(argv[8]),
280
+ NUM2DBL(argv[9]), NUM2DBL(argv[10]), NUM2DBL(argv[11]), NUM2DBL(argv[12]),
281
+ NUM2DBL(argv[13]), NUM2DBL(argv[14]), NUM2DBL(argv[15]), NUM2DBL(argv[16]),
282
+ NUM2DBL(argv[17]), NUM2DBL(argv[18]), NUM2DBL(argv[19]), NUM2DBL(argv[20])
283
+ );
284
+
285
+ return R_NIL;
286
+ }
287
+
288
+
289
+ /*
290
+ * Ruby2D::Ext.draw_dashed_line(
291
+ * x1, y1, x2, y2,
292
+ * stroke_width, dash, gap,
293
+ * r1, g1, b1, a1,
294
+ * r2, g2, b2, a2,
295
+ * r3, g3, b3, a3,
296
+ * r4, g4, b4, a4
297
+ * )
298
+ */
299
+ R_VAL ruby2d_ext_draw_dashed_line(RUBY2D_METHOD_ARGS_VARIADIC) {
300
+ RUBY2D_EXTRACT_VARIADIC;
301
+ if (argc != 23) r_raise("Ruby2D::Ext.draw_dashed_line expects 23 args, got %d", (int)argc);
302
+
303
+ R2D_DrawDashedLine(
304
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
305
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
306
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]), NUM2DBL(argv[6]),
307
+
308
+ NUM2DBL(argv[7]), NUM2DBL(argv[8]), NUM2DBL(argv[9]), NUM2DBL(argv[10]),
309
+ NUM2DBL(argv[11]), NUM2DBL(argv[12]), NUM2DBL(argv[13]), NUM2DBL(argv[14]),
310
+ NUM2DBL(argv[15]), NUM2DBL(argv[16]), NUM2DBL(argv[17]), NUM2DBL(argv[18]),
311
+ NUM2DBL(argv[19]), NUM2DBL(argv[20]), NUM2DBL(argv[21]), NUM2DBL(argv[22])
312
+ );
313
+
314
+ return R_NIL;
315
+ }
316
+
317
+
318
+ /*
319
+ * Ruby2D::Ext.draw_circle(x, y, radius, sectors, r, g, b, a)
320
+ */
321
+ R_VAL ruby2d_ext_draw_circle(RUBY2D_METHOD_ARGS_VARIADIC) {
322
+ RUBY2D_EXTRACT_VARIADIC;
323
+ if (argc != 8) r_raise("Ruby2D::Ext.draw_circle expects 8 args, got %d", (int)argc);
324
+
325
+ R2D_DrawCircle(
326
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
327
+ NUM2DBL(argv[2]), NUM2INT(argv[3]),
328
+ NUM2DBL(argv[4]), NUM2DBL(argv[5]), NUM2DBL(argv[6]), NUM2DBL(argv[7])
329
+ );
330
+
331
+ return R_NIL;
332
+ }
333
+
334
+
335
+ /*
336
+ * Ruby2D::Ext.stroke_circle(x, y, radius, sectors, stroke_width, r, g, b, a)
337
+ */
338
+ R_VAL ruby2d_ext_stroke_circle(RUBY2D_METHOD_ARGS_VARIADIC) {
339
+ RUBY2D_EXTRACT_VARIADIC;
340
+ if (argc != 9) r_raise("Ruby2D::Ext.stroke_circle expects 9 args, got %d", (int)argc);
341
+
342
+ float x = NUM2DBL(argv[0]);
343
+ float y = NUM2DBL(argv[1]);
344
+ float r = NUM2DBL(argv[2]);
345
+ int sectors = NUM2INT(argv[3]);
346
+ float sw = NUM2DBL(argv[4]);
347
+
348
+ R2D_StrokeEllipse(x, y, r, r, 0.0f, sectors, sw,
349
+ NUM2DBL(argv[5]), NUM2DBL(argv[6]), NUM2DBL(argv[7]), NUM2DBL(argv[8]));
350
+
351
+ return R_NIL;
352
+ }
353
+
354
+
355
+ /*
356
+ * Ruby2D::Ext.draw_ellipse(x, y, xradius, yradius, angle, sectors, r, g, b, a)
357
+ */
358
+ R_VAL ruby2d_ext_draw_ellipse(RUBY2D_METHOD_ARGS_VARIADIC) {
359
+ RUBY2D_EXTRACT_VARIADIC;
360
+ if (argc != 10) r_raise("Ruby2D::Ext.draw_ellipse expects 10 args, got %d", (int)argc);
361
+
362
+ R2D_DrawEllipse(
363
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
364
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
365
+ NUM2DBL(argv[4]), NUM2INT(argv[5]),
366
+ NUM2DBL(argv[6]), NUM2DBL(argv[7]), NUM2DBL(argv[8]), NUM2DBL(argv[9])
367
+ );
368
+
369
+ return R_NIL;
370
+ }
371
+
372
+
373
+ /*
374
+ * Ruby2D::Ext.stroke_ellipse(x, y, xradius, yradius, angle, sectors, stroke_width, r, g, b, a)
375
+ */
376
+ R_VAL ruby2d_ext_stroke_ellipse(RUBY2D_METHOD_ARGS_VARIADIC) {
377
+ RUBY2D_EXTRACT_VARIADIC;
378
+ if (argc != 11) r_raise("Ruby2D::Ext.stroke_ellipse expects 11 args, got %d", (int)argc);
379
+
380
+ R2D_StrokeEllipse(
381
+ NUM2DBL(argv[0]), NUM2DBL(argv[1]),
382
+ NUM2DBL(argv[2]), NUM2DBL(argv[3]),
383
+ NUM2DBL(argv[4]), NUM2INT(argv[5]), NUM2DBL(argv[6]),
384
+ NUM2DBL(argv[7]), NUM2DBL(argv[8]), NUM2DBL(argv[9]), NUM2DBL(argv[10])
385
+ );
386
+
387
+ return R_NIL;
388
+ }
389
+
390
+
391
+ // Variadic shape bindings (Polygon, Polyline) /////////////////////////////////
392
+
393
+
394
+ /*
395
+ * Ruby2D::Ext.draw_polygon(verts, pv_colors)
396
+ *
397
+ * verts — flat Array [x1, y1, x2, y2, ...] of length 2n
398
+ * pv_colors — flat Array [r1, g1, b1, a1, r2, ...] of length 4n
399
+ *
400
+ * Vertex count is inferred from verts.length / 2. n must be >= 3.
401
+ */
402
+ R_VAL ruby2d_ext_draw_polygon(RUBY2D_METHOD_ARGS_VARIADIC) {
403
+ RUBY2D_EXTRACT_VARIADIC;
404
+ if (argc != 2) r_raise("Ruby2D::Ext.draw_polygon expects 2 args, got %d", (int)argc);
405
+
406
+ R_VAL verts_ary = argv[0];
407
+ R_VAL colors_ary = argv[1];
408
+
409
+ int n = (int)(r_ary_len(verts_ary) / 2);
410
+ if (n < 3) return R_NIL;
411
+
412
+ // Guard the colors array length before the read loop: a short array would
413
+ // make r_ary_entry return nil and NUM2DBL(nil) error (hard-abort on mruby).
414
+ if ((int)r_ary_len(colors_ary) < n * 4)
415
+ r_raise("Ruby2D::Ext.draw_polygon: %d color values for %d vertices (need %d)",
416
+ (int)r_ary_len(colors_ary), n, n * 4);
417
+
418
+ // Most polygons are small, so serve the marshaling buffers from the stack and
419
+ // fall back to the heap only past the threshold — no malloc/free per frame.
420
+ float pts_stack[R2D_STROKE_STACK_N * 2];
421
+ float colors_stack[R2D_STROKE_STACK_N * 4];
422
+ float *pts, *colors;
423
+ bool heap = n > R2D_STROKE_STACK_N;
424
+
425
+ if (heap) {
426
+ pts = (float *)malloc(n * 2 * sizeof(float));
427
+ colors = (float *)malloc(n * 4 * sizeof(float));
428
+ if (!pts || !colors) { free(pts); free(colors); return R_NIL; }
429
+ } else {
430
+ pts = pts_stack;
431
+ colors = colors_stack;
432
+ }
433
+
434
+ for (int i = 0; i < n * 2; i++) pts[i] = NUM2DBL(r_ary_entry(verts_ary, i));
435
+ for (int i = 0; i < n * 4; i++) colors[i] = NUM2DBL(r_ary_entry(colors_ary, i));
436
+
437
+ R2D_DrawPolygon(pts, n, colors, 0, 0, 0, 0);
438
+
439
+ if (heap) { free(colors); free(pts); }
440
+ return R_NIL;
441
+ }
442
+
443
+
444
+ /*
445
+ * Ruby2D::Ext.stroke_path(verts, stroke_width, pv_colors, closed)
446
+ *
447
+ * verts — flat Array [x1, y1, x2, y2, ...] of length 2n
448
+ * stroke_width — Float
449
+ * pv_colors — flat Array [r1, g1, b1, a1, r2, ...] of length 4n
450
+ * closed — truthy → close the path back to vertex 0
451
+ *
452
+ * Used by Polygon (closed = true) and Polyline (closed varies).
453
+ */
454
+ R_VAL ruby2d_ext_stroke_path(RUBY2D_METHOD_ARGS_VARIADIC) {
455
+ RUBY2D_EXTRACT_VARIADIC;
456
+ if (argc != 4) r_raise("Ruby2D::Ext.stroke_path expects 4 args, got %d", (int)argc);
457
+
458
+ R_VAL verts_ary = argv[0];
459
+ float sw = NUM2DBL(argv[1]);
460
+ R_VAL colors_ary = argv[2];
461
+ int closed = r_test(argv[3]) ? 1 : 0;
462
+
463
+ int n = (int)(r_ary_len(verts_ary) / 2);
464
+ if (n < 2 || sw <= 0.0f) return R_NIL;
465
+
466
+ // Guard the colors array length before the read loop: a short array would
467
+ // make r_ary_entry return nil and NUM2DBL(nil) error (hard-abort on mruby).
468
+ if ((int)r_ary_len(colors_ary) < n * 4)
469
+ r_raise("Ruby2D::Ext.stroke_path: %d color values for %d vertices (need %d)",
470
+ (int)r_ary_len(colors_ary), n, n * 4);
471
+
472
+ // Most paths are small, so serve the marshaling buffers from the stack and
473
+ // fall back to the heap only past the threshold — no malloc/free per frame.
474
+ float pts_stack[R2D_STROKE_STACK_N * 2];
475
+ float colors_stack[R2D_STROKE_STACK_N * 4];
476
+ float *pts, *colors;
477
+ bool heap = n > R2D_STROKE_STACK_N;
478
+
479
+ if (heap) {
480
+ pts = (float *)malloc(n * 2 * sizeof(float));
481
+ colors = (float *)malloc(n * 4 * sizeof(float));
482
+ if (!pts || !colors) { free(pts); free(colors); return R_NIL; }
483
+ } else {
484
+ pts = pts_stack;
485
+ colors = colors_stack;
486
+ }
487
+
488
+ for (int i = 0; i < n * 2; i++) pts[i] = NUM2DBL(r_ary_entry(verts_ary, i));
489
+ for (int i = 0; i < n * 4; i++) colors[i] = NUM2DBL(r_ary_entry(colors_ary, i));
490
+
491
+ R2D_StrokePath(pts, n, closed, sw, R2D_MITER_LIMIT, colors);
492
+
493
+ if (heap) { free(colors); free(pts); }
494
+ return R_NIL;
495
+ }
496
+
497
+
498
+ /*
499
+ * Initialize
500
+ */
501
+ void R2D_Ext_Init() {
502
+ ruby2d_ext_module = r_define_module_under(ruby2d_module, "Ext");
503
+
504
+ // Shared ivar IDs — see declarations above.
505
+ id_x = r_id("@x");
506
+ id_y = r_id("@y");
507
+ id_width = r_id("@width");
508
+ id_height = r_id("@height");
509
+ id_rotate = r_id("@rotate");
510
+ id_color = r_id("@color");
511
+ id_r = r_id("@r");
512
+ id_g = r_id("@g");
513
+ id_b = r_id("@b");
514
+ id_a = r_id("@a");
515
+ id_ext_image = r_id("@ext_image");
516
+ id_ext_text = r_id("@ext_text");
517
+ id_path = r_id("@path");
518
+ id_content = r_id("@content");
519
+ id_viewport_width = r_id("@viewport_width");
520
+ id_viewport_height = r_id("@viewport_height");
521
+
522
+ // Fixed-arity shape bindings
523
+ r_define_class_method(ruby2d_ext_module, "draw_triangle", ruby2d_ext_draw_triangle, r_args_variadic);
524
+ r_define_class_method(ruby2d_ext_module, "draw_triangle_uniform", ruby2d_ext_draw_triangle_uniform, r_args_variadic);
525
+ r_define_class_method(ruby2d_ext_module, "stroke_triangle", ruby2d_ext_stroke_triangle, r_args_variadic);
526
+ r_define_class_method(ruby2d_ext_module, "stroke_triangle_uniform", ruby2d_ext_stroke_triangle_uniform, r_args_variadic);
527
+ r_define_class_method(ruby2d_ext_module, "draw_quad", ruby2d_ext_draw_quad, r_args_variadic);
528
+ r_define_class_method(ruby2d_ext_module, "draw_quad_uniform", ruby2d_ext_draw_quad_uniform, r_args_variadic);
529
+ r_define_class_method(ruby2d_ext_module, "stroke_quad", ruby2d_ext_stroke_quad, r_args_variadic);
530
+ r_define_class_method(ruby2d_ext_module, "stroke_quad_uniform", ruby2d_ext_stroke_quad_uniform, r_args_variadic);
531
+ r_define_class_method(ruby2d_ext_module, "draw_line", ruby2d_ext_draw_line, r_args_variadic);
532
+ r_define_class_method(ruby2d_ext_module, "draw_dashed_line", ruby2d_ext_draw_dashed_line, r_args_variadic);
533
+ r_define_class_method(ruby2d_ext_module, "draw_circle", ruby2d_ext_draw_circle, r_args_variadic);
534
+ r_define_class_method(ruby2d_ext_module, "stroke_circle", ruby2d_ext_stroke_circle, r_args_variadic);
535
+ r_define_class_method(ruby2d_ext_module, "draw_ellipse", ruby2d_ext_draw_ellipse, r_args_variadic);
536
+ r_define_class_method(ruby2d_ext_module, "stroke_ellipse", ruby2d_ext_stroke_ellipse, r_args_variadic);
537
+
538
+ // Variadic shape bindings
539
+ r_define_class_method(ruby2d_ext_module, "draw_polygon", ruby2d_ext_draw_polygon, r_args_variadic);
540
+ r_define_class_method(ruby2d_ext_module, "stroke_path", ruby2d_ext_stroke_path, r_args_variadic);
541
+ }