ruby2d 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. checksums.yaml +4 -4
  2. data/assets/README.md +7 -8
  3. data/assets/Rakefile +85 -0
  4. data/assets/include/SDL2/SDL.h +4 -1
  5. data/assets/include/SDL2/SDL_assert.h +3 -1
  6. data/assets/include/SDL2/SDL_atomic.h +20 -2
  7. data/assets/include/SDL2/SDL_audio.h +47 -14
  8. data/assets/include/SDL2/SDL_bits.h +10 -1
  9. data/assets/include/SDL2/SDL_blendmode.h +10 -7
  10. data/assets/include/SDL2/SDL_clipboard.h +1 -1
  11. data/assets/include/SDL2/SDL_config.h +24 -390
  12. data/assets/include/SDL2/SDL_config_android.h +182 -0
  13. data/assets/include/SDL2/SDL_config_iphoneos.h +207 -0
  14. data/assets/include/SDL2/SDL_config_macosx.h +266 -0
  15. data/assets/include/SDL2/SDL_config_minimal.h +85 -0
  16. data/assets/include/SDL2/SDL_config_os2.h +188 -0
  17. data/assets/include/SDL2/SDL_config_pandora.h +135 -0
  18. data/assets/include/SDL2/SDL_config_psp.h +165 -0
  19. data/assets/include/SDL2/SDL_config_windows.h +288 -0
  20. data/assets/include/SDL2/SDL_config_winrt.h +243 -0
  21. data/assets/include/SDL2/SDL_config_wiz.h +149 -0
  22. data/assets/include/SDL2/SDL_copying.h +20 -0
  23. data/assets/include/SDL2/SDL_cpuinfo.h +119 -8
  24. data/assets/include/SDL2/SDL_egl.h +4 -1
  25. data/assets/include/SDL2/SDL_endian.h +6 -3
  26. data/assets/include/SDL2/SDL_error.h +38 -2
  27. data/assets/include/SDL2/SDL_events.h +67 -28
  28. data/assets/include/SDL2/SDL_filesystem.h +1 -1
  29. data/assets/include/SDL2/SDL_gamecontroller.h +160 -9
  30. data/assets/include/SDL2/SDL_gesture.h +1 -1
  31. data/assets/include/SDL2/SDL_haptic.h +10 -1
  32. data/assets/include/SDL2/SDL_hints.h +460 -17
  33. data/assets/include/SDL2/SDL_image.h +2 -2
  34. data/assets/include/SDL2/SDL_joystick.h +115 -24
  35. data/assets/include/SDL2/SDL_keyboard.h +1 -1
  36. data/assets/include/SDL2/SDL_keycode.h +11 -9
  37. data/assets/include/SDL2/SDL_loadso.h +1 -1
  38. data/assets/include/SDL2/SDL_locale.h +101 -0
  39. data/assets/include/SDL2/SDL_log.h +3 -3
  40. data/assets/include/SDL2/SDL_main.h +28 -16
  41. data/assets/include/SDL2/SDL_messagebox.h +6 -4
  42. data/assets/include/SDL2/SDL_metal.h +117 -0
  43. data/assets/include/SDL2/SDL_misc.h +75 -0
  44. data/assets/include/SDL2/SDL_mouse.h +1 -1
  45. data/assets/include/SDL2/SDL_mutex.h +1 -1
  46. data/assets/include/SDL2/SDL_name.h +1 -1
  47. data/assets/include/SDL2/SDL_opengl.h +1 -1
  48. data/assets/include/SDL2/SDL_opengl_glext.h +3 -0
  49. data/assets/include/SDL2/SDL_opengles.h +1 -1
  50. data/assets/include/SDL2/SDL_opengles2.h +1 -1
  51. data/assets/include/SDL2/SDL_pixels.h +27 -18
  52. data/assets/include/SDL2/SDL_platform.h +1 -1
  53. data/assets/include/SDL2/SDL_power.h +1 -1
  54. data/assets/include/SDL2/SDL_quit.h +1 -1
  55. data/assets/include/SDL2/SDL_rect.h +29 -3
  56. data/assets/include/SDL2/SDL_render.h +230 -3
  57. data/assets/include/SDL2/SDL_revision.h +2 -2
  58. data/assets/include/SDL2/SDL_rwops.h +51 -22
  59. data/assets/include/SDL2/SDL_scancode.h +2 -2
  60. data/assets/include/SDL2/SDL_sensor.h +28 -12
  61. data/assets/include/SDL2/SDL_shape.h +1 -1
  62. data/assets/include/SDL2/SDL_stdinc.h +44 -4
  63. data/assets/include/SDL2/SDL_surface.h +12 -2
  64. data/assets/include/SDL2/SDL_system.h +50 -4
  65. data/assets/include/SDL2/SDL_syswm.h +39 -9
  66. data/assets/include/SDL2/SDL_test.h +1 -1
  67. data/assets/include/SDL2/SDL_test_assert.h +1 -1
  68. data/assets/include/SDL2/SDL_test_common.h +32 -2
  69. data/assets/include/SDL2/SDL_test_compare.h +1 -1
  70. data/assets/include/SDL2/SDL_test_crc32.h +1 -1
  71. data/assets/include/SDL2/SDL_test_font.h +1 -1
  72. data/assets/include/SDL2/SDL_test_fuzzer.h +1 -1
  73. data/assets/include/SDL2/SDL_test_harness.h +1 -1
  74. data/assets/include/SDL2/SDL_test_images.h +1 -1
  75. data/assets/include/SDL2/SDL_test_log.h +1 -1
  76. data/assets/include/SDL2/SDL_test_md5.h +1 -1
  77. data/assets/include/SDL2/SDL_test_memory.h +3 -3
  78. data/assets/include/SDL2/SDL_test_random.h +1 -1
  79. data/assets/include/SDL2/SDL_thread.h +34 -11
  80. data/assets/include/SDL2/SDL_timer.h +1 -1
  81. data/assets/include/SDL2/SDL_touch.h +17 -1
  82. data/assets/include/SDL2/SDL_types.h +1 -1
  83. data/assets/include/SDL2/SDL_version.h +2 -2
  84. data/assets/include/SDL2/SDL_video.h +11 -5
  85. data/assets/include/SDL2/SDL_vulkan.h +9 -11
  86. data/assets/include/SDL2/begin_code.h +8 -9
  87. data/assets/include/SDL2/close_code.h +4 -1
  88. data/assets/macos/lib/libFLAC.a +0 -0
  89. data/assets/macos/lib/libSDL2.a +0 -0
  90. data/assets/macos/lib/libSDL2_image.a +0 -0
  91. data/assets/macos/lib/libSDL2_mixer.a +0 -0
  92. data/assets/macos/lib/libSDL2_ttf.a +0 -0
  93. data/assets/macos/lib/libfreetype.a +0 -0
  94. data/assets/macos/lib/libjpeg.a +0 -0
  95. data/assets/macos/lib/libmpg123.a +0 -0
  96. data/assets/macos/lib/libogg.a +0 -0
  97. data/assets/macos/lib/libpng16.a +0 -0
  98. data/assets/macos/lib/libtiff.a +0 -0
  99. data/assets/macos/lib/libvorbis.a +0 -0
  100. data/assets/macos/lib/libvorbisfile.a +0 -0
  101. data/assets/macos/lib/libwebp.a +0 -0
  102. data/assets/mingw/bin/SDL2.dll +0 -0
  103. data/assets/mingw/bin/SDL2_image.dll +0 -0
  104. data/assets/mingw/bin/libpng16-16.dll +0 -0
  105. data/assets/mingw/bin/libtiff-5.dll +0 -0
  106. data/assets/mingw/bin/libwebp-7.dll +0 -0
  107. data/assets/mingw/lib/libSDL2.a +0 -0
  108. data/assets/mingw/lib/libSDL2.dll.a +0 -0
  109. data/assets/mingw/lib/libSDL2_image.a +0 -0
  110. data/assets/mingw/lib/libSDL2_image.dll.a +0 -0
  111. data/assets/mingw/lib/libSDL2_test.a +0 -0
  112. data/assets/mingw/lib/libSDL2main.a +0 -0
  113. data/bin/ruby2d +2 -1
  114. data/{assets/linux/simple2d/src/simple2d.c → ext/ruby2d/common.c} +32 -32
  115. data/{assets/linux/simple2d/src → ext/ruby2d}/controllers.c +17 -17
  116. data/ext/ruby2d/extconf.rb +6 -36
  117. data/{assets/linux/simple2d/src → ext/ruby2d}/gl.c +106 -85
  118. data/{assets/linux/simple2d/src → ext/ruby2d}/gl2.c +35 -20
  119. data/{assets/linux/simple2d/src → ext/ruby2d}/gl3.c +146 -58
  120. data/{assets/linux/simple2d/src → ext/ruby2d}/gles.c +41 -26
  121. data/{assets/linux/simple2d/src → ext/ruby2d}/image.c +16 -16
  122. data/{assets/linux/simple2d/src → ext/ruby2d}/input.c +8 -8
  123. data/{assets/linux/simple2d/src → ext/ruby2d}/music.c +30 -17
  124. data/ext/ruby2d/ruby2d.c +427 -290
  125. data/ext/ruby2d/ruby2d.h +789 -0
  126. data/{assets/linux/simple2d/src → ext/ruby2d}/shapes.c +18 -18
  127. data/ext/ruby2d/sound.c +118 -0
  128. data/{assets/linux/simple2d/src → ext/ruby2d}/sprite.c +16 -16
  129. data/{assets/linux/simple2d/src → ext/ruby2d}/text.c +22 -22
  130. data/ext/ruby2d/tileset.c +30 -0
  131. data/{assets/linux/simple2d/src → ext/ruby2d}/window.c +71 -60
  132. data/lib/ruby2d.rb +5 -2
  133. data/lib/ruby2d/circle.rb +18 -2
  134. data/lib/ruby2d/cli/build.rb +3 -8
  135. data/lib/ruby2d/cli/colorize.rb +10 -0
  136. data/lib/ruby2d/dsl.rb +16 -9
  137. data/lib/ruby2d/entity.rb +17 -0
  138. data/lib/ruby2d/font.rb +4 -3
  139. data/lib/ruby2d/image.rb +24 -1
  140. data/lib/ruby2d/line.rb +20 -0
  141. data/lib/ruby2d/music.rb +5 -0
  142. data/lib/ruby2d/pixel.rb +17 -0
  143. data/lib/ruby2d/quad.rb +18 -0
  144. data/lib/ruby2d/rectangle.rb +11 -2
  145. data/lib/ruby2d/renderable.rb +4 -8
  146. data/lib/ruby2d/sound.rb +5 -0
  147. data/lib/ruby2d/sprite.rb +35 -3
  148. data/lib/ruby2d/square.rb +9 -0
  149. data/lib/ruby2d/text.rb +22 -1
  150. data/lib/ruby2d/tileset.rb +69 -0
  151. data/lib/ruby2d/triangle.rb +16 -0
  152. data/lib/ruby2d/version.rb +1 -1
  153. data/lib/ruby2d/window.rb +249 -22
  154. metadata +41 -27
  155. data/assets/include/simple2d.h +0 -735
  156. data/assets/linux/simple2d/Makefile +0 -250
  157. data/assets/linux/simple2d/bin/simple2d.sh +0 -1249
  158. data/assets/linux/simple2d/include/simple2d.h +0 -735
  159. data/assets/linux/simple2d/src/sound.c +0 -56
  160. data/assets/macos/lib/libsimple2d.a +0 -0
  161. data/assets/mingw/lib/libsimple2d.a +0 -0
  162. data/lib/ruby2d/colorize.rb +0 -10
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2d
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Black
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-26 00:00:00.000000000 Z
11
+ date: 2021-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -33,6 +33,7 @@ extensions:
33
33
  extra_rdoc_files: []
34
34
  files:
35
35
  - assets/README.md
36
+ - assets/Rakefile
36
37
  - assets/app.icns
37
38
  - assets/include/SDL2/SDL.h
38
39
  - assets/include/SDL2/SDL_assert.h
@@ -42,6 +43,17 @@ files:
42
43
  - assets/include/SDL2/SDL_blendmode.h
43
44
  - assets/include/SDL2/SDL_clipboard.h
44
45
  - assets/include/SDL2/SDL_config.h
46
+ - assets/include/SDL2/SDL_config_android.h
47
+ - assets/include/SDL2/SDL_config_iphoneos.h
48
+ - assets/include/SDL2/SDL_config_macosx.h
49
+ - assets/include/SDL2/SDL_config_minimal.h
50
+ - assets/include/SDL2/SDL_config_os2.h
51
+ - assets/include/SDL2/SDL_config_pandora.h
52
+ - assets/include/SDL2/SDL_config_psp.h
53
+ - assets/include/SDL2/SDL_config_windows.h
54
+ - assets/include/SDL2/SDL_config_winrt.h
55
+ - assets/include/SDL2/SDL_config_wiz.h
56
+ - assets/include/SDL2/SDL_copying.h
45
57
  - assets/include/SDL2/SDL_cpuinfo.h
46
58
  - assets/include/SDL2/SDL_egl.h
47
59
  - assets/include/SDL2/SDL_endian.h
@@ -57,9 +69,12 @@ files:
57
69
  - assets/include/SDL2/SDL_keyboard.h
58
70
  - assets/include/SDL2/SDL_keycode.h
59
71
  - assets/include/SDL2/SDL_loadso.h
72
+ - assets/include/SDL2/SDL_locale.h
60
73
  - assets/include/SDL2/SDL_log.h
61
74
  - assets/include/SDL2/SDL_main.h
62
75
  - assets/include/SDL2/SDL_messagebox.h
76
+ - assets/include/SDL2/SDL_metal.h
77
+ - assets/include/SDL2/SDL_misc.h
63
78
  - assets/include/SDL2/SDL_mixer.h
64
79
  - assets/include/SDL2/SDL_mouse.h
65
80
  - assets/include/SDL2/SDL_mutex.h
@@ -111,7 +126,6 @@ files:
111
126
  - assets/include/SDL2/begin_code.h
112
127
  - assets/include/SDL2/close_code.h
113
128
  - assets/include/glew.h
114
- - assets/include/simple2d.h
115
129
  - assets/ios/Assets.xcassets/AppIcon.appiconset/Contents.json
116
130
  - assets/ios/Assets.xcassets/Contents.json
117
131
  - assets/ios/Base.lproj/LaunchScreen.storyboard
@@ -153,23 +167,6 @@ files:
153
167
  - assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
154
168
  - assets/ios/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint
155
169
  - assets/ios/main.c
156
- - assets/linux/simple2d/Makefile
157
- - assets/linux/simple2d/bin/simple2d.sh
158
- - assets/linux/simple2d/include/simple2d.h
159
- - assets/linux/simple2d/src/controllers.c
160
- - assets/linux/simple2d/src/gl.c
161
- - assets/linux/simple2d/src/gl2.c
162
- - assets/linux/simple2d/src/gl3.c
163
- - assets/linux/simple2d/src/gles.c
164
- - assets/linux/simple2d/src/image.c
165
- - assets/linux/simple2d/src/input.c
166
- - assets/linux/simple2d/src/music.c
167
- - assets/linux/simple2d/src/shapes.c
168
- - assets/linux/simple2d/src/simple2d.c
169
- - assets/linux/simple2d/src/sound.c
170
- - assets/linux/simple2d/src/sprite.c
171
- - assets/linux/simple2d/src/text.c
172
- - assets/linux/simple2d/src/window.c
173
170
  - assets/macos/lib/libFLAC.a
174
171
  - assets/macos/lib/libSDL2.a
175
172
  - assets/macos/lib/libSDL2_image.a
@@ -180,7 +177,6 @@ files:
180
177
  - assets/macos/lib/libmpg123.a
181
178
  - assets/macos/lib/libogg.a
182
179
  - assets/macos/lib/libpng16.a
183
- - assets/macos/lib/libsimple2d.a
184
180
  - assets/macos/lib/libtiff.a
185
181
  - assets/macos/lib/libvorbis.a
186
182
  - assets/macos/lib/libvorbisfile.a
@@ -216,7 +212,6 @@ files:
216
212
  - assets/mingw/lib/libSDL2main.a
217
213
  - assets/mingw/lib/libglew32.a
218
214
  - assets/mingw/lib/libglew32.dll.a
219
- - assets/mingw/lib/libsimple2d.a
220
215
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
221
216
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Back.imagestacklayer/Contents.json
222
217
  - assets/tvos/Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon - Large.imagestack/Contents.json
@@ -276,22 +271,40 @@ files:
276
271
  - assets/tvos/MyApp.xcodeproj/project.xcworkspace/xcshareddata/MyApp.xcscmblueprint
277
272
  - assets/tvos/main.c
278
273
  - bin/ruby2d
274
+ - ext/ruby2d/common.c
275
+ - ext/ruby2d/controllers.c
279
276
  - ext/ruby2d/extconf.rb
277
+ - ext/ruby2d/gl.c
278
+ - ext/ruby2d/gl2.c
279
+ - ext/ruby2d/gl3.c
280
+ - ext/ruby2d/gles.c
281
+ - ext/ruby2d/image.c
282
+ - ext/ruby2d/input.c
283
+ - ext/ruby2d/music.c
280
284
  - ext/ruby2d/ruby2d.c
285
+ - ext/ruby2d/ruby2d.h
286
+ - ext/ruby2d/shapes.c
287
+ - ext/ruby2d/sound.c
288
+ - ext/ruby2d/sprite.c
289
+ - ext/ruby2d/text.c
290
+ - ext/ruby2d/tileset.c
291
+ - ext/ruby2d/window.c
281
292
  - lib/ruby2d.rb
282
293
  - lib/ruby2d/circle.rb
283
294
  - lib/ruby2d/cli/build.rb
295
+ - lib/ruby2d/cli/colorize.rb
284
296
  - lib/ruby2d/cli/console.rb
285
297
  - lib/ruby2d/cli/enable_console.rb
286
298
  - lib/ruby2d/cli/launch.rb
287
299
  - lib/ruby2d/color.rb
288
- - lib/ruby2d/colorize.rb
289
300
  - lib/ruby2d/dsl.rb
301
+ - lib/ruby2d/entity.rb
290
302
  - lib/ruby2d/exceptions.rb
291
303
  - lib/ruby2d/font.rb
292
304
  - lib/ruby2d/image.rb
293
305
  - lib/ruby2d/line.rb
294
306
  - lib/ruby2d/music.rb
307
+ - lib/ruby2d/pixel.rb
295
308
  - lib/ruby2d/quad.rb
296
309
  - lib/ruby2d/rectangle.rb
297
310
  - lib/ruby2d/renderable.rb
@@ -299,6 +312,7 @@ files:
299
312
  - lib/ruby2d/sprite.rb
300
313
  - lib/ruby2d/square.rb
301
314
  - lib/ruby2d/text.rb
315
+ - lib/ruby2d/tileset.rb
302
316
  - lib/ruby2d/triangle.rb
303
317
  - lib/ruby2d/version.rb
304
318
  - lib/ruby2d/window.rb
@@ -306,7 +320,7 @@ homepage: http://www.ruby2d.com
306
320
  licenses:
307
321
  - MIT
308
322
  metadata: {}
309
- post_install_message:
323
+ post_install_message:
310
324
  rdoc_options: []
311
325
  require_paths:
312
326
  - lib
@@ -321,8 +335,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
335
  - !ruby/object:Gem::Version
322
336
  version: '0'
323
337
  requirements: []
324
- rubygems_version: 3.0.3
325
- signing_key:
338
+ rubygems_version: 3.2.24
339
+ signing_key:
326
340
  specification_version: 4
327
341
  summary: Ruby 2D
328
342
  test_files: []
@@ -1,735 +0,0 @@
1
- // simple2d.h
2
-
3
- #ifdef __cplusplus
4
- extern "C" {
5
- #endif
6
-
7
- #include <stdbool.h>
8
-
9
- // Set Platform Constants //////////////////////////////////////////////////////
10
-
11
- // Apple
12
- #ifdef __APPLE__
13
- #ifndef __TARGETCONDITIONALS__
14
- #include "TargetConditionals.h"
15
- #endif
16
- #if TARGET_OS_OSX
17
- #define MACOS true
18
- #elif TARGET_OS_IOS
19
- #define IOS true
20
- #elif TARGET_OS_TV
21
- #define TVOS true
22
- #endif
23
- #endif
24
-
25
- // Windows
26
- #ifdef _WIN32
27
- #define WINDOWS true
28
- #endif
29
-
30
- // Windows and MinGW
31
- #ifdef __MINGW32__
32
- #define MINGW true
33
- #endif
34
-
35
- // GLES
36
- #if defined(__arm__) || IOS || TVOS
37
- #define GLES true
38
- #else
39
- #define GLES false
40
- #endif
41
-
42
- // Includes ////////////////////////////////////////////////////////////////////
43
-
44
- // Define to get GNU extension functions and types, like `vasprintf()` and M_PI
45
- #ifndef _GNU_SOURCE
46
- #define _GNU_SOURCE 1
47
- #endif
48
-
49
- #if WINDOWS && !MINGW
50
- #include <io.h>
51
- #define F_OK 0 // For testing file existence
52
- #else
53
- #include <unistd.h>
54
- #endif
55
-
56
- #if WINDOWS
57
- #include <stdio.h>
58
- #include <math.h>
59
- #include <windows.h>
60
- // For terminal colors
61
- #ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
62
- #define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
63
- #endif
64
- #endif
65
-
66
- // SDL
67
- #if IOS || TVOS
68
- #include "SDL2/SDL.h"
69
- #else
70
- #include <SDL2/SDL.h>
71
- #endif
72
-
73
- // If MinGW, undefine `main()` from SDL_main.c
74
- #if MINGW
75
- #undef main
76
- #endif
77
-
78
- // OpenGL
79
- #if GLES
80
- #if IOS || TVOS
81
- #include "SDL2/SDL_opengles2.h"
82
- #else
83
- #include <SDL2/SDL_opengles2.h>
84
- #endif
85
- #else
86
- #define GL_GLEXT_PROTOTYPES 1
87
- #if WINDOWS
88
- #include <glew.h>
89
- #endif
90
- #include <SDL2/SDL_opengl.h>
91
- #endif
92
-
93
- // SDL libraries
94
- #if IOS || TVOS
95
- #include "SDL2/SDL_image.h"
96
- #include "SDL2/SDL_mixer.h"
97
- #include "SDL2/SDL_ttf.h"
98
- #else
99
- #include <SDL2/SDL_image.h>
100
- #include <SDL2/SDL_mixer.h>
101
- #include <SDL2/SDL_ttf.h>
102
- #endif
103
-
104
- // Simple 2D Definitions ///////////////////////////////////////////////////////
105
-
106
- // Messages
107
- #define S2D_INFO 1
108
- #define S2D_WARN 2
109
- #define S2D_ERROR 3
110
-
111
- // Window attributes
112
- #define S2D_RESIZABLE SDL_WINDOW_RESIZABLE
113
- #define S2D_BORDERLESS SDL_WINDOW_BORDERLESS
114
- #define S2D_FULLSCREEN SDL_WINDOW_FULLSCREEN_DESKTOP
115
- #define S2D_HIGHDPI SDL_WINDOW_ALLOW_HIGHDPI
116
- #define S2D_DISPLAY_WIDTH 0
117
- #define S2D_DISPLAY_HEIGHT 0
118
-
119
- // Viewport scaling modes
120
- #define S2D_FIXED 1
121
- #define S2D_EXPAND 2
122
- #define S2D_SCALE 3
123
- #define S2D_STRETCH 4
124
-
125
- // Positions
126
- #define S2D_CENTER 1
127
- #define S2D_TOP_LEFT 2
128
- #define S2D_TOP_RIGHT 3
129
- #define S2D_BOTTOM_LEFT 4
130
- #define S2D_BOTTOM_RIGHT 5
131
-
132
- // Keyboard events
133
- #define S2D_KEY_DOWN 1 // key is pressed
134
- #define S2D_KEY_HELD 2 // key is held down
135
- #define S2D_KEY_UP 3 // key is released
136
-
137
- // Mouse events
138
- #define S2D_MOUSE_DOWN 1 // mouse button pressed
139
- #define S2D_MOUSE_UP 2 // mouse button released
140
- #define S2D_MOUSE_SCROLL 3 // mouse scrolling or wheel movement
141
- #define S2D_MOUSE_MOVE 4 // mouse movement
142
- #define S2D_MOUSE_LEFT SDL_BUTTON_LEFT
143
- #define S2D_MOUSE_MIDDLE SDL_BUTTON_MIDDLE
144
- #define S2D_MOUSE_RIGHT SDL_BUTTON_RIGHT
145
- #define S2D_MOUSE_X1 SDL_BUTTON_X1
146
- #define S2D_MOUSE_X2 SDL_BUTTON_X2
147
- #define S2D_MOUSE_SCROLL_NORMAL SDL_MOUSEWHEEL_NORMAL
148
- #define S2D_MOUSE_SCROLL_INVERTED SDL_MOUSEWHEEL_FLIPPED
149
-
150
- // Controller events
151
- #define S2D_AXIS 1
152
- #define S2D_BUTTON_DOWN 2
153
- #define S2D_BUTTON_UP 3
154
-
155
- // Controller axis labels
156
- #define S2D_AXIS_INVALID SDL_CONTROLLER_AXIS_INVALID
157
- #define S2D_AXIS_LEFTX SDL_CONTROLLER_AXIS_LEFTX
158
- #define S2D_AXIS_LEFTY SDL_CONTROLLER_AXIS_LEFTY
159
- #define S2D_AXIS_RIGHTX SDL_CONTROLLER_AXIS_RIGHTX
160
- #define S2D_AXIS_RIGHTY SDL_CONTROLLER_AXIS_RIGHTY
161
- #define S2D_AXIS_TRIGGERLEFT SDL_CONTROLLER_AXIS_TRIGGERLEFT
162
- #define S2D_AXIS_TRIGGERRIGHT SDL_CONTROLLER_AXIS_TRIGGERRIGHT
163
- #define S2D_AXIS_MAX SDL_CONTROLLER_AXIS_MAX
164
-
165
- // Controller button labels
166
- #define S2D_BUTTON_INVALID SDL_CONTROLLER_BUTTON_INVALID
167
- #define S2D_BUTTON_A SDL_CONTROLLER_BUTTON_A
168
- #define S2D_BUTTON_B SDL_CONTROLLER_BUTTON_B
169
- #define S2D_BUTTON_X SDL_CONTROLLER_BUTTON_X
170
- #define S2D_BUTTON_Y SDL_CONTROLLER_BUTTON_Y
171
- #define S2D_BUTTON_BACK SDL_CONTROLLER_BUTTON_BACK
172
- #define S2D_BUTTON_GUIDE SDL_CONTROLLER_BUTTON_GUIDE
173
- #define S2D_BUTTON_START SDL_CONTROLLER_BUTTON_START
174
- #define S2D_BUTTON_LEFTSTICK SDL_CONTROLLER_BUTTON_LEFTSTICK
175
- #define S2D_BUTTON_RIGHTSTICK SDL_CONTROLLER_BUTTON_RIGHTSTICK
176
- #define S2D_BUTTON_LEFTSHOULDER SDL_CONTROLLER_BUTTON_LEFTSHOULDER
177
- #define S2D_BUTTON_RIGHTSHOULDER SDL_CONTROLLER_BUTTON_RIGHTSHOULDER
178
- #define S2D_BUTTON_DPAD_UP SDL_CONTROLLER_BUTTON_DPAD_UP
179
- #define S2D_BUTTON_DPAD_DOWN SDL_CONTROLLER_BUTTON_DPAD_DOWN
180
- #define S2D_BUTTON_DPAD_LEFT SDL_CONTROLLER_BUTTON_DPAD_LEFT
181
- #define S2D_BUTTON_DPAD_RIGHT SDL_CONTROLLER_BUTTON_DPAD_RIGHT
182
- #define S2D_BUTTON_MAX SDL_CONTROLLER_BUTTON_MAX
183
-
184
- // Internal Shared Data ////////////////////////////////////////////////////////
185
-
186
- extern bool S2D_diagnostics; // flag for whether to print diagnostics with S2D_Log
187
-
188
- // Type Definitions ////////////////////////////////////////////////////////////
189
-
190
- // S2D_Event
191
- typedef struct {
192
- int which;
193
- int type;
194
- int button;
195
- bool dblclick;
196
- const char *key;
197
- int x;
198
- int y;
199
- int delta_x;
200
- int delta_y;
201
- int direction;
202
- int axis;
203
- int value;
204
- } S2D_Event;
205
-
206
- typedef void (*S2D_Update)();
207
- typedef void (*S2D_Render)();
208
- typedef void (*S2D_On_Key)(S2D_Event e);
209
- typedef void (*S2D_On_Mouse)(S2D_Event e);
210
- typedef void (*S2D_On_Controller)(S2D_Event e);
211
-
212
- // S2D_GL_Point, for graphics calculations
213
- typedef struct {
214
- GLfloat x;
215
- GLfloat y;
216
- } S2D_GL_Point;
217
-
218
- // S2D_Color
219
- typedef struct {
220
- GLfloat r;
221
- GLfloat g;
222
- GLfloat b;
223
- GLfloat a;
224
- } S2D_Color;
225
-
226
- // S2D_Mouse
227
- typedef struct {
228
- int visible;
229
- int x;
230
- int y;
231
- } S2D_Mouse;
232
-
233
- // S2D_Viewport
234
- typedef struct {
235
- int width;
236
- int height;
237
- int mode;
238
- } S2D_Viewport;
239
-
240
- // S2D_Window
241
- typedef struct {
242
- SDL_Window *sdl;
243
- SDL_GLContext glcontext;
244
- const GLubyte *S2D_GL_VENDOR;
245
- const GLubyte *S2D_GL_RENDERER;
246
- const GLubyte *S2D_GL_VERSION;
247
- GLint S2D_GL_MAJOR_VERSION;
248
- GLint S2D_GL_MINOR_VERSION;
249
- const GLubyte *S2D_GL_SHADING_LANGUAGE_VERSION;
250
- const char *title;
251
- int width;
252
- int height;
253
- int orig_width;
254
- int orig_height;
255
- S2D_Viewport viewport;
256
- S2D_Update update;
257
- S2D_Render render;
258
- int flags;
259
- S2D_Mouse mouse;
260
- S2D_On_Key on_key;
261
- S2D_On_Mouse on_mouse;
262
- S2D_On_Controller on_controller;
263
- bool vsync;
264
- int fps_cap;
265
- S2D_Color background;
266
- const char *icon;
267
- Uint32 frames;
268
- Uint32 elapsed_ms;
269
- Uint32 loop_ms;
270
- Uint32 delay_ms;
271
- double fps;
272
- bool close;
273
- } S2D_Window;
274
-
275
- // S2D_Image
276
- typedef struct {
277
- const char *path;
278
- SDL_Surface *surface;
279
- int format;
280
- GLuint texture_id;
281
- S2D_Color color;
282
- int x;
283
- int y;
284
- int width;
285
- int height;
286
- int orig_width;
287
- int orig_height;
288
- GLfloat rotate; // Rotation angle in degrees
289
- GLfloat rx; // X coordinate to be rotated around
290
- GLfloat ry; // Y coordinate to be rotated around
291
- } S2D_Image;
292
-
293
- // S2D_Sprite
294
- typedef struct {
295
- const char *path;
296
- S2D_Image *img;
297
- S2D_Color color;
298
- int x;
299
- int y;
300
- int width;
301
- int height;
302
- int clip_width;
303
- int clip_height;
304
- GLfloat rotate; // Rotation angle in degrees
305
- GLfloat rx; // X coordinate to be rotated around
306
- GLfloat ry; // Y coordinate to be rotated around
307
- GLfloat tx1;
308
- GLfloat ty1;
309
- GLfloat tx2;
310
- GLfloat ty2;
311
- GLfloat tx3;
312
- GLfloat ty3;
313
- GLfloat tx4;
314
- GLfloat ty4;
315
- } S2D_Sprite;
316
-
317
- // S2D_Text
318
- typedef struct {
319
- const char *font;
320
- SDL_Surface *surface;
321
- GLuint texture_id;
322
- TTF_Font *font_data;
323
- S2D_Color color;
324
- char *msg;
325
- int x;
326
- int y;
327
- int width;
328
- int height;
329
- GLfloat rotate; // Rotation angle in degrees
330
- GLfloat rx; // X coordinate to be rotated around
331
- GLfloat ry; // Y coordinate to be rotated around
332
- } S2D_Text;
333
-
334
- // S2D_Sound
335
- typedef struct {
336
- const char *path;
337
- Mix_Chunk *data;
338
- } S2D_Sound;
339
-
340
- // S2D_Music
341
- typedef struct {
342
- const char *path;
343
- Mix_Music *data;
344
- } S2D_Music;
345
-
346
- // Simple 2D Functions /////////////////////////////////////////////////////////
347
-
348
- /*
349
- * Checks if a file exists and can be accessed
350
- */
351
- bool S2D_FileExists(const char *path);
352
-
353
- /*
354
- * Logs standard messages to the console
355
- */
356
- void S2D_Log(int type, const char *msg, ...);
357
-
358
- /*
359
- * Logs Simple 2D errors to the console, with caller and message body
360
- */
361
- void S2D_Error(const char *caller, const char *msg, ...);
362
-
363
- /*
364
- * Enable/disable logging of diagnostics
365
- */
366
- void S2D_Diagnostics(bool status);
367
-
368
- /*
369
- * Enable terminal colors in Windows
370
- */
371
- void S2D_Windows_EnableTerminalColors();
372
-
373
- /*
374
- * Initialize Simple 2D subsystems
375
- */
376
- bool S2D_Init();
377
-
378
- /*
379
- * Gets the primary display's dimentions
380
- */
381
- void S2D_GetDisplayDimensions(int *w, int *h);
382
-
383
- /*
384
- * Quits Simple 2D subsystems
385
- */
386
- void S2D_Quit(void);
387
-
388
- // Shapes //////////////////////////////////////////////////////////////////////
389
-
390
- /*
391
- * Rotate a point around a given point
392
- * Params:
393
- * p The point to rotate
394
- * angle The angle in degrees
395
- * rx The x coordinate to rotate around
396
- * ry The y coordinate to rotate around
397
- */
398
- S2D_GL_Point S2D_RotatePoint(S2D_GL_Point p, GLfloat angle, GLfloat rx, GLfloat ry);
399
-
400
- /*
401
- * Get the point to be rotated around given a position in a rectangle
402
- */
403
- S2D_GL_Point S2D_GetRectRotationPoint(int x, int y, int w, int h, int position);
404
-
405
- /*
406
- * Draw a triangle
407
- */
408
- void S2D_DrawTriangle(
409
- GLfloat x1, GLfloat y1,
410
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
411
- GLfloat x2, GLfloat y2,
412
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
413
- GLfloat x3, GLfloat y3,
414
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3
415
- );
416
-
417
- /*
418
- * Draw a quad, using two triangles
419
- */
420
- void S2D_DrawQuad(
421
- GLfloat x1, GLfloat y1,
422
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
423
- GLfloat x2, GLfloat y2,
424
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
425
- GLfloat x3, GLfloat y3,
426
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3,
427
- GLfloat x4, GLfloat y4,
428
- GLfloat r4, GLfloat g4, GLfloat b4, GLfloat a4
429
- );
430
-
431
- /*
432
- * Draw a line from a quad
433
- */
434
- void S2D_DrawLine(
435
- GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2,
436
- GLfloat width,
437
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
438
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
439
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3,
440
- GLfloat r4, GLfloat g4, GLfloat b4, GLfloat a4
441
- );
442
-
443
- /*
444
- * Draw a circle from triangles
445
- */
446
- void S2D_DrawCircle(
447
- GLfloat x, GLfloat y, GLfloat radius, int sectors,
448
- GLfloat r, GLfloat g, GLfloat b, GLfloat a
449
- );
450
-
451
- // Image ///////////////////////////////////////////////////////////////////////
452
-
453
- /*
454
- * Create an image, given a file path
455
- */
456
- S2D_Image *S2D_CreateImage(const char *path);
457
-
458
- /*
459
- * Rotate an image
460
- */
461
- void S2D_RotateImage(S2D_Image *img, GLfloat angle, int position);
462
-
463
- /*
464
- * Draw an image
465
- */
466
- void S2D_DrawImage(S2D_Image *img);
467
-
468
- /*
469
- * Free an image
470
- */
471
- void S2D_FreeImage(S2D_Image *img);
472
-
473
- // Sprite //////////////////////////////////////////////////////////////////////
474
-
475
- /*
476
- * Create a sprite, given an image file path
477
- */
478
- S2D_Sprite *S2D_CreateSprite(const char *path);
479
-
480
- /*
481
- * Clip a sprite
482
- */
483
- void S2D_ClipSprite(S2D_Sprite *spr, int x, int y, int w, int h);
484
-
485
- /*
486
- * Rotate a sprite
487
- */
488
- void S2D_RotateSprite(S2D_Sprite *spr, GLfloat angle, int position);
489
-
490
- /*
491
- * Draw a sprite
492
- */
493
- void S2D_DrawSprite(S2D_Sprite *spr);
494
-
495
- /*
496
- * Free a sprite
497
- */
498
- void S2D_FreeSprite(S2D_Sprite *spr);
499
-
500
- // Text ////////////////////////////////////////////////////////////////////////
501
-
502
- /*
503
- * Create text, given a font file path, the message, and size
504
- */
505
- S2D_Text *S2D_CreateText(const char *font, const char *msg, int size);
506
-
507
- /*
508
- * Set the text message
509
- */
510
- void S2D_SetText(S2D_Text *txt, const char *msg, ...);
511
-
512
- /*
513
- * Rotate text
514
- */
515
- void S2D_RotateText(S2D_Text *txt, GLfloat angle, int position);
516
-
517
- /*
518
- * Draw text
519
- */
520
- void S2D_DrawText(S2D_Text *txt);
521
-
522
- /*
523
- * Free the text
524
- */
525
- void S2D_FreeText(S2D_Text *txt);
526
-
527
- // Sound ///////////////////////////////////////////////////////////////////////
528
-
529
- /*
530
- * Create a sound, given an audio file path
531
- */
532
- S2D_Sound *S2D_CreateSound(const char *path);
533
-
534
- /*
535
- * Play the sound
536
- */
537
- void S2D_PlaySound(S2D_Sound *snd);
538
-
539
- /*
540
- * Free the sound
541
- */
542
- void S2D_FreeSound(S2D_Sound *snd);
543
-
544
- // Music ///////////////////////////////////////////////////////////////////////
545
-
546
- /*
547
- * Create the music, given an audio file path
548
- */
549
- S2D_Music *S2D_CreateMusic(const char *path);
550
-
551
- /*
552
- * Play the music
553
- */
554
- void S2D_PlayMusic(S2D_Music *mus, bool loop);
555
-
556
- /*
557
- * Pause the playing music
558
- */
559
- void S2D_PauseMusic();
560
-
561
- /*
562
- * Resume the current music
563
- */
564
- void S2D_ResumeMusic();
565
-
566
- /*
567
- * Stop the playing music; interrupts fader effects
568
- */
569
- void S2D_StopMusic();
570
-
571
- /*
572
- * Get the music volume
573
- */
574
- int S2D_GetMusicVolume();
575
-
576
- /*
577
- * Set the music volume a given percentage
578
- */
579
- void S2D_SetMusicVolume(int volume);
580
-
581
- /*
582
- * Fade out the playing music
583
- */
584
- void S2D_FadeOutMusic(int ms);
585
-
586
- /*
587
- * Free the music
588
- */
589
- void S2D_FreeMusic(S2D_Music *mus);
590
-
591
- // Input ///////////////////////////////////////////////////////////////////////
592
-
593
- /*
594
- * Get the mouse coordinates relative to the viewport
595
- */
596
- void S2D_GetMouseOnViewport(S2D_Window *window, int wx, int wy, int *x, int *y);
597
-
598
- /*
599
- * Show the cursor over the window
600
- */
601
- void S2D_ShowCursor();
602
-
603
- /*
604
- * Hide the cursor over the window
605
- */
606
- void S2D_HideCursor();
607
-
608
- // Controllers /////////////////////////////////////////////////////////////////
609
-
610
- /*
611
- * Add controller mapping from string
612
- */
613
- void S2D_AddControllerMapping(const char *map);
614
-
615
- /*
616
- * Load controller mappings from the specified file
617
- */
618
- void S2D_AddControllerMappingsFromFile(const char *path);
619
-
620
- /*
621
- * Check if joystick is a controller
622
- */
623
- bool S2D_IsController(SDL_JoystickID id);
624
-
625
- /*
626
- * Open controllers and joysticks
627
- */
628
- void S2D_OpenControllers();
629
-
630
- // Window //////////////////////////////////////////////////////////////////////
631
-
632
- /*
633
- * Create a window
634
- */
635
- S2D_Window *S2D_CreateWindow(
636
- const char *title, int width, int height, S2D_Update, S2D_Render, int flags
637
- );
638
-
639
- /*
640
- * Show the window
641
- */
642
- int S2D_Show(S2D_Window *window);
643
-
644
- /*
645
- * Set the icon for the window
646
- */
647
- void S2D_SetIcon(S2D_Window *window, const char *icon);
648
-
649
- /*
650
- * Take a screenshot of the window
651
- */
652
- void S2D_Screenshot(S2D_Window *window, const char *path);
653
-
654
- /*
655
- * Close the window
656
- */
657
- int S2D_Close(S2D_Window *window);
658
-
659
- /*
660
- * Free all resources
661
- */
662
- int S2D_FreeWindow(S2D_Window *window);
663
-
664
- // Simple 2D OpenGL Functions //////////////////////////////////////////////////
665
-
666
- int S2D_GL_Init(S2D_Window *window);
667
- void S2D_GL_PrintError(char *error);
668
- void S2D_GL_PrintContextInfo(S2D_Window *window);
669
- void S2D_GL_StoreContextInfo(S2D_Window *window);
670
- GLuint S2D_GL_LoadShader(GLenum type, const GLchar *shaderSrc, char *shaderName);
671
- int S2D_GL_CheckLinked(GLuint program, char *name);
672
- void S2D_GL_GetViewportScale(S2D_Window *window, int *w, int *h, double *scale);
673
- void S2D_GL_SetViewport(S2D_Window *window);
674
- void S2D_GL_CreateTexture(
675
- GLuint *id, GLint format,
676
- int w, int h,
677
- const GLvoid *data, GLint filter);
678
- void S2D_GL_DrawTriangle(
679
- GLfloat x1, GLfloat y1,
680
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
681
- GLfloat x2, GLfloat y2,
682
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
683
- GLfloat x3, GLfloat y3,
684
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
685
- void S2D_GL_DrawImage(S2D_Image *img);
686
- void S2D_GL_DrawSprite(S2D_Sprite *spr);
687
- void S2D_GL_DrawText(S2D_Text *txt);
688
- void S2D_GL_FreeTexture(GLuint *id);
689
- void S2D_GL_Clear(S2D_Color clr);
690
-
691
- // OpenGL & GLES Internal Functions ////////////////////////////////////////////
692
-
693
- #if GLES
694
- int S2D_GLES_Init();
695
- void S2D_GLES_ApplyProjection(GLfloat orthoMatrix[16]);
696
- void S2D_GLES_DrawTriangle(
697
- GLfloat x1, GLfloat y1,
698
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
699
- GLfloat x2, GLfloat y2,
700
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
701
- GLfloat x3, GLfloat y3,
702
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
703
- void S2D_GLES_DrawImage(S2D_Image *img);
704
- void S2D_GLES_DrawSprite(S2D_Sprite *spr);
705
- void S2D_GLES_DrawText(S2D_Text *txt);
706
- #else
707
- int S2D_GL2_Init();
708
- int S2D_GL3_Init();
709
- void S2D_GL2_ApplyProjection(int w, int h);
710
- void S2D_GL3_ApplyProjection(GLfloat orthoMatrix[16]);
711
- void S2D_GL2_DrawTriangle(
712
- GLfloat x1, GLfloat y1,
713
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
714
- GLfloat x2, GLfloat y2,
715
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
716
- GLfloat x3, GLfloat y3,
717
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
718
- void S2D_GL3_DrawTriangle(
719
- GLfloat x1, GLfloat y1,
720
- GLfloat r1, GLfloat g1, GLfloat b1, GLfloat a1,
721
- GLfloat x2, GLfloat y2,
722
- GLfloat r2, GLfloat g2, GLfloat b2, GLfloat a2,
723
- GLfloat x3, GLfloat y3,
724
- GLfloat r3, GLfloat g3, GLfloat b3, GLfloat a3);
725
- void S2D_GL2_DrawImage(S2D_Image *img);
726
- void S2D_GL3_DrawImage(S2D_Image *img);
727
- void S2D_GL2_DrawSprite(S2D_Sprite *spr);
728
- void S2D_GL3_DrawSprite(S2D_Sprite *spr);
729
- void S2D_GL2_DrawText(S2D_Text *txt);
730
- void S2D_GL3_DrawText(S2D_Text *txt);
731
- #endif
732
-
733
- #ifdef __cplusplus
734
- }
735
- #endif