sdl2-bindings 0.0.9 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +12 -0
  3. data/README.md +39 -26
  4. data/lib/sdl2.rb +54 -99
  5. data/lib/sdl2_audio.rb +59 -20
  6. data/lib/sdl2_blendmode.rb +28 -25
  7. data/lib/sdl2_clipboard.rb +9 -4
  8. data/lib/sdl2_cpuinfo.rb +28 -5
  9. data/lib/sdl2_error.rb +17 -10
  10. data/lib/sdl2_events.rb +150 -131
  11. data/lib/sdl2_filesystem.rb +8 -4
  12. data/lib/sdl2_framerate.rb +11 -4
  13. data/lib/sdl2_gamecontroller.rb +112 -57
  14. data/lib/sdl2_gesture.rb +10 -4
  15. data/lib/sdl2_gfxPrimitives.rb +65 -4
  16. data/lib/sdl2_haptic.rb +76 -44
  17. data/lib/sdl2_hidapi.rb +26 -5
  18. data/lib/sdl2_hints.rb +146 -137
  19. data/lib/sdl2_image.rb +54 -7
  20. data/lib/sdl2_imageFilter.rb +36 -4
  21. data/lib/sdl2_joystick.rb +93 -38
  22. data/lib/sdl2_keyboard.rb +23 -5
  23. data/lib/sdl2_keycode.rb +6 -4
  24. data/lib/sdl2_log.rb +48 -32
  25. data/lib/sdl2_main.rb +21 -14
  26. data/lib/sdl2_messagebox.rb +26 -22
  27. data/lib/sdl2_misc.rb +7 -4
  28. data/lib/sdl2_mixer.rb +86 -11
  29. data/lib/sdl2_mouse.rb +44 -25
  30. data/lib/sdl2_pixels.rb +115 -99
  31. data/lib/sdl2_platform.rb +7 -4
  32. data/lib/sdl2_power.rb +12 -9
  33. data/lib/sdl2_rect.rb +18 -11
  34. data/lib/sdl2_render.rb +107 -25
  35. data/lib/sdl2_rotozoom.rb +14 -4
  36. data/lib/sdl2_rwops.rb +58 -28
  37. data/lib/sdl2_scancode.rb +250 -248
  38. data/lib/sdl2_sensor.rb +27 -9
  39. data/lib/sdl2_shape.rb +17 -11
  40. data/lib/sdl2_stdinc.rb +135 -10
  41. data/lib/sdl2_surface.rb +56 -15
  42. data/lib/sdl2_syswm.rb +47 -44
  43. data/lib/sdl2_timer.rb +13 -4
  44. data/lib/sdl2_touch.rb +18 -11
  45. data/lib/sdl2_ttf.rb +180 -25
  46. data/lib/sdl2_version.rb +13 -8
  47. data/lib/sdl2_video.rb +204 -110
  48. data/lib/sdl2_vulkan.rb +12 -4
  49. metadata +17 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3aa038a92985398667d1d1b1801b582d5e7e24045153e3b33587f388501b15ad
4
- data.tar.gz: 270593949ed10ce5fd47be33c601204b8e7b38330c59656fd2fc2881c6c62a80
3
+ metadata.gz: 205a5a5f319071f5b61525129b0f9a9a087c33442e7edf846f23615c3f316cbd
4
+ data.tar.gz: b0ead4dcd9e8e44753c40fb2fb154abefda5c957e73d719c72c1b77e087d7a56
5
5
  SHA512:
6
- metadata.gz: 6733bf63d418e81a7e34c9889693f6c6a599a0a38af6acbedcb40736882c67f9469e852740b4aca559c1d52f9862dcf704f01b8ee5dd0594a80a718143ac2977
7
- data.tar.gz: 3a37c4182fa1f80fe6ae2e92f702b21625319d27a3b70c1262976b42a616917e68621169b8e6acf58a23938cff502f0103784cebad374f128f4fe66e8412ecdf
6
+ metadata.gz: acf2ce95e5c3639bb5c84bd49823885b1a2794232796ca1b97f2cc89dc4b106da2482425b37ee9b79ed9ac29d4ba6112b683557ae4040619bf9a92ebb1f769e7
7
+ data.tar.gz: d28d2655a06aa0f46011670fd0829d05cb7096212b6a9e50f6c66e00933364beb8416dfca730a5528f2d495136eb2b53c5a3de6b1a25211fe23c4b747433d2b5
data/ChangeLog CHANGED
@@ -1,3 +1,15 @@
1
+ 2022-01-26 vaiorabbit <http://twitter.com/vaiorabbit>
2
+
3
+ * test/test*.rb: Changed namespace
4
+ * load_lib: Now accepts argument 'output_error'
5
+
6
+ 2022-01-22 vaiorabbit <http://twitter.com/vaiorabbit>
7
+
8
+ * lib/sdl2_ttf.rb: Generated for version 2.0.18
9
+ * generator: Fixed wrong 'by_value' handling
10
+ * .gitignore: Added
11
+ * test/test_opengl.rb: Use opengl-bindings2
12
+
1
13
  2022-01-11 vaiorabbit <http://twitter.com/vaiorabbit>
2
14
 
3
15
  * Added SDL 2.0.20 features ( https://github.com/libsdl-org/SDL/releases/tag/release-2.0.20 )
data/README.md CHANGED
@@ -2,10 +2,8 @@
2
2
 
3
3
  # sdl2-bindings : Yet another SDL2 wrapper for Ruby #
4
4
 
5
- [Notice] Experimental project.
6
-
7
5
  * Created : 2015-09-19
8
- * Last modified : 2022-01-11
6
+ * Last modified : 2022-01-26
9
7
 
10
8
  ## Features ##
11
9
 
@@ -13,31 +11,46 @@
13
11
  * Based on Ruby/FFI
14
12
  * No need to build C extension library
15
13
 
16
-
17
14
  ## Limitations ##
18
15
 
19
- * Some APIs provided by pre-processor cannot be imported.
20
-
21
- ## Tested Environment ##
22
-
23
- * [2015-09-19] SDL 2.0.3 (Installed via Homebrew)
24
- * Mac OS X 10.10.5, ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
25
- * [2016-04-03] SDL 2.0.4 (Installed via Homebrew)
26
- * Mac OS X 10.11.4, ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
27
- * sdl2_gfx : 1.0.1
28
- * sdl2_image : 2.0.1
29
- * sdl2_mixer : 2.0.1
30
- * sdl2_ttf : 2.0.13
31
- * [2019-08-31] SDL 2.0.10 (Installed via Homebrew)
32
- * [2020-03-22] SDL 2.0.12 (Installed via Homebrew)
33
- * [2020-12-27] SDL 2.0.14 (Installed via Homebrew)
34
- * macOS Big Sur (11.0.1), ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [arm64-darwin20]
35
- * [2021-08-12] SDL 2.0.16 (Installed via Homebrew)
36
- * macOS Big Sur (11.5), ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [arm64-darwin20]
37
- * [2021-12-02] SDL 2.0.18 (Installed via Homebrew)
38
- * macOS Big Sur (11.6), ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
39
- * [2022-01-11] SDL 2.0.20
40
- * macOS Monterey (12.1), ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin20]
16
+ * Several original APIs originally defined with pre-processor macro are unavailable in this library (e.g. `SDL_LoadBMP`)
17
+
18
+ ## Target version ##
19
+
20
+ * [2022-01-21]
21
+ * SDL : 2.0.20
22
+ * SDL_image : 2.0.5
23
+ * SDL_mixer : 2.0.4
24
+ * SDL_ttf : 2.0.18
25
+ * SDL2_gfx : 1.0.4
26
+
27
+ <details>
28
+ <summary>Older versions</summary>
29
+
30
+ * [2015-09-19] SDL 2.0.3
31
+ * [2016-04-03] SDL 2.0.4
32
+ * [2019-08-31] SDL 2.0.10
33
+ * [2020-03-22] SDL 2.0.12
34
+ * [2020-12-27] SDL 2.0.14
35
+ * [2021-08-12] SDL 2.0.16
36
+ * [2021-12-02] SDL 2.0.18
37
+
38
+ </details>
39
+
40
+ ## Supported Environments ##
41
+
42
+ * [2022-01-11] macOS Monterey (12.1), ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [arm64-darwin20]
43
+
44
+ <details>
45
+ <summary>Older Environments</summary>
46
+
47
+ * [2021-12-02] macOS Big Sur (11.6), ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [arm64-darwin20]
48
+ * [2021-08-12] macOS Big Sur (11.5), ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [arm64-darwin20]
49
+ * [2020-12-27] macOS Big Sur (11.0.1), ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [arm64-darwin20]
50
+ * [2016-04-03] Mac OS X 10.11.4, ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
51
+ * [2015-09-19] Mac OS X 10.10.5, ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin14]
52
+
53
+ </details>
41
54
 
42
55
  ## License ##
43
56
 
data/lib/sdl2.rb CHANGED
@@ -40,19 +40,23 @@ require_relative 'sdl2_version.rb'
40
40
  require_relative 'sdl2_video.rb'
41
41
  require_relative 'sdl2_vulkan.rb'
42
42
 
43
+ # SDL2_gfx
43
44
  require_relative 'sdl2_framerate.rb'
44
45
  require_relative 'sdl2_gfxPrimitives.rb'
45
- require_relative 'sdl2_image.rb'
46
46
  require_relative 'sdl2_rotozoom.rb'
47
47
  require_relative 'sdl2_imageFilter.rb'
48
- require_relative 'sdl2_ttf.rb'
48
+ # SDL_image
49
+ require_relative 'sdl2_image.rb'
50
+ # SDL_mixer
49
51
  require_relative 'sdl2_mixer.rb'
52
+ # SDL_ttf
53
+ require_relative 'sdl2_ttf.rb'
50
54
 
51
- module SDL2
55
+ module SDL
52
56
  extend FFI::Library
53
57
 
54
58
  @@sdl2_import_done = false
55
- def self.load_lib(libpath, image_libpath: nil, ttf_libpath: nil, mixer_libpath: nil, gfx_libpath: nil)
59
+ def self.load_lib(libpath, output_error = false, image_libpath: nil, ttf_libpath: nil, mixer_libpath: nil, gfx_libpath: nil)
56
60
 
57
61
  unless @@sdl2_import_done
58
62
  # Ref.: Using Multiple and Alternate Libraries
@@ -62,111 +66,62 @@ module SDL2
62
66
 
63
67
  ffi_lib_flags :now, :global
64
68
  ffi_lib *lib_paths
65
- setup_symbols()
66
-
67
- if image_libpath != nil
68
- setup_image_symbols()
69
- end
69
+ setup_symbols(output_error)
70
70
 
71
- if ttf_libpath != nil
72
- setup_ttf_symbols()
73
- end
74
-
75
- if mixer_libpath != nil
76
- setup_mixer_symbols()
77
- end
71
+ setup_image_symbols(output_error) if image_libpath
72
+ setup_ttf_symbols(output_error) if ttf_libpath
73
+ setup_mixer_symbols(output_error) if mixer_libpath
78
74
 
79
75
  if gfx_libpath != nil
80
- setup_gfx_framerate_symbols()
81
- setup_gfx_primitives_symbols()
82
- setup_gfx_imagefilter_symbols()
83
- setup_gfx_rotozoom_symbols()
76
+ setup_gfx_framerate_symbols(output_error)
77
+ setup_gfx_primitives_symbols(output_error)
78
+ setup_gfx_imagefilter_symbols(output_error)
79
+ setup_gfx_rotozoom_symbols(output_error)
84
80
  end
85
81
  rescue => error
86
- puts error
82
+ $stderr.puts("[Warning] Failed to load libraries (#{error}).") if output_error
87
83
  end
88
84
  end
89
85
 
90
86
  end
91
87
 
92
- def self.setup_symbols()
93
- setup_main_symbols()
94
- setup_audio_symbols()
95
- setup_blendmode_symbols()
96
- setup_clipboard_symbols()
97
- setup_cpuinfo_symbols()
98
- setup_error_symbols()
99
- setup_events_symbols()
100
- setup_filesystem_symbols()
101
- setup_gamecontroller_symbols()
102
- setup_gesture_symbols()
103
- setup_haptic_symbols()
104
- setup_hints_symbols()
105
- setup_joystick_symbols()
106
- setup_keyboard_symbols()
107
- setup_keycode_symbols()
108
- setup_log_symbols()
109
- setup_messagebox_symbols()
110
- setup_misc_symbols()
111
- setup_mouse_symbols()
112
- setup_pixels_symbols()
113
- setup_platform_symbols()
114
- setup_power_symbols()
115
- setup_rect_symbols()
116
- setup_render_symbols()
117
- setup_rwops_symbols()
118
- setup_scancode_symbols()
119
- setup_sensor_symbols()
120
- setup_shape_symbols()
121
- setup_surface_symbols()
122
- setup_syswm_symbols()
123
- setup_stdinc_symbols()
124
- setup_timer_symbols()
125
- setup_touch_symbols()
126
- setup_version_symbols()
127
- setup_video_symbols()
128
- setup_vulkan_symbols()
129
- end
130
-
131
- end
132
-
133
-
134
- if __FILE__ == $0
135
- SDL2.load_lib('libSDL2.dylib',
136
- gfx_libpath: '/usr/local/lib/libSDL2_gfx.dylib'
137
- )
138
-
139
- success = SDL2.SDL_Init(SDL2::SDL_INIT_EVERYTHING)
140
- exit if success < 0
141
-
142
- WINDOW_W = 320
143
- WINDOW_H = 240
144
- window = SDL2.SDL_CreateWindow("1st SDL Window via sdl2-bindings", 0, 0, WINDOW_W, WINDOW_H, 0)
145
-
146
- fpsdelay = 100;
147
-
148
- count = 0
149
- event = SDL2::SDL_Event.new
150
- done = false
151
- while not done
152
- while SDL2.SDL_PollEvent(event) != 0
153
- # 'type' and 'timestamp' are common members for all SDL Event structs.
154
- event_type = event[:common][:type]
155
- event_timestamp = event[:common][:timestamp]
156
- puts "Event : type=0x#{event_type.to_s(16)}, timestamp=#{event_timestamp}"
157
-
158
- case event_type
159
- when SDL2::SDL_KEYDOWN
160
- if event[:key][:keysym][:sym] == SDL2::SDLK_SPACE
161
- puts "\tSPACE key pressed."
162
- end
163
- end
164
- end
165
-
166
- count += 1
167
- done = true if count >= 100
168
- SDL2.SDL_Delay(fpsdelay)
88
+ def self.setup_symbols(output_error = false)
89
+ setup_main_symbols(output_error)
90
+ setup_audio_symbols(output_error)
91
+ setup_blendmode_symbols(output_error)
92
+ setup_clipboard_symbols(output_error)
93
+ setup_cpuinfo_symbols(output_error)
94
+ setup_error_symbols(output_error)
95
+ setup_events_symbols(output_error)
96
+ setup_filesystem_symbols(output_error)
97
+ setup_gamecontroller_symbols(output_error)
98
+ setup_gesture_symbols(output_error)
99
+ setup_haptic_symbols(output_error)
100
+ setup_hints_symbols(output_error)
101
+ setup_joystick_symbols(output_error)
102
+ setup_keyboard_symbols(output_error)
103
+ setup_keycode_symbols(output_error)
104
+ setup_log_symbols(output_error)
105
+ setup_messagebox_symbols(output_error)
106
+ setup_misc_symbols(output_error)
107
+ setup_mouse_symbols(output_error)
108
+ setup_pixels_symbols(output_error)
109
+ setup_platform_symbols(output_error)
110
+ setup_power_symbols(output_error)
111
+ setup_rect_symbols(output_error)
112
+ setup_render_symbols(output_error)
113
+ setup_rwops_symbols(output_error)
114
+ setup_scancode_symbols(output_error)
115
+ setup_sensor_symbols(output_error)
116
+ setup_shape_symbols(output_error)
117
+ setup_surface_symbols(output_error)
118
+ setup_syswm_symbols(output_error)
119
+ setup_stdinc_symbols(output_error)
120
+ setup_timer_symbols(output_error)
121
+ setup_touch_symbols(output_error)
122
+ setup_version_symbols(output_error)
123
+ setup_video_symbols(output_error)
124
+ setup_vulkan_symbols(output_error)
169
125
  end
170
126
 
171
- SDL2.SDL_Quit()
172
127
  end
data/lib/sdl2_audio.rb CHANGED
@@ -6,14 +6,14 @@
6
6
 
7
7
  require 'ffi'
8
8
 
9
- module SDL2
9
+ module SDL
10
10
  extend FFI::Library
11
11
  # Define/Macro
12
12
 
13
- SDL_AUDIO_MASK_BITSIZE = 0xFF
14
- SDL_AUDIO_MASK_DATATYPE = (1 << 8)
15
- SDL_AUDIO_MASK_ENDIAN = (1 << 12)
16
- SDL_AUDIO_MASK_SIGNED = (1 << 15)
13
+ AUDIO_MASK_BITSIZE = 0xFF
14
+ AUDIO_MASK_DATATYPE = (1 << 8)
15
+ AUDIO_MASK_ENDIAN = (1 << 12)
16
+ AUDIO_MASK_SIGNED = (1 << 15)
17
17
  AUDIO_U8 = 0x0008
18
18
  AUDIO_S8 = 0x8008
19
19
  AUDIO_U16LSB = 0x0010
@@ -32,19 +32,19 @@ module SDL2
32
32
  AUDIO_S16SYS = AUDIO_S16LSB
33
33
  AUDIO_S32SYS = AUDIO_S32LSB
34
34
  AUDIO_F32SYS = AUDIO_F32LSB
35
- SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = 0x00000001
36
- SDL_AUDIO_ALLOW_FORMAT_CHANGE = 0x00000002
37
- SDL_AUDIO_ALLOW_CHANNELS_CHANGE = 0x00000004
38
- SDL_AUDIO_ALLOW_SAMPLES_CHANGE = 0x00000008
39
- SDL_AUDIO_ALLOW_ANY_CHANGE = (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE | SDL_AUDIO_ALLOW_FORMAT_CHANGE | SDL_AUDIO_ALLOW_CHANNELS_CHANGE | SDL_AUDIO_ALLOW_SAMPLES_CHANGE)
40
- SDL_AUDIOCVT_MAX_FILTERS = 9
41
- SDL_MIX_MAXVOLUME = 128
35
+ AUDIO_ALLOW_FREQUENCY_CHANGE = 0x00000001
36
+ AUDIO_ALLOW_FORMAT_CHANGE = 0x00000002
37
+ AUDIO_ALLOW_CHANNELS_CHANGE = 0x00000004
38
+ AUDIO_ALLOW_SAMPLES_CHANGE = 0x00000008
39
+ AUDIO_ALLOW_ANY_CHANGE = (AUDIO_ALLOW_FREQUENCY_CHANGE | AUDIO_ALLOW_FORMAT_CHANGE | AUDIO_ALLOW_CHANNELS_CHANGE | AUDIO_ALLOW_SAMPLES_CHANGE)
40
+ AUDIOCVT_MAX_FILTERS = 9
41
+ MIX_MAXVOLUME = 128
42
42
 
43
43
  # Enum
44
44
 
45
- SDL_AUDIO_STOPPED = 0
46
- SDL_AUDIO_PLAYING = 1
47
- SDL_AUDIO_PAUSED = 2
45
+ AUDIO_STOPPED = 0
46
+ AUDIO_PLAYING = 1
47
+ AUDIO_PAUSED = 2
48
48
 
49
49
  # Typedef
50
50
 
@@ -56,7 +56,7 @@ module SDL2
56
56
 
57
57
  # Struct
58
58
 
59
- class SDL_AudioSpec < FFI::Struct
59
+ class AudioSpec < FFI::Struct
60
60
  layout(
61
61
  :freq, :int,
62
62
  :format, :ushort,
@@ -70,7 +70,7 @@ module SDL2
70
70
  )
71
71
  end
72
72
 
73
- class SDL_AudioCVT < FFI::Struct
73
+ class AudioCVT < FFI::Struct
74
74
  layout(
75
75
  :needed, :int,
76
76
  :src_format, :ushort,
@@ -89,7 +89,7 @@ module SDL2
89
89
 
90
90
  # Function
91
91
 
92
- def self.setup_audio_symbols()
92
+ def self.setup_audio_symbols(output_error = false)
93
93
  symbols = [
94
94
  :SDL_GetNumAudioDrivers,
95
95
  :SDL_GetAudioDriver,
@@ -129,6 +129,45 @@ module SDL2
129
129
  :SDL_CloseAudio,
130
130
  :SDL_CloseAudioDevice,
131
131
  ]
132
+ apis = {
133
+ :SDL_GetNumAudioDrivers => :GetNumAudioDrivers,
134
+ :SDL_GetAudioDriver => :GetAudioDriver,
135
+ :SDL_AudioInit => :AudioInit,
136
+ :SDL_AudioQuit => :AudioQuit,
137
+ :SDL_GetCurrentAudioDriver => :GetCurrentAudioDriver,
138
+ :SDL_OpenAudio => :OpenAudio,
139
+ :SDL_GetNumAudioDevices => :GetNumAudioDevices,
140
+ :SDL_GetAudioDeviceName => :GetAudioDeviceName,
141
+ :SDL_GetAudioDeviceSpec => :GetAudioDeviceSpec,
142
+ :SDL_OpenAudioDevice => :OpenAudioDevice,
143
+ :SDL_GetAudioStatus => :GetAudioStatus,
144
+ :SDL_GetAudioDeviceStatus => :GetAudioDeviceStatus,
145
+ :SDL_PauseAudio => :PauseAudio,
146
+ :SDL_PauseAudioDevice => :PauseAudioDevice,
147
+ :SDL_LoadWAV_RW => :LoadWAV_RW,
148
+ :SDL_FreeWAV => :FreeWAV,
149
+ :SDL_BuildAudioCVT => :BuildAudioCVT,
150
+ :SDL_ConvertAudio => :ConvertAudio,
151
+ :SDL_NewAudioStream => :NewAudioStream,
152
+ :SDL_AudioStreamPut => :AudioStreamPut,
153
+ :SDL_AudioStreamGet => :AudioStreamGet,
154
+ :SDL_AudioStreamAvailable => :AudioStreamAvailable,
155
+ :SDL_AudioStreamFlush => :AudioStreamFlush,
156
+ :SDL_AudioStreamClear => :AudioStreamClear,
157
+ :SDL_FreeAudioStream => :FreeAudioStream,
158
+ :SDL_MixAudio => :MixAudio,
159
+ :SDL_MixAudioFormat => :MixAudioFormat,
160
+ :SDL_QueueAudio => :QueueAudio,
161
+ :SDL_DequeueAudio => :DequeueAudio,
162
+ :SDL_GetQueuedAudioSize => :GetQueuedAudioSize,
163
+ :SDL_ClearQueuedAudio => :ClearQueuedAudio,
164
+ :SDL_LockAudio => :LockAudio,
165
+ :SDL_LockAudioDevice => :LockAudioDevice,
166
+ :SDL_UnlockAudio => :UnlockAudio,
167
+ :SDL_UnlockAudioDevice => :UnlockAudioDevice,
168
+ :SDL_CloseAudio => :CloseAudio,
169
+ :SDL_CloseAudioDevice => :CloseAudioDevice,
170
+ }
132
171
  args = {
133
172
  :SDL_GetNumAudioDrivers => [],
134
173
  :SDL_GetAudioDriver => [:int],
@@ -209,9 +248,9 @@ module SDL2
209
248
  }
210
249
  symbols.each do |sym|
211
250
  begin
212
- attach_function sym, args[sym], retvals[sym]
251
+ attach_function apis[sym], sym, args[sym], retvals[sym]
213
252
  rescue FFI::NotFoundError => error
214
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
253
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
215
254
  end
216
255
  end
217
256
  end
@@ -6,34 +6,34 @@
6
6
 
7
7
  require 'ffi'
8
8
 
9
- module SDL2
9
+ module SDL
10
10
  extend FFI::Library
11
11
  # Define/Macro
12
12
 
13
13
 
14
14
  # Enum
15
15
 
16
- SDL_BLENDMODE_NONE = 0
17
- SDL_BLENDMODE_BLEND = 1
18
- SDL_BLENDMODE_ADD = 2
19
- SDL_BLENDMODE_MOD = 4
20
- SDL_BLENDMODE_MUL = 8
21
- SDL_BLENDMODE_INVALID = 2147483647
22
- SDL_BLENDOPERATION_ADD = 1
23
- SDL_BLENDOPERATION_SUBTRACT = 2
24
- SDL_BLENDOPERATION_REV_SUBTRACT = 3
25
- SDL_BLENDOPERATION_MINIMUM = 4
26
- SDL_BLENDOPERATION_MAXIMUM = 5
27
- SDL_BLENDFACTOR_ZERO = 1
28
- SDL_BLENDFACTOR_ONE = 2
29
- SDL_BLENDFACTOR_SRC_COLOR = 3
30
- SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 4
31
- SDL_BLENDFACTOR_SRC_ALPHA = 5
32
- SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 6
33
- SDL_BLENDFACTOR_DST_COLOR = 7
34
- SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 8
35
- SDL_BLENDFACTOR_DST_ALPHA = 9
36
- SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 10
16
+ BLENDMODE_NONE = 0
17
+ BLENDMODE_BLEND = 1
18
+ BLENDMODE_ADD = 2
19
+ BLENDMODE_MOD = 4
20
+ BLENDMODE_MUL = 8
21
+ BLENDMODE_INVALID = 2147483647
22
+ BLENDOPERATION_ADD = 1
23
+ BLENDOPERATION_SUBTRACT = 2
24
+ BLENDOPERATION_REV_SUBTRACT = 3
25
+ BLENDOPERATION_MINIMUM = 4
26
+ BLENDOPERATION_MAXIMUM = 5
27
+ BLENDFACTOR_ZERO = 1
28
+ BLENDFACTOR_ONE = 2
29
+ BLENDFACTOR_SRC_COLOR = 3
30
+ BLENDFACTOR_ONE_MINUS_SRC_COLOR = 4
31
+ BLENDFACTOR_SRC_ALPHA = 5
32
+ BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 6
33
+ BLENDFACTOR_DST_COLOR = 7
34
+ BLENDFACTOR_ONE_MINUS_DST_COLOR = 8
35
+ BLENDFACTOR_DST_ALPHA = 9
36
+ BLENDFACTOR_ONE_MINUS_DST_ALPHA = 10
37
37
 
38
38
  # Typedef
39
39
 
@@ -46,10 +46,13 @@ module SDL2
46
46
 
47
47
  # Function
48
48
 
49
- def self.setup_blendmode_symbols()
49
+ def self.setup_blendmode_symbols(output_error = false)
50
50
  symbols = [
51
51
  :SDL_ComposeCustomBlendMode,
52
52
  ]
53
+ apis = {
54
+ :SDL_ComposeCustomBlendMode => :ComposeCustomBlendMode,
55
+ }
53
56
  args = {
54
57
  :SDL_ComposeCustomBlendMode => [:int, :int, :int, :int, :int, :int],
55
58
  }
@@ -58,9 +61,9 @@ module SDL2
58
61
  }
59
62
  symbols.each do |sym|
60
63
  begin
61
- attach_function sym, args[sym], retvals[sym]
64
+ attach_function apis[sym], sym, args[sym], retvals[sym]
62
65
  rescue FFI::NotFoundError => error
63
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
66
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
64
67
  end
65
68
  end
66
69
  end
@@ -6,7 +6,7 @@
6
6
 
7
7
  require 'ffi'
8
8
 
9
- module SDL2
9
+ module SDL
10
10
  extend FFI::Library
11
11
  # Define/Macro
12
12
 
@@ -22,12 +22,17 @@ module SDL2
22
22
 
23
23
  # Function
24
24
 
25
- def self.setup_clipboard_symbols()
25
+ def self.setup_clipboard_symbols(output_error = false)
26
26
  symbols = [
27
27
  :SDL_SetClipboardText,
28
28
  :SDL_GetClipboardText,
29
29
  :SDL_HasClipboardText,
30
30
  ]
31
+ apis = {
32
+ :SDL_SetClipboardText => :SetClipboardText,
33
+ :SDL_GetClipboardText => :GetClipboardText,
34
+ :SDL_HasClipboardText => :HasClipboardText,
35
+ }
31
36
  args = {
32
37
  :SDL_SetClipboardText => [:pointer],
33
38
  :SDL_GetClipboardText => [],
@@ -40,9 +45,9 @@ module SDL2
40
45
  }
41
46
  symbols.each do |sym|
42
47
  begin
43
- attach_function sym, args[sym], retvals[sym]
48
+ attach_function apis[sym], sym, args[sym], retvals[sym]
44
49
  rescue FFI::NotFoundError => error
45
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
50
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
46
51
  end
47
52
  end
48
53
  end
data/lib/sdl2_cpuinfo.rb CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  require 'ffi'
8
8
 
9
- module SDL2
9
+ module SDL
10
10
  extend FFI::Library
11
11
  # Define/Macro
12
12
 
13
- SDL_CACHELINE_SIZE = 128
13
+ CACHELINE_SIZE = 128
14
14
 
15
15
  # Enum
16
16
 
@@ -23,7 +23,7 @@ module SDL2
23
23
 
24
24
  # Function
25
25
 
26
- def self.setup_cpuinfo_symbols()
26
+ def self.setup_cpuinfo_symbols(output_error = false)
27
27
  symbols = [
28
28
  :SDL_GetCPUCount,
29
29
  :SDL_GetCPUCacheLineSize,
@@ -47,6 +47,29 @@ module SDL2
47
47
  :SDL_SIMDRealloc,
48
48
  :SDL_SIMDFree,
49
49
  ]
50
+ apis = {
51
+ :SDL_GetCPUCount => :GetCPUCount,
52
+ :SDL_GetCPUCacheLineSize => :GetCPUCacheLineSize,
53
+ :SDL_HasRDTSC => :HasRDTSC,
54
+ :SDL_HasAltiVec => :HasAltiVec,
55
+ :SDL_HasMMX => :HasMMX,
56
+ :SDL_Has3DNow => :Has3DNow,
57
+ :SDL_HasSSE => :HasSSE,
58
+ :SDL_HasSSE2 => :HasSSE2,
59
+ :SDL_HasSSE3 => :HasSSE3,
60
+ :SDL_HasSSE41 => :HasSSE41,
61
+ :SDL_HasSSE42 => :HasSSE42,
62
+ :SDL_HasAVX => :HasAVX,
63
+ :SDL_HasAVX2 => :HasAVX2,
64
+ :SDL_HasAVX512F => :HasAVX512F,
65
+ :SDL_HasARMSIMD => :HasARMSIMD,
66
+ :SDL_HasNEON => :HasNEON,
67
+ :SDL_GetSystemRAM => :GetSystemRAM,
68
+ :SDL_SIMDGetAlignment => :SIMDGetAlignment,
69
+ :SDL_SIMDAlloc => :SIMDAlloc,
70
+ :SDL_SIMDRealloc => :SIMDRealloc,
71
+ :SDL_SIMDFree => :SIMDFree,
72
+ }
50
73
  args = {
51
74
  :SDL_GetCPUCount => [],
52
75
  :SDL_GetCPUCacheLineSize => [],
@@ -95,9 +118,9 @@ module SDL2
95
118
  }
96
119
  symbols.each do |sym|
97
120
  begin
98
- attach_function sym, args[sym], retvals[sym]
121
+ attach_function apis[sym], sym, args[sym], retvals[sym]
99
122
  rescue FFI::NotFoundError => error
100
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
123
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
101
124
  end
102
125
  end
103
126
  end
data/lib/sdl2_error.rb CHANGED
@@ -6,19 +6,19 @@
6
6
 
7
7
  require 'ffi'
8
8
 
9
- module SDL2
9
+ module SDL
10
10
  extend FFI::Library
11
11
  # Define/Macro
12
12
 
13
13
 
14
14
  # Enum
15
15
 
16
- SDL_ENOMEM = 0
17
- SDL_EFREAD = 1
18
- SDL_EFWRITE = 2
19
- SDL_EFSEEK = 3
20
- SDL_UNSUPPORTED = 4
21
- SDL_LASTERROR = 5
16
+ ENOMEM = 0
17
+ EFREAD = 1
18
+ EFWRITE = 2
19
+ EFSEEK = 3
20
+ UNSUPPORTED = 4
21
+ LASTERROR = 5
22
22
 
23
23
  # Typedef
24
24
 
@@ -29,7 +29,7 @@ module SDL2
29
29
 
30
30
  # Function
31
31
 
32
- def self.setup_error_symbols()
32
+ def self.setup_error_symbols(output_error = false)
33
33
  symbols = [
34
34
  :SDL_SetError,
35
35
  :SDL_GetError,
@@ -37,6 +37,13 @@ module SDL2
37
37
  :SDL_ClearError,
38
38
  :SDL_Error,
39
39
  ]
40
+ apis = {
41
+ :SDL_SetError => :SetError,
42
+ :SDL_GetError => :GetError,
43
+ :SDL_GetErrorMsg => :GetErrorMsg,
44
+ :SDL_ClearError => :ClearError,
45
+ :SDL_Error => :Error,
46
+ }
40
47
  args = {
41
48
  :SDL_SetError => [:pointer],
42
49
  :SDL_GetError => [],
@@ -53,9 +60,9 @@ module SDL2
53
60
  }
54
61
  symbols.each do |sym|
55
62
  begin
56
- attach_function sym, args[sym], retvals[sym]
63
+ attach_function apis[sym], sym, args[sym], retvals[sym]
57
64
  rescue FFI::NotFoundError => error
58
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
65
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
59
66
  end
60
67
  end
61
68
  end