ruby2d 0.12.0 → 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 (619) 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 -428
  285. data/assets/app.icns +0 -0
  286. data/assets/include/GLES2/gl2.h +0 -656
  287. data/assets/include/GLES2/gl2ext.h +0 -3949
  288. data/assets/include/GLES2/gl2ext_angle.h +0 -701
  289. data/assets/include/GLES2/gl2platform.h +0 -27
  290. data/assets/include/GLES3/gl3.h +0 -1192
  291. data/assets/include/GLES3/gl31.h +0 -1507
  292. data/assets/include/GLES3/gl32.h +0 -1808
  293. data/assets/include/GLES3/gl3platform.h +0 -27
  294. data/assets/include/KHR/khrplatform.h +0 -290
  295. data/assets/include/SDL2/SDL.h +0 -233
  296. data/assets/include/SDL2/SDL_assert.h +0 -326
  297. data/assets/include/SDL2/SDL_atomic.h +0 -415
  298. data/assets/include/SDL2/SDL_audio.h +0 -1500
  299. data/assets/include/SDL2/SDL_clipboard.h +0 -141
  300. data/assets/include/SDL2/SDL_config.h +0 -61
  301. data/assets/include/SDL2/SDL_config_android.h +0 -194
  302. data/assets/include/SDL2/SDL_config_emscripten.h +0 -218
  303. data/assets/include/SDL2/SDL_config_iphoneos.h +0 -217
  304. data/assets/include/SDL2/SDL_config_macosx.h +0 -277
  305. data/assets/include/SDL2/SDL_config_minimal.h +0 -95
  306. data/assets/include/SDL2/SDL_config_ngage.h +0 -89
  307. data/assets/include/SDL2/SDL_config_os2.h +0 -207
  308. data/assets/include/SDL2/SDL_config_pandora.h +0 -141
  309. data/assets/include/SDL2/SDL_config_windows.h +0 -331
  310. data/assets/include/SDL2/SDL_config_wingdk.h +0 -253
  311. data/assets/include/SDL2/SDL_config_winrt.h +0 -220
  312. data/assets/include/SDL2/SDL_config_xbox.h +0 -235
  313. data/assets/include/SDL2/SDL_cpuinfo.h +0 -594
  314. data/assets/include/SDL2/SDL_endian.h +0 -348
  315. data/assets/include/SDL2/SDL_error.h +0 -163
  316. data/assets/include/SDL2/SDL_events.h +0 -1166
  317. data/assets/include/SDL2/SDL_filesystem.h +0 -149
  318. data/assets/include/SDL2/SDL_gamecontroller.h +0 -1074
  319. data/assets/include/SDL2/SDL_gesture.h +0 -117
  320. data/assets/include/SDL2/SDL_guid.h +0 -100
  321. data/assets/include/SDL2/SDL_haptic.h +0 -1341
  322. data/assets/include/SDL2/SDL_hidapi.h +0 -451
  323. data/assets/include/SDL2/SDL_hints.h +0 -2569
  324. data/assets/include/SDL2/SDL_image.h +0 -2173
  325. data/assets/include/SDL2/SDL_joystick.h +0 -1066
  326. data/assets/include/SDL2/SDL_keyboard.h +0 -353
  327. data/assets/include/SDL2/SDL_keycode.h +0 -358
  328. data/assets/include/SDL2/SDL_loadso.h +0 -115
  329. data/assets/include/SDL2/SDL_log.h +0 -404
  330. data/assets/include/SDL2/SDL_main.h +0 -275
  331. data/assets/include/SDL2/SDL_mixer.h +0 -2784
  332. data/assets/include/SDL2/SDL_mouse.h +0 -465
  333. data/assets/include/SDL2/SDL_mutex.h +0 -471
  334. data/assets/include/SDL2/SDL_name.h +0 -33
  335. data/assets/include/SDL2/SDL_pixels.h +0 -644
  336. data/assets/include/SDL2/SDL_platform.h +0 -261
  337. data/assets/include/SDL2/SDL_quit.h +0 -58
  338. data/assets/include/SDL2/SDL_rect.h +0 -376
  339. data/assets/include/SDL2/SDL_render.h +0 -1919
  340. data/assets/include/SDL2/SDL_revision.h +0 -6
  341. data/assets/include/SDL2/SDL_rwops.h +0 -841
  342. data/assets/include/SDL2/SDL_sensor.h +0 -322
  343. data/assets/include/SDL2/SDL_shape.h +0 -155
  344. data/assets/include/SDL2/SDL_stdinc.h +0 -830
  345. data/assets/include/SDL2/SDL_surface.h +0 -997
  346. data/assets/include/SDL2/SDL_system.h +0 -623
  347. data/assets/include/SDL2/SDL_syswm.h +0 -386
  348. data/assets/include/SDL2/SDL_test_images.h +0 -78
  349. data/assets/include/SDL2/SDL_test_random.h +0 -115
  350. data/assets/include/SDL2/SDL_thread.h +0 -464
  351. data/assets/include/SDL2/SDL_timer.h +0 -222
  352. data/assets/include/SDL2/SDL_touch.h +0 -150
  353. data/assets/include/SDL2/SDL_ttf.h +0 -2316
  354. data/assets/include/SDL2/SDL_types.h +0 -29
  355. data/assets/include/SDL2/SDL_version.h +0 -204
  356. data/assets/include/SDL2/SDL_video.h +0 -2150
  357. data/assets/include/SDL2/SDL_vulkan.h +0 -215
  358. data/assets/include/SDL2/begin_code.h +0 -187
  359. data/assets/include/mruby/boxing_no.h +0 -58
  360. data/assets/include/mruby/class.h +0 -108
  361. data/assets/include/mruby/error.h +0 -147
  362. data/assets/include/mruby/gc.h +0 -94
  363. data/assets/include/mruby/irep.h +0 -147
  364. data/assets/include/mruby/khash.h +0 -284
  365. data/assets/include/mruby/object.h +0 -43
  366. data/assets/include/mruby/presym/disable.h +0 -70
  367. data/assets/include/mruby/presym/enable.h +0 -37
  368. data/assets/include/mruby/presym.h +0 -40
  369. data/assets/include/mruby/proc.h +0 -211
  370. data/assets/include/mruby/throw.h +0 -66
  371. data/assets/macos/universal/bin/mrbc +0 -0
  372. data/assets/macos/universal/lib/libFLAC.a +0 -0
  373. data/assets/macos/universal/lib/libSDL2.a +0 -0
  374. data/assets/macos/universal/lib/libSDL2_image.a +0 -0
  375. data/assets/macos/universal/lib/libSDL2_mixer.a +0 -0
  376. data/assets/macos/universal/lib/libSDL2_ttf.a +0 -0
  377. data/assets/macos/universal/lib/libavif.a +0 -0
  378. data/assets/macos/universal/lib/libbrotlicommon-static.a +0 -0
  379. data/assets/macos/universal/lib/libbrotlidec-static.a +0 -0
  380. data/assets/macos/universal/lib/libfreetype.a +0 -0
  381. data/assets/macos/universal/lib/libgraphite2.a +0 -0
  382. data/assets/macos/universal/lib/libharfbuzz.a +0 -0
  383. data/assets/macos/universal/lib/libhwy.a +0 -0
  384. data/assets/macos/universal/lib/libjpeg.a +0 -0
  385. data/assets/macos/universal/lib/libjxl.a +0 -0
  386. data/assets/macos/universal/lib/libmodplug.a +0 -0
  387. data/assets/macos/universal/lib/libmpg123.a +0 -0
  388. data/assets/macos/universal/lib/libmruby.a +0 -0
  389. data/assets/macos/universal/lib/libogg.a +0 -0
  390. data/assets/macos/universal/lib/libpng.a +0 -0
  391. data/assets/macos/universal/lib/libtiff.a +0 -0
  392. data/assets/macos/universal/lib/libvorbis.a +0 -0
  393. data/assets/macos/universal/lib/libvorbisfile.a +0 -0
  394. data/assets/macos/universal/lib/libwebp.a +0 -0
  395. data/assets/macos/universal/lib/libzstd.a +0 -0
  396. data/assets/test_media/README.md +0 -3
  397. data/assets/test_media/bitstream_vera/COPYRIGHT.txt +0 -124
  398. data/assets/test_media/bitstream_vera/vera.ttf +0 -0
  399. data/assets/test_media/boom.png +0 -0
  400. data/assets/test_media/coin.png +0 -0
  401. data/assets/test_media/colors.png +0 -0
  402. data/assets/test_media/controller.png +0 -0
  403. data/assets/test_media/dial.wav +0 -0
  404. data/assets/test_media/hero.png +0 -0
  405. data/assets/test_media/image.bmp +0 -0
  406. data/assets/test_media/image.jpg +0 -0
  407. data/assets/test_media/image.png +0 -0
  408. data/assets/test_media/music.flac +0 -0
  409. data/assets/test_media/music.mp3 +0 -0
  410. data/assets/test_media/music.ogg +0 -0
  411. data/assets/test_media/music.wav +0 -0
  412. data/assets/test_media/originals/boom.pxm +0 -0
  413. data/assets/test_media/originals/coin.pxm +0 -0
  414. data/assets/test_media/originals/controller.sketch +0 -0
  415. data/assets/test_media/originals/hero.pxm +0 -0
  416. data/assets/test_media/originals/image.pxm +0 -0
  417. data/assets/test_media/originals/music.caf +0 -0
  418. data/assets/test_media/originals/texture_atlas.pxm +0 -0
  419. data/assets/test_media/rondo_alla_turka.ogg +0 -0
  420. data/assets/test_media/sound.flac +0 -0
  421. data/assets/test_media/sound.mp3 +0 -0
  422. data/assets/test_media/sound.ogg +0 -0
  423. data/assets/test_media/sound.wav +0 -0
  424. data/assets/test_media/sprite_sheet.png +0 -0
  425. data/assets/test_media/texture_atlas.png +0 -0
  426. data/assets/wasm/libmruby.a +0 -0
  427. data/assets/windows/mingw-w64-ucrt-x86_64/bin/mrbc.exe +0 -0
  428. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libFLAC.a +0 -0
  429. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libLerc.a +0 -0
  430. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2.a +0 -0
  431. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_image.a +0 -0
  432. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_mixer.a +0 -0
  433. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libSDL2_ttf.a +0 -0
  434. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlicommon.a +0 -0
  435. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbrotlidec.a +0 -0
  436. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libbz2.a +0 -0
  437. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libdeflate.a +0 -0
  438. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libfreetype.a +0 -0
  439. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libglew32.a +0 -0
  440. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libgraphite2.a +0 -0
  441. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libharfbuzz.a +0 -0
  442. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libhwy.a +0 -0
  443. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjbig.a +0 -0
  444. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjpeg.a +0 -0
  445. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libjxl.a +0 -0
  446. data/assets/windows/mingw-w64-ucrt-x86_64/lib/liblzma.a +0 -0
  447. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmodplug.a +0 -0
  448. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmpg123.a +0 -0
  449. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libmruby.a +0 -0
  450. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libogg.a +0 -0
  451. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopus.a +0 -0
  452. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libopusfile.a +0 -0
  453. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libpng.a +0 -0
  454. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libsndfile.a +0 -0
  455. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libssp.a +0 -1
  456. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libstdc++.a +0 -0
  457. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libtiff.a +0 -0
  458. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbis.a +0 -0
  459. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libvorbisfile.a +0 -0
  460. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libwebp.a +0 -0
  461. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libz.a +0 -0
  462. data/assets/windows/mingw-w64-ucrt-x86_64/lib/libzstd.a +0 -0
  463. data/assets/windows/mingw-w64-x86_64/bin/mrbc.exe +0 -0
  464. data/assets/windows/mingw-w64-x86_64/lib/libFLAC.a +0 -0
  465. data/assets/windows/mingw-w64-x86_64/lib/libLerc.a +0 -0
  466. data/assets/windows/mingw-w64-x86_64/lib/libSDL2.a +0 -0
  467. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_image.a +0 -0
  468. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_mixer.a +0 -0
  469. data/assets/windows/mingw-w64-x86_64/lib/libSDL2_ttf.a +0 -0
  470. data/assets/windows/mingw-w64-x86_64/lib/libbrotlicommon.a +0 -0
  471. data/assets/windows/mingw-w64-x86_64/lib/libbrotlidec.a +0 -0
  472. data/assets/windows/mingw-w64-x86_64/lib/libbz2.a +0 -0
  473. data/assets/windows/mingw-w64-x86_64/lib/libdeflate.a +0 -0
  474. data/assets/windows/mingw-w64-x86_64/lib/libfreetype.a +0 -0
  475. data/assets/windows/mingw-w64-x86_64/lib/libglew32.a +0 -0
  476. data/assets/windows/mingw-w64-x86_64/lib/libgraphite2.a +0 -0
  477. data/assets/windows/mingw-w64-x86_64/lib/libharfbuzz.a +0 -0
  478. data/assets/windows/mingw-w64-x86_64/lib/libhwy.a +0 -0
  479. data/assets/windows/mingw-w64-x86_64/lib/libjbig.a +0 -0
  480. data/assets/windows/mingw-w64-x86_64/lib/libjpeg.a +0 -0
  481. data/assets/windows/mingw-w64-x86_64/lib/libjxl.a +0 -0
  482. data/assets/windows/mingw-w64-x86_64/lib/liblzma.a +0 -0
  483. data/assets/windows/mingw-w64-x86_64/lib/libmodplug.a +0 -0
  484. data/assets/windows/mingw-w64-x86_64/lib/libmpg123.a +0 -0
  485. data/assets/windows/mingw-w64-x86_64/lib/libmruby.a +0 -0
  486. data/assets/windows/mingw-w64-x86_64/lib/libogg.a +0 -0
  487. data/assets/windows/mingw-w64-x86_64/lib/libopus.a +0 -0
  488. data/assets/windows/mingw-w64-x86_64/lib/libopusfile.a +0 -0
  489. data/assets/windows/mingw-w64-x86_64/lib/libpng.a +0 -0
  490. data/assets/windows/mingw-w64-x86_64/lib/libsndfile.a +0 -0
  491. data/assets/windows/mingw-w64-x86_64/lib/libssp.a +0 -1
  492. data/assets/windows/mingw-w64-x86_64/lib/libstdc++.a +0 -0
  493. data/assets/windows/mingw-w64-x86_64/lib/libtiff.a +0 -0
  494. data/assets/windows/mingw-w64-x86_64/lib/libvorbis.a +0 -0
  495. data/assets/windows/mingw-w64-x86_64/lib/libvorbisfile.a +0 -0
  496. data/assets/windows/mingw-w64-x86_64/lib/libwebp.a +0 -0
  497. data/assets/windows/mingw-w64-x86_64/lib/libz.a +0 -0
  498. data/assets/windows/mingw-w64-x86_64/lib/libzstd.a +0 -0
  499. data/assets/xcode/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -98
  500. data/assets/xcode/ios/Assets.xcassets/Contents.json +0 -6
  501. data/assets/xcode/ios/Base.lproj/LaunchScreen.storyboard +0 -27
  502. data/assets/xcode/ios/Info.plist +0 -43
  503. data/assets/xcode/ios/MRuby.framework/Headers/mrbconf.h +0 -143
  504. data/assets/xcode/ios/MRuby.framework/Headers/mruby/array.h +0 -280
  505. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  506. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  507. data/assets/xcode/ios/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  508. data/assets/xcode/ios/MRuby.framework/Headers/mruby/class.h +0 -97
  509. data/assets/xcode/ios/MRuby.framework/Headers/mruby/common.h +0 -77
  510. data/assets/xcode/ios/MRuby.framework/Headers/mruby/compile.h +0 -195
  511. data/assets/xcode/ios/MRuby.framework/Headers/mruby/data.h +0 -75
  512. data/assets/xcode/ios/MRuby.framework/Headers/mruby/debug.h +0 -67
  513. data/assets/xcode/ios/MRuby.framework/Headers/mruby/dump.h +0 -196
  514. data/assets/xcode/ios/MRuby.framework/Headers/mruby/error.h +0 -75
  515. data/assets/xcode/ios/MRuby.framework/Headers/mruby/gc.h +0 -91
  516. data/assets/xcode/ios/MRuby.framework/Headers/mruby/hash.h +0 -215
  517. data/assets/xcode/ios/MRuby.framework/Headers/mruby/irep.h +0 -75
  518. data/assets/xcode/ios/MRuby.framework/Headers/mruby/istruct.h +0 -47
  519. data/assets/xcode/ios/MRuby.framework/Headers/mruby/khash.h +0 -274
  520. data/assets/xcode/ios/MRuby.framework/Headers/mruby/numeric.h +0 -161
  521. data/assets/xcode/ios/MRuby.framework/Headers/mruby/object.h +0 -44
  522. data/assets/xcode/ios/MRuby.framework/Headers/mruby/opcode.h +0 -69
  523. data/assets/xcode/ios/MRuby.framework/Headers/mruby/ops.h +0 -117
  524. data/assets/xcode/ios/MRuby.framework/Headers/mruby/proc.h +0 -131
  525. data/assets/xcode/ios/MRuby.framework/Headers/mruby/range.h +0 -49
  526. data/assets/xcode/ios/MRuby.framework/Headers/mruby/re.h +0 -16
  527. data/assets/xcode/ios/MRuby.framework/Headers/mruby/string.h +0 -444
  528. data/assets/xcode/ios/MRuby.framework/Headers/mruby/throw.h +0 -55
  529. data/assets/xcode/ios/MRuby.framework/Headers/mruby/value.h +0 -309
  530. data/assets/xcode/ios/MRuby.framework/Headers/mruby/variable.h +0 -136
  531. data/assets/xcode/ios/MRuby.framework/Headers/mruby/version.h +0 -110
  532. data/assets/xcode/ios/MRuby.framework/Headers/mruby.h +0 -1282
  533. data/assets/xcode/ios/MRuby.framework/Info.plist +0 -20
  534. data/assets/xcode/ios/MRuby.framework/MRuby +0 -0
  535. data/assets/xcode/ios/MyApp.xcodeproj/project.pbxproj +0 -368
  536. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  537. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  538. data/assets/xcode/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  539. data/assets/xcode/ios/main.c +0 -1
  540. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  541. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +0 -6
  542. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +0 -17
  543. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  544. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +0 -6
  545. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  546. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  547. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +0 -16
  548. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +0 -6
  549. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +0 -17
  550. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +0 -16
  551. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +0 -6
  552. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +0 -16
  553. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +0 -6
  554. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +0 -32
  555. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +0 -16
  556. data/assets/xcode/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +0 -16
  557. data/assets/xcode/tvos/Assets.xcassets/Contents.json +0 -6
  558. data/assets/xcode/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +0 -22
  559. data/assets/xcode/tvos/Info.plist +0 -30
  560. data/assets/xcode/tvos/MRuby.framework/Headers/mrbconf.h +0 -143
  561. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/array.h +0 -280
  562. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +0 -102
  563. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_no.h +0 -56
  564. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/boxing_word.h +0 -144
  565. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/class.h +0 -97
  566. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/common.h +0 -77
  567. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/compile.h +0 -195
  568. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/data.h +0 -75
  569. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/debug.h +0 -67
  570. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/dump.h +0 -196
  571. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/error.h +0 -75
  572. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/gc.h +0 -91
  573. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/hash.h +0 -215
  574. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/irep.h +0 -75
  575. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/istruct.h +0 -47
  576. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/khash.h +0 -274
  577. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/numeric.h +0 -161
  578. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/object.h +0 -44
  579. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/opcode.h +0 -69
  580. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/ops.h +0 -117
  581. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/proc.h +0 -131
  582. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/range.h +0 -49
  583. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/re.h +0 -16
  584. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/string.h +0 -444
  585. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/throw.h +0 -55
  586. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/value.h +0 -309
  587. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/variable.h +0 -136
  588. data/assets/xcode/tvos/MRuby.framework/Headers/mruby/version.h +0 -110
  589. data/assets/xcode/tvos/MRuby.framework/Headers/mruby.h +0 -1282
  590. data/assets/xcode/tvos/MRuby.framework/Info.plist +0 -20
  591. data/assets/xcode/tvos/MRuby.framework/MRuby +0 -0
  592. data/assets/xcode/tvos/MyApp.xcodeproj/project.pbxproj +0 -350
  593. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  594. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  595. data/assets/xcode/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +0 -30
  596. data/assets/xcode/tvos/main.c +0 -1
  597. data/ext/ruby2d/common.c +0 -185
  598. data/ext/ruby2d/controllers.c +0 -110
  599. data/ext/ruby2d/gl.c +0 -398
  600. data/ext/ruby2d/gl2.c +0 -86
  601. data/ext/ruby2d/gl3.c +0 -304
  602. data/ext/ruby2d/gles.c +0 -302
  603. data/ext/ruby2d/input.c +0 -48
  604. data/ext/ruby2d/music.c +0 -127
  605. data/ext/ruby2d/sound.c +0 -132
  606. data/lib/ruby2d/cli/console.rb +0 -65
  607. data/lib/ruby2d/cli/enable_console.rb +0 -7
  608. data/lib/ruby2d/cli/platform.rb +0 -17
  609. data/lib/ruby2d/music.rb +0 -77
  610. data/lib/ruby2d/pixel.rb +0 -18
  611. data/lib/ruby2d/pixmap.rb +0 -39
  612. data/lib/ruby2d/pixmap_atlas.rb +0 -56
  613. data/lib/ruby2d/sound.rb +0 -61
  614. data/lib/ruby2d/texture.rb +0 -38
  615. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2.h +0 -0
  616. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2ext.h +0 -0
  617. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_gl2platform.h +0 -0
  618. /data/assets/{include/SDL2 → platform/include/SDL3}/SDL_opengles2_khrplatform.h +0 -0
  619. /data/assets/{include → platform/include}/mruby/re.h +0 -0
@@ -0,0 +1,326 @@
1
+ # Fractal tree
2
+ # A recursive tree grows, then leafs through the seasons in a procedural breeze.
3
+ #
4
+ # The tree unfurls trunk-to-canopy, bare at first, then the seasons cycle on
5
+ # their own — spring blossoms, summer green, autumn gold, back to bare — fading
6
+ # gradually from one to the next, with petals drifting down from the canopy.
7
+ # Click along the ground to regrow the tree at that spot, press R to regrow at
8
+ # the center, or S to skip ahead a season.
9
+
10
+ require 'ruby2d'
11
+
12
+ # === Tunables ===
13
+
14
+ WIDTH = 800 # window width in pixels
15
+ HEIGHT = 600 # window height in pixels
16
+ TRUNK_LENGTH = 150 # initial trunk length in pixels (scales the whole tree)
17
+ DEPTH = 7 # recursion depth (drives density and cost)
18
+ BRANCH_RATIO = 0.72 # length scaling per level
19
+ TRUNK_THICKNESS = 14 # trunk stroke width in pixels
20
+ BRANCH_TAPER = 0.8 # each branch's width as a fraction of its parent's
21
+ ANGLE_SPREAD = 0.45 # base child branch angle in radians (~26°)
22
+ ANGLE_JITTER = 0.15 # random angle variation per branch
23
+ THIRD_BRANCH_PROB = 0.35 # chance of an extra middle branch
24
+ WIND_AMPLITUDE = 0.05 # per-branch wind sway in radians
25
+ WIND_SPEED = 1.2 # wind oscillation rate (rad/sec)
26
+ GROW_TIME = 0.16 # seconds for each level to extend (trunk → canopy)
27
+ SEASON_TIME = 4.0 # seconds each season holds before the next
28
+ SEASON_FADE = 1.6 # seconds to cross-fade the canopy color between seasons
29
+ CANOPY_TAU = 0.4 # leaf-in / leaf-out smoothing constant (sec)
30
+ GROUND_TAU = 0.9 # ground color smoothing constant (sec)
31
+ LEAF_DEPTH = 2 # foliage sits on branches at this depth or shallower
32
+ LEAF_RADIUS = 6 # base foliage radius in pixels (varied per leaf)
33
+ PETAL_COUNT = 70 # drifting petals in the air
34
+ PETAL_FALL = 45 # petal fall speed (px/sec)
35
+ GROUND_H = 36 # ground band height in pixels
36
+
37
+ TWO_PI = Math::PI * 2
38
+ ROOT_X = WIDTH / 2.0
39
+ ROOT_Y = HEIGHT - 24
40
+
41
+ SKY_TOP = '#6c9bd6' # sky gradient, top of the window
42
+ SKY_BOTTOM = '#cfe2f5' # sky gradient, down at the horizon
43
+
44
+ # Seasons cycle in order, starting bare. An empty list means "none" — winter
45
+ # drops all leaves, summer keeps its leaves but sheds no petals.
46
+ SEASONS = [
47
+ { leaves: [], petals: [] }, # winter
48
+ { leaves: ['#f9a8d4', '#fbcfe8', '#fde68a', '#ffffff'], petals: ['#f9a8d4', '#fbcfe8'] }, # spring
49
+ { leaves: ['#4ade80', '#22c55e', '#16a34a', '#86efac'], petals: [] }, # summer
50
+ { leaves: ['#f59e0b', '#ef4444', '#fb923c', '#fcd34d'], petals: ['#f59e0b', '#fb923c'] } # autumn
51
+ ].freeze
52
+
53
+ # Ground gradient (top, bottom) per season, parallel to SEASONS.
54
+ GROUND_SEASONS = [
55
+ ['#d8e2e0', '#aeb9b4'], # winter — frosty pale
56
+ ['#86c34a', '#4f7a2c'], # spring — fresh green
57
+ ['#5f8f33', '#37571f'], # summer — deep green
58
+ ['#9c7d3a', '#5a4620'] # autumn — golden brown
59
+ ].freeze
60
+
61
+ # Parse the hex palettes into [r, g, b] triples once, for color interpolation.
62
+ LEAF_RGB = SEASONS.map { |s| s[:leaves].map { |hex| c = Color.new(hex); [c.r, c.g, c.b] } }
63
+ GROUND_RGB = GROUND_SEASONS.map { |pair| pair.map { |hex| c = Color.new(hex); [c.r, c.g, c.b] } }
64
+
65
+ # === Window ===
66
+
67
+ set title: 'Ruby 2D ▸ Examples ▸ Fractal tree', width: WIDTH, height: HEIGHT, background: SKY_BOTTOM
68
+ set close_on_esc: true
69
+
70
+ # === Structs and helpers ===
71
+
72
+ Branch = Struct.new(:parent_idx, :base_angle, :length, :depth, :phase,
73
+ :line, :tip_x, :tip_y, :leaf, :hue, :leaf_size)
74
+ Petal = Struct.new(:x, :y, :speed, :phase, :amp, :circle)
75
+
76
+ def lerp(a, b, t)
77
+ a + (b - a) * t
78
+ end
79
+
80
+ # Smoothstep on a clamped 0..1 ramp, used to ease branch growth and the
81
+ # canopy color cross-fade in and out.
82
+ def ease(x)
83
+ t = x.clamp(0.0, 1.0)
84
+ t * t * (3 - 2 * t)
85
+ end
86
+
87
+ # Recursively grow the branch list. Each branch starts as a zero-length Line
88
+ # (the update loop extends it) and is a fixed fraction thinner than its parent
89
+ # (BRANCH_TAPER), so a branch stays close to the trunk's width where it forks
90
+ # and thins gradually toward the canopy. Canopy branches also get a Circle
91
+ # leaf the season cycle fades in and out.
92
+ def build_tree(branches, base_angle, length, thickness, depth, parent_idx)
93
+ return if depth == 0 || length < 2
94
+
95
+ level = DEPTH - depth
96
+ frac = level / (DEPTH - 1).to_f
97
+ color = [lerp(0.26, 0.46, frac), lerp(0.17, 0.32, frac), lerp(0.09, 0.18, frac), 1]
98
+ line = Line.new(x1: 0, y1: 0, x2: 0, y2: 0,
99
+ stroke_width: thickness.clamp(1.0, TRUNK_THICKNESS), color: color, z: 1)
100
+
101
+ leaf = nil
102
+ leaf_size = 0.0
103
+ if depth <= LEAF_DEPTH
104
+ leaf = Circle.new(x: 0, y: 0, radius: 1, sectors: 7, color: '#ffffff', z: 2, visible: false)
105
+ leaf_size = LEAF_RADIUS * (0.7 + rand * 0.7)
106
+ end
107
+
108
+ phase = rand * TWO_PI
109
+ this_idx = branches.size
110
+ branches << Branch.new(parent_idx, base_angle, length, depth, phase,
111
+ line, 0.0, 0.0, leaf, rand, leaf_size)
112
+
113
+ child_len = length * BRANCH_RATIO
114
+ child_thick = thickness * BRANCH_TAPER
115
+ third = rand < THIRD_BRANCH_PROB
116
+
117
+ child_l = base_angle + ANGLE_SPREAD + (rand - 0.5) * ANGLE_JITTER
118
+ child_r = base_angle - ANGLE_SPREAD + (rand - 0.5) * ANGLE_JITTER
119
+ build_tree(branches, child_l, child_len, child_thick, depth - 1, this_idx)
120
+ build_tree(branches, child_r, child_len, child_thick, depth - 1, this_idx)
121
+ if third
122
+ child_c = base_angle + (rand - 0.5) * ANGLE_JITTER
123
+ build_tree(branches, child_c, child_len, child_thick, depth - 1, this_idx)
124
+ end
125
+ end
126
+
127
+ # === State ===
128
+
129
+ branches = []
130
+ leaf_branches = [] # subset of `branches` carrying a leaf (the canopy)
131
+ root_x = ROOT_X
132
+ root_y = ROOT_Y
133
+ grow_age = 0.0 # seconds since the current tree was planted
134
+ season_idx = 0 # starts on winter (bare)
135
+ season_timer = 0.0
136
+ canopy = 0.0 # 0 bare … 1 full; eases toward the season's leafiness
137
+ blend = 1.0 # canopy color cross-fade, 0 → 1 (1 = settled on season)
138
+ from_season = 0 # season the cross-fade is coming from
139
+ reseed_petals = false
140
+ ground_top = GROUND_RGB[0][0].dup # current ground colors, eased per season
141
+ ground_bot = GROUND_RGB[0][1].dup
142
+
143
+ # === Scenery and petals (persistent, drawn behind the tree) ===
144
+
145
+ Quad.new(x1: 0, y1: 0, x2: WIDTH, y2: 0, x3: WIDTH, y3: HEIGHT, x4: 0, y4: HEIGHT,
146
+ color: [SKY_TOP, SKY_TOP, SKY_BOTTOM, SKY_BOTTOM], z: -20)
147
+ GROUND_Y = HEIGHT - GROUND_H
148
+ ground = Quad.new(x1: 0, y1: GROUND_Y, x2: WIDTH, y2: GROUND_Y, x3: WIDTH, y3: HEIGHT, x4: 0, y4: HEIGHT,
149
+ color: [GROUND_SEASONS[0][0], GROUND_SEASONS[0][0],
150
+ GROUND_SEASONS[0][1], GROUND_SEASONS[0][1]], z: -10)
151
+
152
+ petals = Array.new(PETAL_COUNT) do
153
+ Petal.new(rand * WIDTH, rand * HEIGHT, PETAL_FALL * (0.6 + rand * 0.8),
154
+ rand * TWO_PI, 10 + rand * 26,
155
+ Circle.new(x: 0, y: 0, radius: 3 + rand * 2, sectors: 6,
156
+ color: '#f9a8d4', z: 3, visible: false))
157
+ end
158
+
159
+ # === Season + planting ===
160
+
161
+ # Advance to the next season. Petals recolor instantly (they were hidden in
162
+ # between); the canopy either snaps to the new palette while it is hidden, or
163
+ # cross-fades from the season it is leaving when the leaves are on show.
164
+ next_season = lambda do
165
+ prev = season_idx
166
+ season_idx = (season_idx + 1) % SEASONS.length
167
+
168
+ petal_palette = SEASONS[season_idx][:petals]
169
+ petals.each_with_index { |p, i| p.circle.color = petal_palette[i % petal_palette.size] } unless petal_palette.empty?
170
+
171
+ leaf_palette = LEAF_RGB[season_idx]
172
+ if leaf_palette.empty?
173
+ blend = 1.0
174
+ elsif canopy < 0.1 || SEASONS[prev][:leaves].empty?
175
+ blend = 1.0
176
+ branches.each do |b|
177
+ next unless b.leaf
178
+
179
+ c = leaf_palette[(b.hue * leaf_palette.size).to_i]
180
+ b.leaf.color = [c[0], c[1], c[2], 1]
181
+ end
182
+ else
183
+ from_season = prev
184
+ blend = 0.0
185
+ end
186
+ end
187
+
188
+ # Plant a fresh tree at (x, y): rebuild the branches, reset the growth and
189
+ # season cycle to the start (bare), and ask the petals to reseed from the
190
+ # new canopy on the next frame.
191
+ plant = lambda do |x, y|
192
+ branches.each do |b|
193
+ b.line.remove
194
+ b.leaf.remove if b.leaf
195
+ end
196
+ branches.clear
197
+ root_x = x
198
+ root_y = y
199
+ grow_age = 0.0
200
+ season_idx = 0
201
+ season_timer = 0.0
202
+ canopy = 0.0
203
+ blend = 1.0
204
+ build_tree(branches, 0.0, TRUNK_LENGTH, TRUNK_THICKNESS, DEPTH, -1)
205
+ leaf_branches = branches.select { |b| b.leaf }
206
+ reseed_petals = true
207
+ end
208
+
209
+ plant.call(root_x, root_y)
210
+
211
+ # === Input ===
212
+
213
+ # Click regrows the tree at the cursor's x, but always rooted on the ground.
214
+ on :mouse_down do |event|
215
+ plant.call(event.x.to_f, ROOT_Y)
216
+ end
217
+
218
+ on(key_down: :r) { plant.call(ROOT_X, ROOT_Y) }
219
+
220
+ on(key_down: :s) do
221
+ season_timer = 0.0
222
+ next_season.call
223
+ end
224
+
225
+ # === Per-frame update ===
226
+
227
+ update do |dt|
228
+ t = elapsed
229
+ grow_age += dt
230
+
231
+ # Advance the season on its own timer.
232
+ season_timer += dt
233
+ if season_timer >= SEASON_TIME
234
+ season_timer -= SEASON_TIME
235
+ next_season.call
236
+ end
237
+
238
+ petals_on = !SEASONS[season_idx][:petals].empty?
239
+ canopy_target = SEASONS[season_idx][:leaves].empty? ? 0.0 : 1.0
240
+ canopy += (canopy_target - canopy) * (1 - Math.exp(-dt / CANOPY_TAU))
241
+
242
+ # Ease the ground gradient toward the current season's colors.
243
+ gt = GROUND_RGB[season_idx][0]
244
+ gb = GROUND_RGB[season_idx][1]
245
+ gk = 1 - Math.exp(-dt / GROUND_TAU)
246
+ 3.times do |i|
247
+ ground_top[i] += (gt[i] - ground_top[i]) * gk
248
+ ground_bot[i] += (gb[i] - ground_bot[i]) * gk
249
+ end
250
+ top_color = [ground_top[0], ground_top[1], ground_top[2], 1]
251
+ bot_color = [ground_bot[0], ground_bot[1], ground_bot[2], 1]
252
+ ground.color = [top_color, top_color, bot_color, bot_color]
253
+
254
+ # Cross-fade the canopy color only while a leafy→leafy transition runs.
255
+ blending = blend < 1.0
256
+ if blending
257
+ blend = [blend + dt / SEASON_FADE, 1.0].min
258
+ blend_e = ease(blend)
259
+ from_pal = LEAF_RGB[from_season]
260
+ to_pal = LEAF_RGB[season_idx]
261
+ end
262
+
263
+ branches.each do |b|
264
+ wind = Math.sin(t * WIND_SPEED + b.phase) * WIND_AMPLITUDE
265
+ angle = b.base_angle + wind
266
+ # Each level starts extending only after its parent has finished, so
267
+ # the tree unfurls from the trunk outward.
268
+ grow = ease((grow_age - (DEPTH - b.depth) * GROW_TIME) / GROW_TIME)
269
+
270
+ if b.parent_idx == -1
271
+ base_x = root_x
272
+ base_y = root_y
273
+ else
274
+ parent = branches[b.parent_idx]
275
+ base_x = parent.tip_x
276
+ base_y = parent.tip_y
277
+ end
278
+
279
+ eff_len = b.length * grow
280
+ b.tip_x = base_x + Math.sin(angle) * eff_len
281
+ b.tip_y = base_y - Math.cos(angle) * eff_len
282
+ b.line.x1 = base_x
283
+ b.line.y1 = base_y
284
+ b.line.x2 = b.tip_x
285
+ b.line.y2 = b.tip_y
286
+ b.line.visible = grow > 0.0
287
+
288
+ next unless b.leaf
289
+
290
+ b.leaf.x = b.tip_x
291
+ b.leaf.y = b.tip_y
292
+ b.leaf.radius = b.leaf_size * canopy
293
+ b.leaf.visible = canopy > 0.02 && grow > 0.5
294
+ next unless blending
295
+
296
+ fc = from_pal[(b.hue * from_pal.size).to_i]
297
+ tc = to_pal[(b.hue * to_pal.size).to_i]
298
+ b.leaf.color = [lerp(fc[0], tc[0], blend_e), lerp(fc[1], tc[1], blend_e),
299
+ lerp(fc[2], tc[2], blend_e), 1]
300
+ end
301
+
302
+ # Petals fall from the canopy: each one (re)spawns at a random leaf tip and
303
+ # drifts down on the wind. The reseed pass snaps them to a freshly planted
304
+ # canopy once its tips exist.
305
+ n_leaves = leaf_branches.length
306
+ petals.each do |p|
307
+ if reseed_petals && n_leaves > 0
308
+ lb = leaf_branches[rand(n_leaves)]
309
+ p.x = lb.tip_x
310
+ p.y = lb.tip_y + rand * (HEIGHT - lb.tip_y)
311
+ else
312
+ p.y += p.speed * dt
313
+ if p.y > HEIGHT + 12 && n_leaves > 0
314
+ lb = leaf_branches[rand(n_leaves)]
315
+ p.x = lb.tip_x
316
+ p.y = lb.tip_y
317
+ end
318
+ end
319
+ p.circle.x = p.x + Math.sin(t * 0.9 + p.phase) * p.amp
320
+ p.circle.y = p.y
321
+ p.circle.visible = petals_on
322
+ end
323
+ reseed_petals = false
324
+ end
325
+
326
+ show
@@ -0,0 +1,148 @@
1
+ # Conway's Game of Life
2
+ # Paint live cells and watch Conway's classic cellular automaton unfold.
3
+ #
4
+ # Drag to paint live cells; right-click and drag to erase.
5
+ # Space pauses, n steps one generation, r randomizes, c clears.
6
+ # The world wraps at the edges, so gliders sail forever.
7
+
8
+ require 'ruby2d'
9
+
10
+ # === Tunables ===
11
+
12
+ WIDTH = 800 # window width in pixels
13
+ HEIGHT = 600 # window height in pixels
14
+ HEADER = 40 # HUD strip height in pixels
15
+ CELL = 10 # cell size in pixels
16
+ COLS = WIDTH / CELL # grid columns
17
+ ROWS = (HEIGHT - HEADER) / CELL # grid rows
18
+ STEP_INTERVAL = 0.083 # seconds between generations
19
+ RANDOM_DENSITY = 0.2 # fraction of cells alive on randomize
20
+
21
+ ALIVE_COLOR = [0.25, 0.9, 0.65, 1]
22
+ DEAD_COLOR = [0.04, 0.06, 0.1, 1]
23
+ HEADER_BG = '#131c2e'
24
+ HEADER_RULE = '#1f2a40'
25
+ HINT_COLOR = '#cbd5e1'
26
+ DIM_COLOR = '#94a3b8'
27
+ PAUSE_COLOR = '#fbbf24'
28
+
29
+ # === Window ===
30
+
31
+ set title: "Ruby 2D ▸ Examples ▸ Conway's Game of Life", width: WIDTH, height: HEIGHT, background: '#0f172a'
32
+ set close_on_esc: true
33
+
34
+ # === HUD ===
35
+
36
+ canvas = Canvas.new(x: 0, y: HEADER, width: WIDTH, height: HEIGHT - HEADER, fill: DEAD_COLOR)
37
+ Rectangle.new(x: 0, y: 0, width: WIDTH, height: HEADER, color: HEADER_BG)
38
+ Line.new(x1: 0, y1: HEADER, x2: WIDTH, y2: HEADER, stroke_width: 1, color: HEADER_RULE)
39
+
40
+ Text.new('DRAG paint · R-DRAG erase · SPACE pause · N step · R random · C clear',
41
+ x: 14, y: 13, size: 14, color: HINT_COLOR)
42
+ paused_text = Text.new('paused', x: WIDTH - 230, y: 13, size: 14, color: PAUSE_COLOR, visible: false)
43
+ Text.new('Generation', x: WIDTH - 160, y: 13, size: 14, color: DIM_COLOR)
44
+ gen_number = Text.new('0', x: WIDTH - 70, y: 13, size: 14, color: DIM_COLOR)
45
+
46
+ # === Mutable state ===
47
+
48
+ grid = Array.new(ROWS) { Array.new(COLS) { rand < RANDOM_DENSITY ? 1 : 0 } }
49
+ next_grid = Array.new(ROWS) { Array.new(COLS, 0) }
50
+
51
+ paused = false
52
+ step_timer = STEP_INTERVAL
53
+ generation = 0
54
+ mouse_held = false
55
+ mouse_paint = 1
56
+ mouse_x = -1
57
+ mouse_y = -1
58
+
59
+ paint = lambda do |mx, my, value|
60
+ return if my < HEADER
61
+
62
+ c = mx / CELL
63
+ r = (my - HEADER) / CELL
64
+ grid[r][c] = value if r.between?(0, ROWS - 1) && c.between?(0, COLS - 1)
65
+ end
66
+
67
+ step = lambda do
68
+ ROWS.times do |r|
69
+ rm1 = (r - 1) % ROWS
70
+ rp1 = (r + 1) % ROWS
71
+ COLS.times do |c|
72
+ cm1 = (c - 1) % COLS
73
+ cp1 = (c + 1) % COLS
74
+ n = grid[rm1][cm1] + grid[rm1][c] + grid[rm1][cp1] +
75
+ grid[r][cm1] + grid[r][cp1] +
76
+ grid[rp1][cm1] + grid[rp1][c] + grid[rp1][cp1]
77
+ cell = grid[r][c]
78
+ next_grid[r][c] = (cell == 1 && (n == 2 || n == 3)) || (cell == 0 && n == 3) ? 1 : 0
79
+ end
80
+ end
81
+ grid, next_grid = next_grid, grid
82
+ generation += 1
83
+ end
84
+
85
+ # === Input ===
86
+
87
+ on :mouse_down do |event|
88
+ mouse_held = true
89
+ mouse_paint = event.button?(:right) ? 0 : 1
90
+ mouse_x = event.x
91
+ mouse_y = event.y
92
+ end
93
+
94
+ on :mouse_up do
95
+ mouse_held = false
96
+ end
97
+
98
+ on :mouse_move do |event|
99
+ mouse_x = event.x
100
+ mouse_y = event.y
101
+ end
102
+
103
+ on :key_down do |event|
104
+ case event.key
105
+ when 'space'
106
+ paused = !paused
107
+ when 'n'
108
+ step.call
109
+ when 'r'
110
+ grid.each { |row| row.map! { rand < RANDOM_DENSITY ? 1 : 0 } }
111
+ generation = 0
112
+ step_timer = STEP_INTERVAL
113
+ when 'c'
114
+ grid.each { |row| row.fill(0) }
115
+ generation = 0
116
+ step_timer = STEP_INTERVAL
117
+ end
118
+ end
119
+
120
+ # === Per-frame update ===
121
+
122
+ update do |dt|
123
+ paint.call(mouse_x, mouse_y, mouse_paint) if mouse_held
124
+
125
+ unless paused
126
+ step_timer -= dt
127
+ if step_timer <= 0
128
+ step.call
129
+ step_timer = STEP_INTERVAL
130
+ end
131
+ end
132
+
133
+ gen_number.content = generation.to_s
134
+ paused_text.visible = paused
135
+
136
+ canvas.clear
137
+ ROWS.times do |r|
138
+ COLS.times do |c|
139
+ next unless grid[r][c] == 1
140
+
141
+ canvas.fill_rectangle(x: c * CELL, y: r * CELL,
142
+ width: CELL - 1, height: CELL - 1,
143
+ color: ALIVE_COLOR)
144
+ end
145
+ end
146
+ end
147
+
148
+ show