ruby2d-rpeck-windows 0.11.1

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 (289) hide show
  1. checksums.yaml +7 -0
  2. data/assets/README.md +22 -0
  3. data/assets/Rakefile +85 -0
  4. data/assets/app.icns +0 -0
  5. data/assets/include/SDL2/SDL.h +138 -0
  6. data/assets/include/SDL2/SDL_assert.h +293 -0
  7. data/assets/include/SDL2/SDL_atomic.h +295 -0
  8. data/assets/include/SDL2/SDL_audio.h +859 -0
  9. data/assets/include/SDL2/SDL_bits.h +121 -0
  10. data/assets/include/SDL2/SDL_blendmode.h +123 -0
  11. data/assets/include/SDL2/SDL_clipboard.h +71 -0
  12. data/assets/include/SDL2/SDL_config.h +55 -0
  13. data/assets/include/SDL2/SDL_config_android.h +182 -0
  14. data/assets/include/SDL2/SDL_config_iphoneos.h +207 -0
  15. data/assets/include/SDL2/SDL_config_macosx.h +266 -0
  16. data/assets/include/SDL2/SDL_config_minimal.h +85 -0
  17. data/assets/include/SDL2/SDL_config_os2.h +188 -0
  18. data/assets/include/SDL2/SDL_config_pandora.h +135 -0
  19. data/assets/include/SDL2/SDL_config_psp.h +165 -0
  20. data/assets/include/SDL2/SDL_config_windows.h +288 -0
  21. data/assets/include/SDL2/SDL_config_winrt.h +243 -0
  22. data/assets/include/SDL2/SDL_config_wiz.h +149 -0
  23. data/assets/include/SDL2/SDL_copying.h +20 -0
  24. data/assets/include/SDL2/SDL_cpuinfo.h +299 -0
  25. data/assets/include/SDL2/SDL_egl.h +1676 -0
  26. data/assets/include/SDL2/SDL_endian.h +263 -0
  27. data/assets/include/SDL2/SDL_error.h +112 -0
  28. data/assets/include/SDL2/SDL_events.h +827 -0
  29. data/assets/include/SDL2/SDL_filesystem.h +136 -0
  30. data/assets/include/SDL2/SDL_gamecontroller.h +541 -0
  31. data/assets/include/SDL2/SDL_gesture.h +87 -0
  32. data/assets/include/SDL2/SDL_haptic.h +1247 -0
  33. data/assets/include/SDL2/SDL_hints.h +1578 -0
  34. data/assets/include/SDL2/SDL_image.h +161 -0
  35. data/assets/include/SDL2/SDL_joystick.h +499 -0
  36. data/assets/include/SDL2/SDL_keyboard.h +217 -0
  37. data/assets/include/SDL2/SDL_keycode.h +351 -0
  38. data/assets/include/SDL2/SDL_loadso.h +81 -0
  39. data/assets/include/SDL2/SDL_locale.h +101 -0
  40. data/assets/include/SDL2/SDL_log.h +211 -0
  41. data/assets/include/SDL2/SDL_main.h +180 -0
  42. data/assets/include/SDL2/SDL_messagebox.h +146 -0
  43. data/assets/include/SDL2/SDL_metal.h +117 -0
  44. data/assets/include/SDL2/SDL_misc.h +75 -0
  45. data/assets/include/SDL2/SDL_mixer.h +651 -0
  46. data/assets/include/SDL2/SDL_mouse.h +302 -0
  47. data/assets/include/SDL2/SDL_mutex.h +251 -0
  48. data/assets/include/SDL2/SDL_name.h +33 -0
  49. data/assets/include/SDL2/SDL_opengl.h +2183 -0
  50. data/assets/include/SDL2/SDL_opengl_glext.h +11180 -0
  51. data/assets/include/SDL2/SDL_opengles.h +39 -0
  52. data/assets/include/SDL2/SDL_opengles2.h +52 -0
  53. data/assets/include/SDL2/SDL_opengles2_gl2.h +621 -0
  54. data/assets/include/SDL2/SDL_opengles2_gl2ext.h +2050 -0
  55. data/assets/include/SDL2/SDL_opengles2_gl2platform.h +30 -0
  56. data/assets/include/SDL2/SDL_opengles2_khrplatform.h +282 -0
  57. data/assets/include/SDL2/SDL_pixels.h +479 -0
  58. data/assets/include/SDL2/SDL_platform.h +198 -0
  59. data/assets/include/SDL2/SDL_power.h +75 -0
  60. data/assets/include/SDL2/SDL_quit.h +58 -0
  61. data/assets/include/SDL2/SDL_rect.h +174 -0
  62. data/assets/include/SDL2/SDL_render.h +1158 -0
  63. data/assets/include/SDL2/SDL_revision.h +2 -0
  64. data/assets/include/SDL2/SDL_rwops.h +283 -0
  65. data/assets/include/SDL2/SDL_scancode.h +413 -0
  66. data/assets/include/SDL2/SDL_sensor.h +267 -0
  67. data/assets/include/SDL2/SDL_shape.h +144 -0
  68. data/assets/include/SDL2/SDL_stdinc.h +647 -0
  69. data/assets/include/SDL2/SDL_surface.h +563 -0
  70. data/assets/include/SDL2/SDL_system.h +325 -0
  71. data/assets/include/SDL2/SDL_syswm.h +354 -0
  72. data/assets/include/SDL2/SDL_test.h +69 -0
  73. data/assets/include/SDL2/SDL_test_assert.h +105 -0
  74. data/assets/include/SDL2/SDL_test_common.h +218 -0
  75. data/assets/include/SDL2/SDL_test_compare.h +69 -0
  76. data/assets/include/SDL2/SDL_test_crc32.h +124 -0
  77. data/assets/include/SDL2/SDL_test_font.h +81 -0
  78. data/assets/include/SDL2/SDL_test_fuzzer.h +384 -0
  79. data/assets/include/SDL2/SDL_test_harness.h +134 -0
  80. data/assets/include/SDL2/SDL_test_images.h +78 -0
  81. data/assets/include/SDL2/SDL_test_log.h +67 -0
  82. data/assets/include/SDL2/SDL_test_md5.h +129 -0
  83. data/assets/include/SDL2/SDL_test_memory.h +63 -0
  84. data/assets/include/SDL2/SDL_test_random.h +115 -0
  85. data/assets/include/SDL2/SDL_thread.h +366 -0
  86. data/assets/include/SDL2/SDL_timer.h +115 -0
  87. data/assets/include/SDL2/SDL_touch.h +102 -0
  88. data/assets/include/SDL2/SDL_ttf.h +294 -0
  89. data/assets/include/SDL2/SDL_types.h +29 -0
  90. data/assets/include/SDL2/SDL_version.h +162 -0
  91. data/assets/include/SDL2/SDL_video.h +1282 -0
  92. data/assets/include/SDL2/SDL_vulkan.h +276 -0
  93. data/assets/include/SDL2/begin_code.h +166 -0
  94. data/assets/include/SDL2/close_code.h +40 -0
  95. data/assets/include/glew.h +23686 -0
  96. data/assets/ios/Assets.xcassets/AppIcon.appiconset/Contents.json +98 -0
  97. data/assets/ios/Assets.xcassets/Contents.json +6 -0
  98. data/assets/ios/Base.lproj/LaunchScreen.storyboard +27 -0
  99. data/assets/ios/Info.plist +43 -0
  100. data/assets/ios/MRuby.framework/Headers/mrbconf.h +143 -0
  101. data/assets/ios/MRuby.framework/Headers/mruby/array.h +280 -0
  102. data/assets/ios/MRuby.framework/Headers/mruby/boxing_nan.h +102 -0
  103. data/assets/ios/MRuby.framework/Headers/mruby/boxing_no.h +56 -0
  104. data/assets/ios/MRuby.framework/Headers/mruby/boxing_word.h +144 -0
  105. data/assets/ios/MRuby.framework/Headers/mruby/class.h +97 -0
  106. data/assets/ios/MRuby.framework/Headers/mruby/common.h +77 -0
  107. data/assets/ios/MRuby.framework/Headers/mruby/compile.h +195 -0
  108. data/assets/ios/MRuby.framework/Headers/mruby/data.h +75 -0
  109. data/assets/ios/MRuby.framework/Headers/mruby/debug.h +67 -0
  110. data/assets/ios/MRuby.framework/Headers/mruby/dump.h +196 -0
  111. data/assets/ios/MRuby.framework/Headers/mruby/error.h +75 -0
  112. data/assets/ios/MRuby.framework/Headers/mruby/gc.h +91 -0
  113. data/assets/ios/MRuby.framework/Headers/mruby/hash.h +215 -0
  114. data/assets/ios/MRuby.framework/Headers/mruby/irep.h +75 -0
  115. data/assets/ios/MRuby.framework/Headers/mruby/istruct.h +47 -0
  116. data/assets/ios/MRuby.framework/Headers/mruby/khash.h +274 -0
  117. data/assets/ios/MRuby.framework/Headers/mruby/numeric.h +161 -0
  118. data/assets/ios/MRuby.framework/Headers/mruby/object.h +44 -0
  119. data/assets/ios/MRuby.framework/Headers/mruby/opcode.h +69 -0
  120. data/assets/ios/MRuby.framework/Headers/mruby/ops.h +117 -0
  121. data/assets/ios/MRuby.framework/Headers/mruby/proc.h +131 -0
  122. data/assets/ios/MRuby.framework/Headers/mruby/range.h +49 -0
  123. data/assets/ios/MRuby.framework/Headers/mruby/re.h +16 -0
  124. data/assets/ios/MRuby.framework/Headers/mruby/string.h +444 -0
  125. data/assets/ios/MRuby.framework/Headers/mruby/throw.h +55 -0
  126. data/assets/ios/MRuby.framework/Headers/mruby/value.h +309 -0
  127. data/assets/ios/MRuby.framework/Headers/mruby/variable.h +136 -0
  128. data/assets/ios/MRuby.framework/Headers/mruby/version.h +110 -0
  129. data/assets/ios/MRuby.framework/Headers/mruby.h +1282 -0
  130. data/assets/ios/MRuby.framework/Info.plist +20 -0
  131. data/assets/ios/MRuby.framework/MRuby +0 -0
  132. data/assets/ios/MyApp.xcodeproj/project.pbxproj +368 -0
  133. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  134. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  135. data/assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +30 -0
  136. data/assets/ios/main.c +1 -0
  137. data/assets/macos/lib/libFLAC.a +0 -0
  138. data/assets/macos/lib/libSDL2.a +0 -0
  139. data/assets/macos/lib/libSDL2_image.a +0 -0
  140. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  141. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  142. data/assets/macos/lib/libfreetype.a +0 -0
  143. data/assets/macos/lib/libjpeg.a +0 -0
  144. data/assets/macos/lib/libmodplug.a +0 -0
  145. data/assets/macos/lib/libmpg123.a +0 -0
  146. data/assets/macos/lib/libogg.a +0 -0
  147. data/assets/macos/lib/libpng16.a +0 -0
  148. data/assets/macos/lib/libtiff.a +0 -0
  149. data/assets/macos/lib/libvorbis.a +0 -0
  150. data/assets/macos/lib/libvorbisfile.a +0 -0
  151. data/assets/macos/lib/libwebp.a +0 -0
  152. data/assets/mingw/bin/SDL2.dll +0 -0
  153. data/assets/mingw/bin/SDL2_image.dll +0 -0
  154. data/assets/mingw/bin/SDL2_mixer.dll +0 -0
  155. data/assets/mingw/bin/SDL2_ttf.dll +0 -0
  156. data/assets/mingw/bin/glew32.dll +0 -0
  157. data/assets/mingw/bin/libFLAC-8.dll +0 -0
  158. data/assets/mingw/bin/libfreetype-6.dll +0 -0
  159. data/assets/mingw/bin/libjpeg-9.dll +0 -0
  160. data/assets/mingw/bin/libmodplug-1.dll +0 -0
  161. data/assets/mingw/bin/libmpg123-0.dll +0 -0
  162. data/assets/mingw/bin/libogg-0.dll +0 -0
  163. data/assets/mingw/bin/libopus-0.dll +0 -0
  164. data/assets/mingw/bin/libopusfile-0.dll +0 -0
  165. data/assets/mingw/bin/libpng16-16.dll +0 -0
  166. data/assets/mingw/bin/libtiff-5.dll +0 -0
  167. data/assets/mingw/bin/libvorbis-0.dll +0 -0
  168. data/assets/mingw/bin/libvorbisfile-3.dll +0 -0
  169. data/assets/mingw/bin/libwebp-7.dll +0 -0
  170. data/assets/mingw/bin/libwinpthread-1.dll +0 -0
  171. data/assets/mingw/bin/zlib1.dll +0 -0
  172. data/assets/mingw/lib/libSDL2.a +0 -0
  173. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  174. data/assets/mingw/lib/libSDL2_image.a +0 -0
  175. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  176. data/assets/mingw/lib/libSDL2_mixer.a +0 -0
  177. data/assets/mingw/lib/libSDL2_mixer.dll.a +0 -0
  178. data/assets/mingw/lib/libSDL2_test.a +0 -0
  179. data/assets/mingw/lib/libSDL2_ttf.a +0 -0
  180. data/assets/mingw/lib/libSDL2_ttf.dll.a +0 -0
  181. data/assets/mingw/lib/libSDL2main.a +0 -0
  182. data/assets/mingw/lib/libglew32.a +0 -0
  183. data/assets/mingw/lib/libglew32.dll.a +0 -0
  184. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +16 -0
  185. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json +6 -0
  186. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json +17 -0
  187. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +16 -0
  188. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Front.imagestacklayer/Contents.json +6 -0
  189. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +16 -0
  190. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Middle.imagestacklayer/Contents.json +6 -0
  191. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Content.imageset/Contents.json +16 -0
  192. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Back.imagestacklayer/Contents.json +6 -0
  193. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Contents.json +17 -0
  194. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Content.imageset/Contents.json +16 -0
  195. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Front.imagestacklayer/Contents.json +6 -0
  196. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json +16 -0
  197. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Small.imagestack/Middle.imagestacklayer/Contents.json +6 -0
  198. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json +32 -0
  199. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json +16 -0
  200. data/assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json +16 -0
  201. data/assets/tvos/Assets.xcassets/Contents.json +6 -0
  202. data/assets/tvos/Assets.xcassets/LaunchImage.launchimage/Contents.json +22 -0
  203. data/assets/tvos/Info.plist +30 -0
  204. data/assets/tvos/MRuby.framework/Headers/mrbconf.h +143 -0
  205. data/assets/tvos/MRuby.framework/Headers/mruby/array.h +280 -0
  206. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_nan.h +102 -0
  207. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_no.h +56 -0
  208. data/assets/tvos/MRuby.framework/Headers/mruby/boxing_word.h +144 -0
  209. data/assets/tvos/MRuby.framework/Headers/mruby/class.h +97 -0
  210. data/assets/tvos/MRuby.framework/Headers/mruby/common.h +77 -0
  211. data/assets/tvos/MRuby.framework/Headers/mruby/compile.h +195 -0
  212. data/assets/tvos/MRuby.framework/Headers/mruby/data.h +75 -0
  213. data/assets/tvos/MRuby.framework/Headers/mruby/debug.h +67 -0
  214. data/assets/tvos/MRuby.framework/Headers/mruby/dump.h +196 -0
  215. data/assets/tvos/MRuby.framework/Headers/mruby/error.h +75 -0
  216. data/assets/tvos/MRuby.framework/Headers/mruby/gc.h +91 -0
  217. data/assets/tvos/MRuby.framework/Headers/mruby/hash.h +215 -0
  218. data/assets/tvos/MRuby.framework/Headers/mruby/irep.h +75 -0
  219. data/assets/tvos/MRuby.framework/Headers/mruby/istruct.h +47 -0
  220. data/assets/tvos/MRuby.framework/Headers/mruby/khash.h +274 -0
  221. data/assets/tvos/MRuby.framework/Headers/mruby/numeric.h +161 -0
  222. data/assets/tvos/MRuby.framework/Headers/mruby/object.h +44 -0
  223. data/assets/tvos/MRuby.framework/Headers/mruby/opcode.h +69 -0
  224. data/assets/tvos/MRuby.framework/Headers/mruby/ops.h +117 -0
  225. data/assets/tvos/MRuby.framework/Headers/mruby/proc.h +131 -0
  226. data/assets/tvos/MRuby.framework/Headers/mruby/range.h +49 -0
  227. data/assets/tvos/MRuby.framework/Headers/mruby/re.h +16 -0
  228. data/assets/tvos/MRuby.framework/Headers/mruby/string.h +444 -0
  229. data/assets/tvos/MRuby.framework/Headers/mruby/throw.h +55 -0
  230. data/assets/tvos/MRuby.framework/Headers/mruby/value.h +309 -0
  231. data/assets/tvos/MRuby.framework/Headers/mruby/variable.h +136 -0
  232. data/assets/tvos/MRuby.framework/Headers/mruby/version.h +110 -0
  233. data/assets/tvos/MRuby.framework/Headers/mruby.h +1282 -0
  234. data/assets/tvos/MRuby.framework/Info.plist +20 -0
  235. data/assets/tvos/MRuby.framework/MRuby +0 -0
  236. data/assets/tvos/MyApp.xcodeproj/project.pbxproj +350 -0
  237. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  238. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  239. data/assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint +30 -0
  240. data/assets/tvos/main.c +1 -0
  241. data/bin/ruby2d +142 -0
  242. data/ext/ruby2d/common.c +185 -0
  243. data/ext/ruby2d/controllers.c +110 -0
  244. data/ext/ruby2d/extconf.rb +147 -0
  245. data/ext/ruby2d/font.c +35 -0
  246. data/ext/ruby2d/gl.c +398 -0
  247. data/ext/ruby2d/gl2.c +86 -0
  248. data/ext/ruby2d/gl3.c +305 -0
  249. data/ext/ruby2d/gles.c +249 -0
  250. data/ext/ruby2d/image.c +58 -0
  251. data/ext/ruby2d/input.c +48 -0
  252. data/ext/ruby2d/music.c +127 -0
  253. data/ext/ruby2d/ruby2d.c +1374 -0
  254. data/ext/ruby2d/ruby2d.h +656 -0
  255. data/ext/ruby2d/shapes.c +154 -0
  256. data/ext/ruby2d/sound.c +118 -0
  257. data/ext/ruby2d/text.c +22 -0
  258. data/ext/ruby2d/window.c +414 -0
  259. data/lib/ruby2d/circle.rb +43 -0
  260. data/lib/ruby2d/cli/build.rb +237 -0
  261. data/lib/ruby2d/cli/colorize.rb +10 -0
  262. data/lib/ruby2d/cli/console.rb +65 -0
  263. data/lib/ruby2d/cli/enable_console.rb +5 -0
  264. data/lib/ruby2d/cli/launch.rb +50 -0
  265. data/lib/ruby2d/color.rb +136 -0
  266. data/lib/ruby2d/dsl.rb +46 -0
  267. data/lib/ruby2d/entity.rb +17 -0
  268. data/lib/ruby2d/exceptions.rb +6 -0
  269. data/lib/ruby2d/font.rb +96 -0
  270. data/lib/ruby2d/image.rb +58 -0
  271. data/lib/ruby2d/line.rb +89 -0
  272. data/lib/ruby2d/music.rb +67 -0
  273. data/lib/ruby2d/pixel.rb +17 -0
  274. data/lib/ruby2d/quad.rb +96 -0
  275. data/lib/ruby2d/rectangle.rb +65 -0
  276. data/lib/ruby2d/renderable.rb +40 -0
  277. data/lib/ruby2d/ruby2d.so +0 -0
  278. data/lib/ruby2d/sound.rb +55 -0
  279. data/lib/ruby2d/sprite.rb +232 -0
  280. data/lib/ruby2d/square.rb +37 -0
  281. data/lib/ruby2d/text.rb +76 -0
  282. data/lib/ruby2d/texture.rb +28 -0
  283. data/lib/ruby2d/tileset.rb +87 -0
  284. data/lib/ruby2d/triangle.rb +82 -0
  285. data/lib/ruby2d/version.rb +5 -0
  286. data/lib/ruby2d/vertices.rb +84 -0
  287. data/lib/ruby2d/window.rb +673 -0
  288. data/lib/ruby2d.rb +69 -0
  289. metadata +346 -0
@@ -0,0 +1,656 @@
1
+ // ruby2d.h
2
+ #ifndef RUBY2D_H
3
+ #define RUBY2D_H
4
+
5
+ #ifdef __cplusplus
6
+ extern "C" {
7
+ #endif
8
+
9
+ #include <stdbool.h>
10
+
11
+ // Set Platform Constants //////////////////////////////////////////////////////
12
+
13
+ // Apple
14
+ #ifdef __APPLE__
15
+ #ifndef __TARGETCONDITIONALS__
16
+ #include "TargetConditionals.h"
17
+ #endif
18
+ #if TARGET_OS_OSX
19
+ #define MACOS true
20
+ #elif TARGET_OS_IOS
21
+ #define IOS true
22
+ #elif TARGET_OS_TV
23
+ #define TVOS true
24
+ #endif
25
+ #endif
26
+
27
+ // Windows
28
+ #ifdef _WIN32
29
+ #define WINDOWS true
30
+ #endif
31
+
32
+ // Windows and MinGW
33
+ #ifdef __MINGW32__
34
+ #define MINGW true
35
+ #endif
36
+
37
+ // GLES
38
+ #if defined(__arm__) || IOS || TVOS
39
+ #define GLES true
40
+ #else
41
+ #define GLES false
42
+ #endif
43
+
44
+ // Includes ////////////////////////////////////////////////////////////////////
45
+
46
+ // Define to get GNU extension functions and types, like `vasprintf()` and M_PI
47
+ #ifndef _GNU_SOURCE
48
+ #define _GNU_SOURCE 1
49
+ #endif
50
+
51
+ #if WINDOWS && !MINGW
52
+ #include <io.h>
53
+ #define F_OK 0 // For testing file existence
54
+ #else
55
+ #include <unistd.h>
56
+ #endif
57
+
58
+ #if WINDOWS
59
+ #include <stdio.h>
60
+ #include <math.h>
61
+ #include <windows.h>
62
+ // For terminal colors
63
+ #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
64
+ #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
65
+ #endif
66
+ #endif
67
+
68
+ // SDL
69
+ #if IOS || TVOS
70
+ #include "SDL2/SDL.h"
71
+ #else
72
+ #include <SDL2/SDL.h>
73
+ #endif
74
+
75
+ // If MinGW, undefine `main()` from SDL_main.c
76
+ #if MINGW
77
+ #undef main
78
+ #endif
79
+
80
+ // OpenGL
81
+ #if GLES
82
+ #if IOS || TVOS
83
+ #include "SDL2/SDL_opengles2.h"
84
+ #else
85
+ #include <SDL2/SDL_opengles2.h>
86
+ #endif
87
+ #else
88
+ #define GL_GLEXT_PROTOTYPES 1
89
+ #if WINDOWS
90
+ #include <glew.h>
91
+ #endif
92
+ #include <SDL2/SDL_opengl.h>
93
+ #endif
94
+
95
+ // SDL libraries
96
+ #if IOS || TVOS
97
+ #include "SDL2/SDL_image.h"
98
+ #include "SDL2/SDL_mixer.h"
99
+ #include "SDL2/SDL_ttf.h"
100
+ #else
101
+ #include <SDL2/SDL_image.h>
102
+ #include <SDL2/SDL_mixer.h>
103
+ #include <SDL2/SDL_ttf.h>
104
+ #endif
105
+
106
+ // Ruby 2D Definitions /////////////////////////////////////////////////////////
107
+
108
+ // Messages
109
+ #define R2D_INFO 1
110
+ #define R2D_WARN 2
111
+ #define R2D_ERROR 3
112
+
113
+ // Window attributes
114
+ #define R2D_RESIZABLE SDL_WINDOW_RESIZABLE
115
+ #define R2D_BORDERLESS SDL_WINDOW_BORDERLESS
116
+ #define R2D_FULLSCREEN SDL_WINDOW_FULLSCREEN_DESKTOP
117
+ #define R2D_HIGHDPI SDL_WINDOW_ALLOW_HIGHDPI
118
+ #define R2D_DISPLAY_WIDTH 0
119
+ #define R2D_DISPLAY_HEIGHT 0
120
+
121
+ // Viewport scaling modes
122
+ #define R2D_FIXED 1
123
+ #define R2D_EXPAND 2
124
+ #define R2D_SCALE 3
125
+ #define R2D_STRETCH 4
126
+
127
+ // Positions
128
+ #define R2D_CENTER 1
129
+ #define R2D_TOP_LEFT 2
130
+ #define R2D_TOP_RIGHT 3
131
+ #define R2D_BOTTOM_LEFT 4
132
+ #define R2D_BOTTOM_RIGHT 5
133
+
134
+ // Keyboard events
135
+ #define R2D_KEY_DOWN 1 // key is pressed
136
+ #define R2D_KEY_HELD 2 // key is held down
137
+ #define R2D_KEY_UP 3 // key is released
138
+
139
+ // Mouse events
140
+ #define R2D_MOUSE_DOWN 1 // mouse button pressed
141
+ #define R2D_MOUSE_UP 2 // mouse button released
142
+ #define R2D_MOUSE_SCROLL 3 // mouse scrolling or wheel movement
143
+ #define R2D_MOUSE_MOVE 4 // mouse movement
144
+ #define R2D_MOUSE_LEFT SDL_BUTTON_LEFT
145
+ #define R2D_MOUSE_MIDDLE SDL_BUTTON_MIDDLE
146
+ #define R2D_MOUSE_RIGHT SDL_BUTTON_RIGHT
147
+ #define R2D_MOUSE_X1 SDL_BUTTON_X1
148
+ #define R2D_MOUSE_X2 SDL_BUTTON_X2
149
+ #define R2D_MOUSE_SCROLL_NORMAL SDL_MOUSEWHEEL_NORMAL
150
+ #define R2D_MOUSE_SCROLL_INVERTED SDL_MOUSEWHEEL_FLIPPED
151
+
152
+ // Controller events
153
+ #define R2D_AXIS 1
154
+ #define R2D_BUTTON_DOWN 2
155
+ #define R2D_BUTTON_UP 3
156
+
157
+ // Controller axis labels
158
+ #define R2D_AXIS_INVALID SDL_CONTROLLER_AXIS_INVALID
159
+ #define R2D_AXIS_LEFTX SDL_CONTROLLER_AXIS_LEFTX
160
+ #define R2D_AXIS_LEFTY SDL_CONTROLLER_AXIS_LEFTY
161
+ #define R2D_AXIS_RIGHTX SDL_CONTROLLER_AXIS_RIGHTX
162
+ #define R2D_AXIS_RIGHTY SDL_CONTROLLER_AXIS_RIGHTY
163
+ #define R2D_AXIS_TRIGGERLEFT SDL_CONTROLLER_AXIS_TRIGGERLEFT
164
+ #define R2D_AXIS_TRIGGERRIGHT SDL_CONTROLLER_AXIS_TRIGGERRIGHT
165
+ #define R2D_AXIS_MAX SDL_CONTROLLER_AXIS_MAX
166
+
167
+ // Controller button labels
168
+ #define R2D_BUTTON_INVALID SDL_CONTROLLER_BUTTON_INVALID
169
+ #define R2D_BUTTON_A SDL_CONTROLLER_BUTTON_A
170
+ #define R2D_BUTTON_B SDL_CONTROLLER_BUTTON_B
171
+ #define R2D_BUTTON_X SDL_CONTROLLER_BUTTON_X
172
+ #define R2D_BUTTON_Y SDL_CONTROLLER_BUTTON_Y
173
+ #define R2D_BUTTON_BACK SDL_CONTROLLER_BUTTON_BACK
174
+ #define R2D_BUTTON_GUIDE SDL_CONTROLLER_BUTTON_GUIDE
175
+ #define R2D_BUTTON_START SDL_CONTROLLER_BUTTON_START
176
+ #define R2D_BUTTON_LEFTSTICK SDL_CONTROLLER_BUTTON_LEFTSTICK
177
+ #define R2D_BUTTON_RIGHTSTICK SDL_CONTROLLER_BUTTON_RIGHTSTICK
178
+ #define R2D_BUTTON_LEFTSHOULDER SDL_CONTROLLER_BUTTON_LEFTSHOULDER
179
+ #define R2D_BUTTON_RIGHTSHOULDER SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
180
+ #define R2D_BUTTON_DPAD_UP SDL_CONTROLLER_BUTTON_DPAD_UP
181
+ #define R2D_BUTTON_DPAD_DOWN SDL_CONTROLLER_BUTTON_DPAD_DOWN
182
+ #define R2D_BUTTON_DPAD_LEFT SDL_CONTROLLER_BUTTON_DPAD_LEFT
183
+ #define R2D_BUTTON_DPAD_RIGHT SDL_CONTROLLER_BUTTON_DPAD_RIGHT
184
+ #define R2D_BUTTON_MAX SDL_CONTROLLER_BUTTON_MAX
185
+
186
+ // Internal Shared Data ////////////////////////////////////////////////////////
187
+
188
+ extern bool R2D_diagnostics; // flag for whether to print diagnostics with R2D_Log
189
+
190
+ // Type Definitions ////////////////////////////////////////////////////////////
191
+
192
+ // R2D_Event
193
+ typedef struct {
194
+ int which;
195
+ int type;
196
+ int button;
197
+ bool dblclick;
198
+ const char *key;
199
+ int x;
200
+ int y;
201
+ int delta_x;
202
+ int delta_y;
203
+ int direction;
204
+ int axis;
205
+ int value;
206
+ } R2D_Event;
207
+
208
+ typedef void (*R2D_Update)();
209
+ typedef void (*R2D_Render)();
210
+ typedef void (*R2D_On_Key)(R2D_Event e);
211
+ typedef void (*R2D_On_Mouse)(R2D_Event e);
212
+ typedef void (*R2D_On_Controller)(R2D_Event e);
213
+
214
+ // R2D_GL_Point, for graphics calculations
215
+ typedef struct {
216
+ GLfloat x;
217
+ GLfloat y;
218
+ } R2D_GL_Point;
219
+
220
+ // R2D_Color
221
+ typedef struct {
222
+ GLfloat r;
223
+ GLfloat g;
224
+ GLfloat b;
225
+ GLfloat a;
226
+ } R2D_Color;
227
+
228
+ // R2D_Mouse
229
+ typedef struct {
230
+ int visible;
231
+ int x;
232
+ int y;
233
+ } R2D_Mouse;
234
+
235
+ // R2D_Viewport
236
+ typedef struct {
237
+ int width;
238
+ int height;
239
+ int mode;
240
+ } R2D_Viewport;
241
+
242
+ // R2D_Window
243
+ typedef struct {
244
+ SDL_Window *sdl;
245
+ SDL_GLContext glcontext;
246
+ const GLubyte *R2D_GL_VENDOR;
247
+ const GLubyte *R2D_GL_RENDERER;
248
+ const GLubyte *R2D_GL_VERSION;
249
+ GLint R2D_GL_MAJOR_VERSION;
250
+ GLint R2D_GL_MINOR_VERSION;
251
+ const GLubyte *R2D_GL_SHADING_LANGUAGE_VERSION;
252
+ const char *title;
253
+ int width;
254
+ int height;
255
+ int orig_width;
256
+ int orig_height;
257
+ R2D_Viewport viewport;
258
+ R2D_Update update;
259
+ R2D_Render render;
260
+ int flags;
261
+ R2D_Mouse mouse;
262
+ R2D_On_Key on_key;
263
+ R2D_On_Mouse on_mouse;
264
+ R2D_On_Controller on_controller;
265
+ bool vsync;
266
+ int fps_cap;
267
+ R2D_Color background;
268
+ const char *icon;
269
+ Uint32 frames;
270
+ Uint32 elapsed_ms;
271
+ Uint32 loop_ms;
272
+ Uint32 delay_ms;
273
+ double fps;
274
+ bool close;
275
+ } R2D_Window;
276
+
277
+
278
+ // R2D_Sound
279
+ typedef struct {
280
+ const char *path;
281
+ Mix_Chunk *data;
282
+ } R2D_Sound;
283
+
284
+ // R2D_Music
285
+ typedef struct {
286
+ const char *path;
287
+ Mix_Music *data;
288
+ int length; // Length of music track
289
+ } R2D_Music;
290
+
291
+ // Ruby 2D Functions ///////////////////////////////////////////////////////////
292
+
293
+ /*
294
+ * Checks if a file exists and can be accessed
295
+ */
296
+ bool R2D_FileExists(const char *path);
297
+
298
+ /*
299
+ * Logs standard messages to the console
300
+ */
301
+ void R2D_Log(int type, const char *msg, ...);
302
+
303
+ /*
304
+ * Logs Ruby 2D errors to the console, with caller and message body
305
+ */
306
+ void R2D_Error(const char *caller, const char *msg, ...);
307
+
308
+ /*
309
+ * Enable/disable logging of diagnostics
310
+ */
311
+ void R2D_Diagnostics(bool status);
312
+
313
+ /*
314
+ * Enable terminal colors in Windows
315
+ */
316
+ void R2D_Windows_EnableTerminalColors();
317
+
318
+ /*
319
+ * Initialize Ruby 2D subsystems
320
+ */
321
+ bool R2D_Init();
322
+
323
+ /*
324
+ * Gets the primary display's dimensions
325
+ */
326
+ void R2D_GetDisplayDimensions(int *w, int *h);
327
+
328
+ /*
329
+ * Quits Ruby 2D subsystems
330
+ */
331
+ void R2D_Quit(void);
332
+
333
+ // Shapes //////////////////////////////////////////////////////////////////////
334
+
335
+ /*
336
+ * Rotate a point around a given point
337
+ * Params:
338
+ * p The point to rotate
339
+ * angle The angle in degrees
340
+ * rx The x coordinate to rotate around
341
+ * ry The y coordinate to rotate around
342
+ */
343
+ R2D_GL_Point R2D_RotatePoint(R2D_GL_Point p, GLfloat angle, GLfloat rx, GLfloat ry);
344
+
345
+ /*
346
+ * Get the point to be rotated around given a position in a rectangle
347
+ */
348
+ R2D_GL_Point R2D_GetRectRotationPoint(int x, int y, int w, int h, int position);
349
+
350
+ /*
351
+ * Draw a triangle
352
+ */
353
+ void R2D_DrawTriangle(
354
+ GLfloat x1, GLfloat y1,
355
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
356
+ GLfloat x2, GLfloat y2,
357
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
358
+ GLfloat x3, GLfloat y3,
359
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3
360
+ );
361
+
362
+ /*
363
+ * Draw a quad, using two triangles
364
+ */
365
+ void R2D_DrawQuad(
366
+ GLfloat x1, GLfloat y1,
367
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
368
+ GLfloat x2, GLfloat y2,
369
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
370
+ GLfloat x3, GLfloat y3,
371
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3,
372
+ GLfloat x4, GLfloat y4,
373
+ GLfloat r4, GLfloat g4, GLfloat b4, GLfloat a4
374
+ );
375
+
376
+ /*
377
+ * Draw a line from a quad
378
+ */
379
+ void R2D_DrawLine(
380
+ GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2,
381
+ GLfloat width,
382
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
383
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
384
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3,
385
+ GLfloat r4, GLfloat g4, GLfloat b4, GLfloat a4
386
+ );
387
+
388
+ /*
389
+ * Draw a circle from triangles
390
+ */
391
+ void R2D_DrawCircle(
392
+ GLfloat x, GLfloat y, GLfloat radius, int sectors,
393
+ GLfloat r, GLfloat g, GLfloat b, GLfloat a
394
+ );
395
+
396
+ // Image ///////////////////////////////////////////////////////////////////////
397
+
398
+ /*
399
+ * Create a surface with image pixel data, given a file path
400
+ */
401
+ SDL_Surface *R2D_CreateImageSurface(const char *path);
402
+
403
+ /*
404
+ * Convert images to RGB format if they are in a different (BGR for example) format.
405
+ */
406
+ void R2D_ImageConvertToRGB(SDL_Surface *surface);
407
+
408
+ // Font ////////////////////////////////////////////////////////////////////////
409
+
410
+ /*
411
+ * Create a TTF_Font object given a path to a font and a size
412
+ */
413
+ TTF_Font *R2D_FontCreateTTFFont(const char *path, int size, const char *style);
414
+
415
+ // Text ////////////////////////////////////////////////////////////////////////
416
+
417
+ /*
418
+ * Create a SDL_Surface that contains the pixel data to render text, given a font and message
419
+ */
420
+ SDL_Surface *R2D_TextCreateSurface(TTF_Font *font, const char *message);
421
+
422
+ // Sound ///////////////////////////////////////////////////////////////////////
423
+
424
+ /*
425
+ * Create a sound, given an audio file path
426
+ */
427
+ R2D_Sound *R2D_CreateSound(const char *path);
428
+
429
+ /*
430
+ * Play the sound
431
+ */
432
+ void R2D_PlaySound(R2D_Sound *snd);
433
+
434
+ /*
435
+ * Get the sound's length
436
+ */
437
+ int R2D_GetSoundLength(R2D_Sound *snd);
438
+
439
+ /*
440
+ * Get the sound's volume
441
+ */
442
+ int R2D_GetSoundVolume(R2D_Sound *snd);
443
+
444
+ /*
445
+ * Set the sound's volume a given percentage
446
+ */
447
+ void R2D_SetSoundVolume(R2D_Sound *snd, int volume);
448
+
449
+ /*
450
+ * Get the sound mixer volume
451
+ */
452
+ int R2D_GetSoundMixVolume();
453
+
454
+ /*
455
+ * Set the sound mixer volume a given percentage
456
+ */
457
+ void R2D_SetSoundMixVolume(int volume);
458
+
459
+ /*
460
+ * Free the sound
461
+ */
462
+ void R2D_FreeSound(R2D_Sound *snd);
463
+
464
+ // Music ///////////////////////////////////////////////////////////////////////
465
+
466
+ /*
467
+ * Create the music, given an audio file path
468
+ */
469
+ R2D_Music *R2D_CreateMusic(const char *path);
470
+
471
+ /*
472
+ * Play the music
473
+ */
474
+ void R2D_PlayMusic(R2D_Music *mus, bool loop);
475
+
476
+ /*
477
+ * Pause the playing music
478
+ */
479
+ void R2D_PauseMusic();
480
+
481
+ /*
482
+ * Resume the current music
483
+ */
484
+ void R2D_ResumeMusic();
485
+
486
+ /*
487
+ * Stop the playing music; interrupts fader effects
488
+ */
489
+ void R2D_StopMusic();
490
+
491
+ /*
492
+ * Get the music volume
493
+ */
494
+ int R2D_GetMusicVolume();
495
+
496
+ /*
497
+ * Set the music volume a given percentage
498
+ */
499
+ void R2D_SetMusicVolume(int volume);
500
+
501
+ /*
502
+ * Fade out the playing music
503
+ */
504
+ void R2D_FadeOutMusic(int ms);
505
+
506
+ /*
507
+ * Get the length of the music in seconds
508
+ */
509
+ int R2D_GetMusicLength(R2D_Music *mus);
510
+
511
+ /*
512
+ * Free the music
513
+ */
514
+ void R2D_FreeMusic(R2D_Music *mus);
515
+
516
+ // Input ///////////////////////////////////////////////////////////////////////
517
+
518
+ /*
519
+ * Get the mouse coordinates relative to the viewport
520
+ */
521
+ void R2D_GetMouseOnViewport(R2D_Window *window, int wx, int wy, int *x, int *y);
522
+
523
+ /*
524
+ * Show the cursor over the window
525
+ */
526
+ void R2D_ShowCursor();
527
+
528
+ /*
529
+ * Hide the cursor over the window
530
+ */
531
+ void R2D_HideCursor();
532
+
533
+ // Controllers /////////////////////////////////////////////////////////////////
534
+
535
+ /*
536
+ * Add controller mapping from string
537
+ */
538
+ void R2D_AddControllerMapping(const char *map);
539
+
540
+ /*
541
+ * Load controller mappings from the specified file
542
+ */
543
+ void R2D_AddControllerMappingsFromFile(const char *path);
544
+
545
+ /*
546
+ * Check if joystick is a controller
547
+ */
548
+ bool R2D_IsController(SDL_JoystickID id);
549
+
550
+ /*
551
+ * Open controllers and joysticks
552
+ */
553
+ void R2D_OpenControllers();
554
+
555
+ // Window //////////////////////////////////////////////////////////////////////
556
+
557
+ /*
558
+ * Create a window
559
+ */
560
+ R2D_Window *R2D_CreateWindow(
561
+ const char *title, int width, int height, R2D_Update, R2D_Render, int flags
562
+ );
563
+
564
+ /*
565
+ * Show the window
566
+ */
567
+ int R2D_Show(R2D_Window *window);
568
+
569
+ /*
570
+ * Set the icon for the window
571
+ */
572
+ void R2D_SetIcon(R2D_Window *window, const char *icon);
573
+
574
+ /*
575
+ * Take a screenshot of the window
576
+ */
577
+ void R2D_Screenshot(R2D_Window *window, const char *path);
578
+
579
+ /*
580
+ * Close the window
581
+ */
582
+ int R2D_Close(R2D_Window *window);
583
+
584
+ /*
585
+ * Free all resources
586
+ */
587
+ int R2D_FreeWindow(R2D_Window *window);
588
+
589
+ // Ruby 2D OpenGL Functions ////////////////////////////////////////////////////
590
+
591
+ int R2D_GL_Init(R2D_Window *window);
592
+ void R2D_GL_PrintError(const char *error);
593
+ void R2D_GL_PrintContextInfo(R2D_Window *window);
594
+ void R2D_GL_StoreContextInfo(R2D_Window *window);
595
+ GLuint R2D_GL_LoadShader(GLenum type, const GLchar *shaderSrc, const char *shaderName);
596
+ int R2D_GL_CheckLinked(GLuint program, const char *name);
597
+ void R2D_GL_GetViewportScale(R2D_Window *window, int *w, int *h, double *scale);
598
+ void R2D_GL_SetViewport(R2D_Window *window);
599
+ void R2D_GL_CreateTexture(
600
+ GLuint *id, GLint format,
601
+ int w, int h,
602
+ const GLvoid *data, GLint filter);
603
+ void R2D_GL_DrawTriangle(
604
+ GLfloat x1, GLfloat y1,
605
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
606
+ GLfloat x2, GLfloat y2,
607
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
608
+ GLfloat x3, GLfloat y3,
609
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
610
+ void R2D_GL_DrawTexture(GLfloat coordinates[], GLfloat texture_coordinates[], GLfloat color[], int texture_id);
611
+ void R2D_GL_FreeTexture(GLuint *id);
612
+ void R2D_GL_Clear(R2D_Color clr);
613
+ void R2D_GL_FlushBuffers();
614
+
615
+ // OpenGL & GLES Internal Functions ////////////////////////////////////////////
616
+
617
+ #if GLES
618
+ int R2D_GLES_Init();
619
+ void R2D_GLES_ApplyProjection(GLfloat orthoMatrix[16]);
620
+ void R2D_GLES_DrawTriangle(
621
+ GLfloat x1, GLfloat y1,
622
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
623
+ GLfloat x2, GLfloat y2,
624
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
625
+ GLfloat x3, GLfloat y3,
626
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
627
+ void R2D_GLES_DrawTexture(GLfloat coordinates[], GLfloat texture_coordinates[], GLfloat color[], int texture_id);
628
+ #else
629
+ int R2D_GL2_Init();
630
+ int R2D_GL3_Init();
631
+ void R2D_GL2_ApplyProjection(int w, int h);
632
+ void R2D_GL3_ApplyProjection(GLfloat orthoMatrix[16]);
633
+ void R2D_GL2_DrawTriangle(
634
+ GLfloat x1, GLfloat y1,
635
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
636
+ GLfloat x2, GLfloat y2,
637
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
638
+ GLfloat x3, GLfloat y3,
639
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
640
+ void R2D_GL3_DrawTriangle(
641
+ GLfloat x1, GLfloat y1,
642
+ GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
643
+ GLfloat x2, GLfloat y2,
644
+ GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
645
+ GLfloat x3, GLfloat y3,
646
+ GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
647
+ void R2D_GL2_DrawTexture(GLfloat coordinates[], GLfloat texture_coordinates[], GLfloat color[], int texture_id);
648
+ void R2D_GL3_DrawTexture(GLfloat coordinates[], GLfloat texture_coordinates[], GLfloat color[], int texture_id);
649
+ void R2D_GL3_FlushBuffers();
650
+ #endif
651
+
652
+ #ifdef __cplusplus
653
+ }
654
+ #endif
655
+
656
+ #endif