sdl3-bindings 1.0.0.beta.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 (64) hide show
  1. checksums.yaml +7 -0
  2. data/ChangeLog +159 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +132 -0
  5. data/lib/sdl3.rb +150 -0
  6. data/lib/sdl3_assert.rb +61 -0
  7. data/lib/sdl3_asyncio.rb +68 -0
  8. data/lib/sdl3_atomic.rb +64 -0
  9. data/lib/sdl3_audio.rb +120 -0
  10. data/lib/sdl3_bits.rb +38 -0
  11. data/lib/sdl3_blendmode.rb +63 -0
  12. data/lib/sdl3_camera.rb +67 -0
  13. data/lib/sdl3_clipboard.rb +49 -0
  14. data/lib/sdl3_cpuinfo.rb +55 -0
  15. data/lib/sdl3_dialog.rb +60 -0
  16. data/lib/sdl3_endian.rb +39 -0
  17. data/lib/sdl3_error.rb +41 -0
  18. data/lib/sdl3_events.rb +680 -0
  19. data/lib/sdl3_filesystem.rb +82 -0
  20. data/lib/sdl3_gamepad.rb +216 -0
  21. data/lib/sdl3_gpu.rb +836 -0
  22. data/lib/sdl3_guid.rb +44 -0
  23. data/lib/sdl3_haptic.rb +209 -0
  24. data/lib/sdl3_hidapi.rb +84 -0
  25. data/lib/sdl3_hints.rb +285 -0
  26. data/lib/sdl3_image.rb +108 -0
  27. data/lib/sdl3_init.rb +71 -0
  28. data/lib/sdl3_iostream.rb +115 -0
  29. data/lib/sdl3_joystick.rb +174 -0
  30. data/lib/sdl3_keyboard.rb +81 -0
  31. data/lib/sdl3_keycode.rb +310 -0
  32. data/lib/sdl3_loadso.rb +39 -0
  33. data/lib/sdl3_locale.rb +44 -0
  34. data/lib/sdl3_log.rb +85 -0
  35. data/lib/sdl3_messagebox.rb +88 -0
  36. data/lib/sdl3_misc.rb +37 -0
  37. data/lib/sdl3_mixer.rb +179 -0
  38. data/lib/sdl3_mouse.rb +90 -0
  39. data/lib/sdl3_mutex.rb +77 -0
  40. data/lib/sdl3_pen.rb +56 -0
  41. data/lib/sdl3_pixels.rb +296 -0
  42. data/lib/sdl3_platform.rb +37 -0
  43. data/lib/sdl3_power.rb +44 -0
  44. data/lib/sdl3_process.rb +65 -0
  45. data/lib/sdl3_properties.rb +67 -0
  46. data/lib/sdl3_rect.rb +98 -0
  47. data/lib/sdl3_render.rb +240 -0
  48. data/lib/sdl3_revision.rb +37 -0
  49. data/lib/sdl3_scancode.rb +286 -0
  50. data/lib/sdl3_sensor.rb +61 -0
  51. data/lib/sdl3_sound.rb +98 -0
  52. data/lib/sdl3_stdinc.rb +229 -0
  53. data/lib/sdl3_storage.rb +70 -0
  54. data/lib/sdl3_surface.rb +122 -0
  55. data/lib/sdl3_thread.rb +65 -0
  56. data/lib/sdl3_time.rb +66 -0
  57. data/lib/sdl3_timer.rb +54 -0
  58. data/lib/sdl3_touch.rb +56 -0
  59. data/lib/sdl3_tray.rb +66 -0
  60. data/lib/sdl3_ttf.rb +216 -0
  61. data/lib/sdl3_version.rb +41 -0
  62. data/lib/sdl3_video.rb +341 -0
  63. data/lib/sdl3_vulkan.rb +46 -0
  64. metadata +118 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1c12c2977e8e8f0680329636e3d24b46b25baac800d2bf096ee12a8e4fe9bd8a
4
+ data.tar.gz: '0689c67c1b15cadd406ec22559cd986ae5561ab3017af2851d9a4ab80c2e2334'
5
+ SHA512:
6
+ metadata.gz: adcae0eea26b78dfaf0e89b2700c0b4c82d6bf7c3ba6e3b7d36e598bb232a926ea9e7789e8ab20b29626f7a9b43ad3eba2e251b505d0aa9e0fcad23e5d3df52f
7
+ data.tar.gz: 0426a69c92d66633841b5c24a110f637f0d1a59820238154a19762c24a0b774be0db1ee55f1cf35bc378070ceb5f871c8d40ccff3a0b84523799bca8968e64f9
data/ChangeLog ADDED
@@ -0,0 +1,159 @@
1
+ 2025-01-26 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * SDL 3.2.0 ( https://github.com/libsdl-org/SDL/releases/tag/release-3.2.0 )
4
+ * Improved generator to produce shorter binding code.
5
+
6
+ 2023-02-05 vaiorabbit <http://twitter.com/vaiorabbit>
7
+
8
+ * lib/sdl2_syswm.rb: Added X11 support
9
+ * Added Linux (on WSL) as a tested environment
10
+
11
+ 2022-11-23 vaiorabbit <http://twitter.com/vaiorabbit>
12
+
13
+ * SDL 2.26.0 ( https://github.com/libsdl-org/SDL/releases/tag/release-2.26.0 )
14
+
15
+ 2022-10-09 vaiorabbit <http://twitter.com/vaiorabbit>
16
+
17
+ * SDL 2.24.1 ( https://github.com/libsdl-org/SDL/releases/tag/release-2.24.1 )
18
+ * Fixed wrong value definitions
19
+
20
+ 2022-08-20 vaiorabbit <http://twitter.com/vaiorabbit>
21
+
22
+ * SDL 2.24.0 ( https://github.com/libsdl-org/SDL/releases/tag/release-2.24.0 )
23
+ * Generated for SDL_image 2.6.2, SDL_mixer 2.6.2 and SDL_ttf 2.20.1
24
+ * SDL::JoystickGUID is now defined as an alias of SDL::GUID ( https://github.com/libsdl-org/SDL/commit/3a20274ddff20d9c3ea4895353b23ff252954b87 )
25
+
26
+ 2022-07-31 vaiorabbit <http://twitter.com/vaiorabbit>
27
+
28
+ * Regenerated bindings to fix bugs (size_t interpretation)
29
+ * Regenerated bindings for SDL_image 2.6.0, SDL_mixer 2.6.0 and SDL_ttf 2.20.0
30
+
31
+ 2022-05-01 vaiorabbit <http://twitter.com/vaiorabbit>
32
+
33
+ * lib/sdl2_rwops.rb: Added RW_SEEK_SET, RW_SEEK_CUR and RW_SEEK_END
34
+
35
+ 2022-04-29 vaiorabbit <http://twitter.com/vaiorabbit>
36
+
37
+ * Added SDL 2.0.22 features ( https://github.com/libsdl-org/SDL/releases/tag/release-2.0.22 )
38
+ * third_party/sdl2_build_dll.cmd: Updated to refer 2.0.22
39
+
40
+ 2022-03-28 vaiorabbit <http://twitter.com/vaiorabbit>
41
+
42
+ * lib/sdl2_sound.rb: Added
43
+
44
+ 2022-02-13 vaiorabbit <http://twitter.com/vaiorabbit>
45
+
46
+ * Removed unavailable inline functions (SDL_memset4, SDL_memcpy4)
47
+
48
+ 2022-02-12 vaiorabbit <http://twitter.com/vaiorabbit>
49
+
50
+ * Some tests are now available on Windows
51
+
52
+ 2022-01-26 vaiorabbit <http://twitter.com/vaiorabbit>
53
+
54
+ * test/test*.rb: Changed namespace
55
+ * load_lib: Now accepts argument 'output_error'
56
+
57
+ 2022-01-22 vaiorabbit <http://twitter.com/vaiorabbit>
58
+
59
+ * lib/sdl2_ttf.rb: Generated for version 2.0.18
60
+ * generator: Fixed wrong 'by_value' handling
61
+ * .gitignore: Added
62
+ * test/test_opengl.rb: Use opengl-bindings2
63
+
64
+ 2022-01-11 vaiorabbit <http://twitter.com/vaiorabbit>
65
+
66
+ * Added SDL 2.0.20 features ( https://github.com/libsdl-org/SDL/releases/tag/release-2.0.20 )
67
+
68
+ 2021-12-02 vaiorabbit <http://twitter.com/vaiorabbit>
69
+
70
+ * Added SDL 2.0.18 features ( https://github.com/libsdl-org/SDL/releases/tag/release-2.0.18 )
71
+
72
+ 2021-08-12 vaiorabbit <http://twitter.com/vaiorabbit>
73
+
74
+ * Added SDL 2.0.14 features (SDL_misc).
75
+ * Added SDL 2.0.16 features (SDL_sensor).
76
+
77
+ 2021-02-21 vaiorabbit <http://twitter.com/vaiorabbit>
78
+
79
+ * Added defines from Audio, Mixer and TTF
80
+
81
+ 2020-12-27 vaiorabbit <http://twitter.com/vaiorabbit>
82
+
83
+ * Added SDL 2.0.14 features.
84
+ * third_party/sdl2_build_dll.sh: Added to build x64 DLL for Windows
85
+ * test/util.rb: Added
86
+
87
+ 2020-12-20 vaiorabbit <http://twitter.com/vaiorabbit>
88
+
89
+ * third_party/sdl2_build_dylib.sh: Added to build x86_64|arm64 Universal Binary
90
+
91
+ 2020-06-08 vaiorabbit <http://twitter.com/vaiorabbit>
92
+
93
+ * lib/sdl2_syswm.rb: Added
94
+ * lib/sdl2_hints.rb: Added hint string symboles
95
+
96
+ 2020-03-22 vaiorabbit <http://twitter.com/vaiorabbit>
97
+
98
+ * Added SDL 2.0.12 features.
99
+ * Generate callback types correctly.
100
+
101
+ 2019-10-27 vaiorabbit <http://twitter.com/vaiorabbit>
102
+
103
+ * lib/sdl2_stdinc.rb: Added.
104
+
105
+ 2019-08-31 vaiorabbit <http://twitter.com/vaiorabbit>
106
+
107
+ * Refactoring + Cleanup
108
+ * Some tests are usable again
109
+
110
+ 2019-08-28 vaiorabbit <http://twitter.com/vaiorabbit>
111
+
112
+ * Exception-safety
113
+
114
+ 2019-08-27 vaiorabbit <http://twitter.com/vaiorabbit>
115
+
116
+ * lib/sdl2_mixer.rb: Added (experimental)
117
+
118
+ 2019-08-24 vaiorabbit <http://twitter.com/vaiorabbit>
119
+
120
+ * Added SDL 2.0.10 features.
121
+ * Added generator. Binding codes are generated semi-automatically.
122
+ * Now depends on Ruby/FFI. Note that some codes in 'test' directory are still not usable.
123
+
124
+ 2016-04-03 vaiorabbit <http://twitter.com/vaiorabbit>
125
+
126
+ * lib/sdl2_gfx.rb, test/test_gfx.rb: Added.
127
+
128
+ 2016-04-02 vaiorabbit <http://twitter.com/vaiorabbit>
129
+
130
+ * Added SDL 2.0.4 features.
131
+ * lib/version.rb: Added SDL_MAJOR_VERSION, etc.
132
+
133
+ 2015-09-29 vaiorabbit <http://twitter.com/vaiorabbit>
134
+
135
+ * lib/sdl2_ttf.rb: Added.
136
+
137
+ 2015-09-28 vaiorabbit <http://twitter.com/vaiorabbit>
138
+
139
+ * lib/sdl2_image.rb: Added.
140
+ * lib/sdl2_mixer.rb: Added.
141
+
142
+ 2015-09-22 vaiorabbit <http://twitter.com/vaiorabbit>
143
+
144
+ * lib/pixels.rb, lib/gamecontroller.rb, lib/joystick.rb: Added.
145
+ * lib/rwops.rb, lib/syswm.rb, lib/surface.rb, lib/render.rb: Added.
146
+ * lib/cpuinfo.rb, lib/gesture.rb, lib/touch.rb, lib/audio.rb: Added.
147
+
148
+ 2015-09-21 vaiorabbit <http://twitter.com/vaiorabbit>
149
+
150
+ * lib/events.rb, lib/timer.rb, lib/video.rb: Added.
151
+ * lib/keyboard.rb, lib/keycode.rb, lib/scancode.rb: Added.
152
+ * lib/error.rb: Added.
153
+ * lib/blendmode.rb, lib/clipboard.rb, lib/filesystem.rb, lib/version.rb: Added.
154
+ * lib/platform.rb, lib/rect.rb, lib/mouse.rb: Added.
155
+ * lib/messagebox.rb, lib/pixels.rb: Added.
156
+
157
+ 2015-09-19 vaiorabbit <http://twitter.com/vaiorabbit>
158
+
159
+ * Project started.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ sdl3-bindings : SDL3 wrapper for Ruby
2
+ Copyright (c) 2015-2025 vaiorabbit <http://twitter.com/vaiorabbit>
3
+
4
+ This software is provided 'as-is', without any express or implied
5
+ warranty. In no event will the authors be held liable for any damages
6
+ arising from the use of this software.
7
+
8
+ Permission is granted to anyone to use this software for any purpose,
9
+ including commercial applications, and to alter it and redistribute it
10
+ freely, subject to the following restrictions:
11
+
12
+ 1. The origin of this software must not be misrepresented; you must not
13
+ claim that you wrote the original software. If you use this software
14
+ in a product, an acknowledgment in the product documentation would be
15
+ appreciated but is not required.
16
+
17
+ 2. Altered source versions must be plainly marked as such, and must not be
18
+ misrepresented as being the original software.
19
+
20
+ 3. This notice may not be removed or altered from any source
21
+ distribution.
data/README.md ADDED
@@ -0,0 +1,132 @@
1
+ <!-- -*- mode:markdown; coding:utf-8; -*- -->
2
+
3
+ # sdl3-bindings : SDL3 wrapper for Ruby #
4
+
5
+ * Created : 2015-09-19
6
+ * Last modified : 2025-01-26
7
+
8
+ ## Features ##
9
+
10
+ * Generated semi-automatically
11
+ * Based on Ruby/FFI
12
+ * No need to build C extension library
13
+
14
+ See the project below to learn how to use this library:
15
+
16
+ * Whac-a-Mole! : Ruby SDL2 bindings demo
17
+ * <https://github.com/vaiorabbit/sdl2-bindings-whacamole>
18
+ * [![](http://img.youtube.com/vi/HroP-_EWcg8/mqdefault.jpg)](https://www.youtube.com/watch?v=HroP-_EWcg8)
19
+
20
+ ## Limitations ##
21
+
22
+ * Several original APIs originally defined with pre-processor macro are unavailable in this library (e.g. `SDL_TriggerBreakpoint`, `SDL_stack_alloc`, `SDL_BUTTON_MASK`, etc.)
23
+
24
+ ## Target version ##
25
+
26
+ * [2025-01-26]
27
+ * SDL : 3.2.0
28
+ * SDL_image : 3.1.1
29
+ * SDL_mixer : 3.0.0
30
+ * SDL_ttf : 3.1.0
31
+ * SDL_sound : 3.0.0
32
+
33
+ <details>
34
+ <summary>Older versions</summary>
35
+
36
+ * [2015-09-19] SDL 2.0.3
37
+ * [2016-04-03] SDL 2.0.4
38
+ * [2019-08-31] SDL 2.0.10
39
+ * [2020-03-22] SDL 2.0.12
40
+ * [2020-12-27] SDL 2.0.14
41
+ * [2021-08-12] SDL 2.0.16
42
+ * [2021-12-02] SDL 2.0.18
43
+ * [2022-03-28]
44
+ * SDL : 2.0.20
45
+ * SDL_image : 2.0.5
46
+ * SDL_mixer : 2.0.4
47
+ * SDL_ttf : 2.0.18
48
+ * SDL2_gfx : 1.0.4
49
+ * SDL_sound : 2.0.1
50
+ * [2022-04-29]
51
+ * SDL : 2.0.22
52
+ * SDL_image : 2.0.5
53
+ * SDL_mixer : 2.0.4
54
+ * SDL_ttf : 2.0.18
55
+ * SDL2_gfx : 1.0.4
56
+ * SDL_sound : 2.0.1
57
+ * [2022-07-31]
58
+ * SDL : 2.0.22
59
+ * SDL_image : 2.6.0
60
+ * SDL_mixer : 2.6.0
61
+ * SDL_ttf : 2.20.0
62
+ * SDL2_gfx : 1.0.4
63
+ * SDL_sound : 2.0.1
64
+ * [2022-08-20]
65
+ * SDL : 2.24.0
66
+ * SDL_image : 2.6.2
67
+ * SDL_mixer : 2.6.2
68
+ * SDL_ttf : 2.20.1
69
+ * SDL2_gfx : 1.0.4
70
+ * SDL_sound : 2.0.1
71
+ * [2022-10-09]
72
+ * SDL : 2.24.1
73
+ * SDL_image : 2.6.2
74
+ * SDL_mixer : 2.6.2
75
+ * SDL_ttf : 2.20.1
76
+ * SDL2_gfx : 1.0.4
77
+ * SDL_sound : 2.0.1
78
+ * [2022-11-03]
79
+ * SDL : 2.24.2
80
+ * SDL_image : 2.6.2
81
+ * SDL_mixer : 2.6.2
82
+ * SDL_ttf : 2.20.1
83
+ * SDL2_gfx : 1.0.4
84
+ * SDL_sound : 2.0.1
85
+ * [2022-11-23]
86
+ * SDL : 2.26.0 - 2.26.2
87
+ * SDL_image : 2.6.2
88
+ * SDL_mixer : 2.6.2
89
+ * SDL_ttf : 2.20.1
90
+ * SDL2_gfx : 1.0.4
91
+ * SDL_sound : 2.0.1
92
+
93
+ </details>
94
+
95
+ ## Tested Environments ##
96
+
97
+ * [2025-01-26] Windows 11 (24H2), ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x64-mingw-ucrt]
98
+
99
+ <details>
100
+ <summary>Older Environments</summary>
101
+
102
+ * [2023-02-05] Ubuntu Linux 22.04 LTS (jammy) on WSL/Windows 11, ruby 3.2.0 (2022-12-25 revision a528908271) [x86_64-linux]
103
+ * [2023-01-07] Windows 11 (22H2), ruby 3.2.0 (2022-12-25 revision a528908271) [x64-mingw-ucrt]
104
+ * [2023-01-07] macOS Ventura (13.1) ruby 3.2.0 (2022-12-25 revision a528908271) [arm64-darwin21]
105
+ * [2022-10-09] Debian 11 (bullseye) on ASUS Chromebook Detachable CZ1, ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [aarch64-linux]
106
+ * [2022-04-29] Windows 10 (21H1), ruby 3.1.1p18 (2022-02-18 revision 53f5fc4236) [x64-mingw-ucrt]
107
+ * [2022-10-09] macOS Monterey (12.5.1), ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21]
108
+ * [2022-07-31] macOS Monterey (12.4), ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin21]
109
+ * [2022-02-12] Windows 10 (21H1), ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x64-mingw-ucrt]
110
+ * [2022-01-11] macOS Monterey (12.1), ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin20]
111
+ * [2021-12-02] macOS Big Sur (11.6), ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
112
+ * [2021-08-12] macOS Big Sur (11.5), ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [arm64-darwin20]
113
+ * [2020-12-27] macOS Big Sur (11.0.1), ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [arm64-darwin20]
114
+ * [2016-04-03] Mac OS X 10.11.4, ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
115
+ * [2015-09-19] Mac OS X 10.10.5, ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
116
+
117
+ </details>
118
+
119
+ ## License ##
120
+
121
+ The zlib/libpng License ( http://opensource.org/licenses/Zlib ).
122
+
123
+ sdl3-bindings : SDL3 wrapper for Ruby
124
+ Copyright (c) 2015-2025 vaiorabbit <http://twitter.com/vaiorabbit>
125
+
126
+ This software is provided 'as-is', without any express or implied
127
+ warranty. In no event will the authors be held liable for any damages
128
+ arising from the use of this software.
129
+
130
+ Permission is granted to anyone to use this software for any purpose,
131
+ including commercial applications, and to alter it and redistribute it
132
+ freely, subject to the following restrictions:
data/lib/sdl3.rb ADDED
@@ -0,0 +1,150 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+
5
+ require 'ffi'
6
+ require_relative 'sdl3_assert.rb'
7
+ require_relative 'sdl3_asyncio.rb'
8
+ require_relative 'sdl3_atomic.rb'
9
+ require_relative 'sdl3_audio.rb'
10
+ require_relative 'sdl3_bits.rb'
11
+ require_relative 'sdl3_blendmode.rb'
12
+ require_relative 'sdl3_camera.rb'
13
+ require_relative 'sdl3_clipboard.rb'
14
+ require_relative 'sdl3_cpuinfo.rb'
15
+ require_relative 'sdl3_dialog.rb'
16
+ require_relative 'sdl3_endian.rb'
17
+ require_relative 'sdl3_error.rb'
18
+ require_relative 'sdl3_events.rb'
19
+ require_relative 'sdl3_filesystem.rb'
20
+ require_relative 'sdl3_gamepad.rb'
21
+ require_relative 'sdl3_gpu.rb'
22
+ require_relative 'sdl3_guid.rb'
23
+ require_relative 'sdl3_haptic.rb'
24
+ require_relative 'sdl3_hints.rb'
25
+ require_relative 'sdl3_init.rb'
26
+ require_relative 'sdl3_iostream.rb'
27
+ require_relative 'sdl3_joystick.rb'
28
+ require_relative 'sdl3_keyboard.rb'
29
+ require_relative 'sdl3_keycode.rb'
30
+ require_relative 'sdl3_loadso.rb'
31
+ require_relative 'sdl3_log.rb'
32
+ require_relative 'sdl3_messagebox.rb'
33
+ require_relative 'sdl3_misc.rb'
34
+ require_relative 'sdl3_mouse.rb'
35
+ require_relative 'sdl3_mutex.rb'
36
+ require_relative 'sdl3_pen.rb'
37
+ require_relative 'sdl3_pixels.rb'
38
+ require_relative 'sdl3_platform.rb'
39
+ require_relative 'sdl3_power.rb'
40
+ require_relative 'sdl3_process.rb'
41
+ require_relative 'sdl3_properties.rb'
42
+ require_relative 'sdl3_rect.rb'
43
+ require_relative 'sdl3_render.rb'
44
+ require_relative 'sdl3_revision.rb'
45
+ require_relative 'sdl3_scancode.rb'
46
+ require_relative 'sdl3_sensor.rb'
47
+ require_relative 'sdl3_stdinc.rb'
48
+ require_relative 'sdl3_storage.rb'
49
+ require_relative 'sdl3_surface.rb'
50
+ require_relative 'sdl3_thread.rb'
51
+ require_relative 'sdl3_time.rb'
52
+ require_relative 'sdl3_timer.rb'
53
+ require_relative 'sdl3_touch.rb'
54
+ require_relative 'sdl3_tray.rb'
55
+ require_relative 'sdl3_version.rb'
56
+ require_relative 'sdl3_video.rb'
57
+ require_relative 'sdl3_vulkan.rb'
58
+
59
+ # SDL_image
60
+ require_relative 'sdl3_image.rb'
61
+ # SDL_mixer
62
+ require_relative 'sdl3_mixer.rb'
63
+ # SDL_ttf
64
+ require_relative 'sdl3_ttf.rb'
65
+ # SDL_sound
66
+ require_relative 'sdl3_sound.rb'
67
+
68
+ module SDL
69
+ extend FFI::Library
70
+
71
+ @@sdl3_import_done = false
72
+ def self.load_lib(libpath, output_error: false, image_libpath: nil, ttf_libpath: nil, mixer_libpath: nil, sound_libpath: nil)
73
+
74
+ unless @@sdl3_import_done
75
+ # Ref.: Using Multiple and Alternate Libraries
76
+ # https://github.com/ffi/ffi/wiki/Using-Multiple-and-Alternate-Libraries
77
+ begin
78
+ lib_paths = [libpath, image_libpath, ttf_libpath, mixer_libpath, sound_libpath].compact
79
+
80
+ ffi_lib_flags :now, :global
81
+ ffi_lib *lib_paths
82
+ setup_symbols(output_error)
83
+
84
+ setup_image_symbols(output_error) if image_libpath
85
+ setup_ttf_symbols(output_error) if ttf_libpath
86
+ setup_mixer_symbols(output_error) if mixer_libpath
87
+ setup_sound_symbols(output_error) if sound_libpath
88
+ rescue => error
89
+ $stderr.puts("[Warning] Failed to load libraries (#{error}).") if output_error
90
+ end
91
+ end
92
+
93
+ end
94
+
95
+ def self.setup_symbols(output_error = false)
96
+ setup_assert_symbols(output_error)
97
+ setup_asyncio_symbols(output_error)
98
+ setup_atomic_symbols(output_error)
99
+ setup_audio_symbols(output_error)
100
+ setup_bits_symbols(output_error)
101
+ setup_blendmode_symbols(output_error)
102
+ setup_camera_symbols(output_error)
103
+ setup_clipboard_symbols(output_error)
104
+ setup_cpuinfo_symbols(output_error)
105
+ setup_dialog_symbols(output_error)
106
+ setup_endian_symbols(output_error)
107
+ setup_error_symbols(output_error)
108
+ setup_events_symbols(output_error)
109
+ setup_filesystem_symbols(output_error)
110
+ setup_gamepad_symbols(output_error)
111
+ setup_gpu_symbols(output_error)
112
+ setup_guid_symbols(output_error)
113
+ setup_haptic_symbols(output_error)
114
+ setup_hints_symbols(output_error)
115
+ setup_init_symbols(output_error)
116
+ setup_iostream_symbols(output_error)
117
+ setup_joystick_symbols(output_error)
118
+ setup_keyboard_symbols(output_error)
119
+ setup_keycode_symbols(output_error)
120
+ setup_loadso_symbols(output_error)
121
+ setup_log_symbols(output_error)
122
+ setup_messagebox_symbols(output_error)
123
+ setup_misc_symbols(output_error)
124
+ setup_mouse_symbols(output_error)
125
+ setup_mutex_symbols(output_error)
126
+ setup_pen_symbols(output_error)
127
+ setup_pixels_symbols(output_error)
128
+ setup_platform_symbols(output_error)
129
+ setup_power_symbols(output_error)
130
+ setup_process_symbols(output_error)
131
+ setup_properties_symbols(output_error)
132
+ setup_rect_symbols(output_error)
133
+ setup_render_symbols(output_error)
134
+ setup_revision_symbols(output_error)
135
+ setup_scancode_symbols(output_error)
136
+ setup_sensor_symbols(output_error)
137
+ setup_stdinc_symbols(output_error)
138
+ setup_storage_symbols(output_error)
139
+ setup_surface_symbols(output_error)
140
+ setup_thread_symbols(output_error)
141
+ setup_time_symbols(output_error)
142
+ setup_timer_symbols(output_error)
143
+ setup_touch_symbols(output_error)
144
+ setup_tray_symbols(output_error)
145
+ setup_version_symbols(output_error)
146
+ setup_video_symbols(output_error)
147
+ setup_vulkan_symbols(output_error)
148
+ end
149
+
150
+ end
@@ -0,0 +1,61 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ ASSERTION_RETRY = 0
17
+ ASSERTION_BREAK = 1
18
+ ASSERTION_ABORT = 2
19
+ ASSERTION_IGNORE = 3
20
+ ASSERTION_ALWAYS_IGNORE = 4
21
+
22
+ # Typedef
23
+
24
+ typedef :int, :SDL_AssertState
25
+ callback :SDL_AssertionHandler, [:pointer, :pointer], :int
26
+
27
+ # Struct
28
+
29
+ class AssertData < FFI::Struct
30
+ layout(
31
+ :always_ignore, :bool,
32
+ :trigger_count, :uint,
33
+ :condition, :pointer,
34
+ :filename, :pointer,
35
+ :linenum, :int,
36
+ :function, :pointer,
37
+ :next, :pointer,
38
+ )
39
+ end
40
+
41
+
42
+ # Function
43
+
44
+ def self.setup_assert_symbols(output_error = false)
45
+ entries = [
46
+ [:ReportAssertion, :SDL_ReportAssertion, [:pointer, :pointer, :pointer, :int], :int],
47
+ [:SetAssertionHandler, :SDL_SetAssertionHandler, [:SDL_AssertionHandler, :pointer], :void],
48
+ [:GetDefaultAssertionHandler, :SDL_GetDefaultAssertionHandler, [], :pointer],
49
+ [:GetAssertionHandler, :SDL_GetAssertionHandler, [:pointer], :pointer],
50
+ [:GetAssertionReport, :SDL_GetAssertionReport, [], :pointer],
51
+ [:ResetAssertionReport, :SDL_ResetAssertionReport, [], :void],
52
+ ]
53
+ entries.each do |entry|
54
+ attach_function entry[0], entry[1], entry[2], entry[3]
55
+ rescue FFI::NotFoundError => e
56
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
57
+ end
58
+ end
59
+
60
+ end
61
+
@@ -0,0 +1,68 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+ ASYNCIO_TASK_READ = 0
17
+ ASYNCIO_TASK_WRITE = 1
18
+ ASYNCIO_TASK_CLOSE = 2
19
+ ASYNCIO_COMPLETE = 0
20
+ ASYNCIO_FAILURE = 1
21
+ ASYNCIO_CANCELED = 2
22
+
23
+ # Typedef
24
+
25
+ typedef :int, :SDL_AsyncIOTaskType
26
+ typedef :int, :SDL_AsyncIOResult
27
+
28
+ # Struct
29
+
30
+ class AsyncIOOutcome < FFI::Struct
31
+ layout(
32
+ :asyncio, :pointer,
33
+ :type, :int,
34
+ :result, :int,
35
+ :buffer, :pointer,
36
+ :offset, :ulong_long,
37
+ :bytes_requested, :ulong_long,
38
+ :bytes_transferred, :ulong_long,
39
+ :userdata, :pointer,
40
+ )
41
+ end
42
+
43
+
44
+ # Function
45
+
46
+ def self.setup_asyncio_symbols(output_error = false)
47
+ entries = [
48
+ [:AsyncIOFromFile, :SDL_AsyncIOFromFile, [:pointer, :pointer], :pointer],
49
+ [:GetAsyncIOSize, :SDL_GetAsyncIOSize, [:pointer], :long_long],
50
+ [:ReadAsyncIO, :SDL_ReadAsyncIO, [:pointer, :pointer, :ulong_long, :ulong_long, :pointer, :pointer], :bool],
51
+ [:WriteAsyncIO, :SDL_WriteAsyncIO, [:pointer, :pointer, :ulong_long, :ulong_long, :pointer, :pointer], :bool],
52
+ [:CloseAsyncIO, :SDL_CloseAsyncIO, [:pointer, :bool, :pointer, :pointer], :bool],
53
+ [:CreateAsyncIOQueue, :SDL_CreateAsyncIOQueue, [], :pointer],
54
+ [:DestroyAsyncIOQueue, :SDL_DestroyAsyncIOQueue, [:pointer], :void],
55
+ [:GetAsyncIOResult, :SDL_GetAsyncIOResult, [:pointer, :pointer], :bool],
56
+ [:WaitAsyncIOResult, :SDL_WaitAsyncIOResult, [:pointer, :pointer, :int], :bool],
57
+ [:SignalAsyncIOQueue, :SDL_SignalAsyncIOQueue, [:pointer], :void],
58
+ [:LoadFileAsync, :SDL_LoadFileAsync, [:pointer, :pointer, :pointer], :bool],
59
+ ]
60
+ entries.each do |entry|
61
+ attach_function entry[0], entry[1], entry[2], entry[3]
62
+ rescue FFI::NotFoundError => e
63
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
64
+ end
65
+ end
66
+
67
+ end
68
+
@@ -0,0 +1,64 @@
1
+ # Ruby-SDL3 : SDL3 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl3-bindings
4
+ #
5
+ # [NOTICE] Autogenerated. Do not edit.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+
14
+ # Enum
15
+
16
+
17
+ # Typedef
18
+
19
+ typedef :int, :SDL_SpinLock
20
+
21
+ # Struct
22
+
23
+ class AtomicInt < FFI::Struct
24
+ layout(
25
+ :value, :int,
26
+ )
27
+ end
28
+
29
+ class AtomicU32 < FFI::Struct
30
+ layout(
31
+ :value, :uint,
32
+ )
33
+ end
34
+
35
+
36
+ # Function
37
+
38
+ def self.setup_atomic_symbols(output_error = false)
39
+ entries = [
40
+ [:TryLockSpinlock, :SDL_TryLockSpinlock, [:pointer], :bool],
41
+ [:LockSpinlock, :SDL_LockSpinlock, [:pointer], :void],
42
+ [:UnlockSpinlock, :SDL_UnlockSpinlock, [:pointer], :void],
43
+ [:MemoryBarrierReleaseFunction, :SDL_MemoryBarrierReleaseFunction, [], :void],
44
+ [:MemoryBarrierAcquireFunction, :SDL_MemoryBarrierAcquireFunction, [], :void],
45
+ [:CompareAndSwapAtomicInt, :SDL_CompareAndSwapAtomicInt, [:pointer, :int, :int], :bool],
46
+ [:SetAtomicInt, :SDL_SetAtomicInt, [:pointer, :int], :int],
47
+ [:GetAtomicInt, :SDL_GetAtomicInt, [:pointer], :int],
48
+ [:AddAtomicInt, :SDL_AddAtomicInt, [:pointer, :int], :int],
49
+ [:CompareAndSwapAtomicU32, :SDL_CompareAndSwapAtomicU32, [:pointer, :uint, :uint], :bool],
50
+ [:SetAtomicU32, :SDL_SetAtomicU32, [:pointer, :uint], :uint],
51
+ [:GetAtomicU32, :SDL_GetAtomicU32, [:pointer], :uint],
52
+ [:CompareAndSwapAtomicPointer, :SDL_CompareAndSwapAtomicPointer, [:pointer, :pointer, :pointer], :bool],
53
+ [:SetAtomicPointer, :SDL_SetAtomicPointer, [:pointer, :pointer], :pointer],
54
+ [:GetAtomicPointer, :SDL_GetAtomicPointer, [:pointer], :pointer],
55
+ ]
56
+ entries.each do |entry|
57
+ attach_function entry[0], entry[1], entry[2], entry[3]
58
+ rescue FFI::NotFoundError => e
59
+ warn "[Warning] Failed to import #{entry[0]} (#{e})." if output_error
60
+ end
61
+ end
62
+
63
+ end
64
+