sdl2-bindings 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +79 -69
  3. data/LICENSE.txt +0 -0
  4. data/README.md +49 -47
  5. data/lib/sdl2.rb +170 -170
  6. data/lib/sdl2_audio.rb +201 -200
  7. data/lib/sdl2_blendmode.rb +69 -69
  8. data/lib/sdl2_clipboard.rb +51 -51
  9. data/lib/sdl2_cpuinfo.rb +106 -103
  10. data/lib/sdl2_error.rb +64 -61
  11. data/lib/sdl2_events.rb +530 -500
  12. data/lib/sdl2_filesystem.rb +48 -48
  13. data/lib/sdl2_framerate.rb +67 -67
  14. data/lib/sdl2_gamecontroller.rb +254 -207
  15. data/lib/sdl2_gesture.rb +55 -55
  16. data/lib/sdl2_gfxPrimitives.rb +222 -222
  17. data/lib/sdl2_haptic.rb +269 -268
  18. data/lib/sdl2_hints.rb +174 -159
  19. data/lib/sdl2_image.rb +185 -185
  20. data/lib/sdl2_imageFilter.rb +132 -132
  21. data/lib/sdl2_joystick.rb +230 -199
  22. data/lib/sdl2_keyboard.rb +99 -99
  23. data/lib/sdl2_keycode.rb +304 -300
  24. data/lib/sdl2_log.rb +115 -115
  25. data/lib/sdl2_main.rb +67 -67
  26. data/lib/sdl2_messagebox.rb +98 -98
  27. data/lib/sdl2_mixer.rb +307 -307
  28. data/lib/sdl2_mouse.rb +117 -117
  29. data/lib/sdl2_pixels.rb +224 -218
  30. data/lib/sdl2_platform.rb +45 -45
  31. data/lib/sdl2_power.rb +51 -51
  32. data/lib/sdl2_rect.rb +102 -102
  33. data/lib/sdl2_render.rb +290 -290
  34. data/lib/sdl2_rotozoom.rb +66 -66
  35. data/lib/sdl2_rwops.rb +208 -208
  36. data/lib/sdl2_scancode.rb +287 -287
  37. data/lib/sdl2_shape.rb +77 -77
  38. data/lib/sdl2_stdinc.rb +393 -370
  39. data/lib/sdl2_surface.rb +182 -179
  40. data/lib/sdl2_syswm.rb +154 -154
  41. data/lib/sdl2_timer.rb +62 -62
  42. data/lib/sdl2_touch.rb +73 -73
  43. data/lib/sdl2_ttf.rb +190 -190
  44. data/lib/sdl2_version.rb +62 -62
  45. data/lib/sdl2_video.rb +411 -407
  46. data/lib/sdl2_vulkan.rb +64 -64
  47. metadata +5 -5
@@ -1,307 +1,307 @@
1
- # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
- #
3
- # * https://github.com/vaiorabbit/sdl2-bindings
4
- #
5
- # [NOTICE] This is an automatically generated file.
6
-
7
- require 'ffi'
8
-
9
- module SDL2
10
- extend FFI::Library
11
- # Define/Macro
12
-
13
- SDL_MIXER_MAJOR_VERSION = 2
14
- SDL_MIXER_MINOR_VERSION = 0
15
- SDL_MIXER_PATCHLEVEL = 4
16
-
17
- # Enum
18
-
19
- MIX_INIT_FLAC = 1
20
- MIX_INIT_MOD = 2
21
- MIX_INIT_MP3 = 8
22
- MIX_INIT_OGG = 16
23
- MIX_INIT_MID = 32
24
- MIX_INIT_OPUS = 64
25
- MIX_NO_FADING = 0
26
- MIX_FADING_OUT = 1
27
- MIX_FADING_IN = 2
28
- MUS_NONE = 0
29
- MUS_CMD = 1
30
- MUS_WAV = 2
31
- MUS_MOD = 3
32
- MUS_MID = 4
33
- MUS_OGG = 5
34
- MUS_MP3 = 6
35
- MUS_MP3_MAD_UNUSED = 7
36
- MUS_FLAC = 8
37
- MUS_MODPLUG_UNUSED = 9
38
- MUS_OPUS = 10
39
-
40
- # Typedef
41
-
42
- typedef :int, :MIX_InitFlags
43
- typedef :int, :Mix_Fading
44
- typedef :int, :Mix_MusicType
45
- callback :Mix_EffectFunc_t, [:int, :pointer, :int, :pointer], :void
46
- callback :Mix_EffectDone_t, [:int, :pointer], :void
47
-
48
- # Struct
49
-
50
- class Mix_Chunk < FFI::Struct
51
- layout(
52
- :allocated, :int,
53
- :abuf, :pointer,
54
- :alen, :uint,
55
- :volume, :uchar,
56
- )
57
- end
58
-
59
-
60
- # Function
61
-
62
- def self.setup_mixer_symbols()
63
- symbols = [
64
- :Mix_Linked_Version,
65
- :Mix_Init,
66
- :Mix_Quit,
67
- :Mix_OpenAudio,
68
- :Mix_OpenAudioDevice,
69
- :Mix_AllocateChannels,
70
- :Mix_QuerySpec,
71
- :Mix_LoadWAV_RW,
72
- :Mix_LoadMUS,
73
- :Mix_LoadMUS_RW,
74
- :Mix_LoadMUSType_RW,
75
- :Mix_QuickLoad_WAV,
76
- :Mix_QuickLoad_RAW,
77
- :Mix_FreeChunk,
78
- :Mix_FreeMusic,
79
- :Mix_GetNumChunkDecoders,
80
- :Mix_GetChunkDecoder,
81
- :Mix_HasChunkDecoder,
82
- :Mix_GetNumMusicDecoders,
83
- :Mix_GetMusicDecoder,
84
- :Mix_HasMusicDecoder,
85
- :Mix_GetMusicType,
86
- :Mix_SetPostMix,
87
- :Mix_HookMusic,
88
- :Mix_HookMusicFinished,
89
- :Mix_GetMusicHookData,
90
- :Mix_ChannelFinished,
91
- :Mix_RegisterEffect,
92
- :Mix_UnregisterEffect,
93
- :Mix_UnregisterAllEffects,
94
- :Mix_SetPanning,
95
- :Mix_SetPosition,
96
- :Mix_SetDistance,
97
- :Mix_SetReverseStereo,
98
- :Mix_ReserveChannels,
99
- :Mix_GroupChannel,
100
- :Mix_GroupChannels,
101
- :Mix_GroupAvailable,
102
- :Mix_GroupCount,
103
- :Mix_GroupOldest,
104
- :Mix_GroupNewer,
105
- :Mix_PlayChannelTimed,
106
- :Mix_PlayMusic,
107
- :Mix_FadeInMusic,
108
- :Mix_FadeInMusicPos,
109
- :Mix_FadeInChannelTimed,
110
- :Mix_Volume,
111
- :Mix_VolumeChunk,
112
- :Mix_VolumeMusic,
113
- :Mix_HaltChannel,
114
- :Mix_HaltGroup,
115
- :Mix_HaltMusic,
116
- :Mix_ExpireChannel,
117
- :Mix_FadeOutChannel,
118
- :Mix_FadeOutGroup,
119
- :Mix_FadeOutMusic,
120
- :Mix_FadingMusic,
121
- :Mix_FadingChannel,
122
- :Mix_Pause,
123
- :Mix_Resume,
124
- :Mix_Paused,
125
- :Mix_PauseMusic,
126
- :Mix_ResumeMusic,
127
- :Mix_RewindMusic,
128
- :Mix_PausedMusic,
129
- :Mix_SetMusicPosition,
130
- :Mix_Playing,
131
- :Mix_PlayingMusic,
132
- :Mix_SetMusicCMD,
133
- :Mix_SetSynchroValue,
134
- :Mix_GetSynchroValue,
135
- :Mix_SetSoundFonts,
136
- :Mix_GetSoundFonts,
137
- :Mix_EachSoundFont,
138
- :Mix_GetChunk,
139
- :Mix_CloseAudio,
140
- ]
141
- args = {
142
- :Mix_Linked_Version => [],
143
- :Mix_Init => [:int],
144
- :Mix_Quit => [],
145
- :Mix_OpenAudio => [:int, :ushort, :int, :int],
146
- :Mix_OpenAudioDevice => [:int, :ushort, :int, :int, :pointer, :int],
147
- :Mix_AllocateChannels => [:int],
148
- :Mix_QuerySpec => [:pointer, :pointer, :pointer],
149
- :Mix_LoadWAV_RW => [:pointer, :int],
150
- :Mix_LoadMUS => [:pointer],
151
- :Mix_LoadMUS_RW => [:pointer, :int],
152
- :Mix_LoadMUSType_RW => [:pointer, :int, :int],
153
- :Mix_QuickLoad_WAV => [:pointer],
154
- :Mix_QuickLoad_RAW => [:pointer, :uint],
155
- :Mix_FreeChunk => [:pointer],
156
- :Mix_FreeMusic => [:pointer],
157
- :Mix_GetNumChunkDecoders => [],
158
- :Mix_GetChunkDecoder => [:int],
159
- :Mix_HasChunkDecoder => [:pointer],
160
- :Mix_GetNumMusicDecoders => [],
161
- :Mix_GetMusicDecoder => [:int],
162
- :Mix_HasMusicDecoder => [:pointer],
163
- :Mix_GetMusicType => [:pointer],
164
- :Mix_SetPostMix => [:pointer, :pointer],
165
- :Mix_HookMusic => [:pointer, :pointer],
166
- :Mix_HookMusicFinished => [:pointer],
167
- :Mix_GetMusicHookData => [],
168
- :Mix_ChannelFinished => [:pointer],
169
- :Mix_RegisterEffect => [:int, :Mix_EffectFunc_t, :Mix_EffectDone_t, :pointer],
170
- :Mix_UnregisterEffect => [:int, :Mix_EffectFunc_t],
171
- :Mix_UnregisterAllEffects => [:int],
172
- :Mix_SetPanning => [:int, :uchar, :uchar],
173
- :Mix_SetPosition => [:int, :short, :uchar],
174
- :Mix_SetDistance => [:int, :uchar],
175
- :Mix_SetReverseStereo => [:int, :int],
176
- :Mix_ReserveChannels => [:int],
177
- :Mix_GroupChannel => [:int, :int],
178
- :Mix_GroupChannels => [:int, :int, :int],
179
- :Mix_GroupAvailable => [:int],
180
- :Mix_GroupCount => [:int],
181
- :Mix_GroupOldest => [:int],
182
- :Mix_GroupNewer => [:int],
183
- :Mix_PlayChannelTimed => [:int, :pointer, :int, :int],
184
- :Mix_PlayMusic => [:pointer, :int],
185
- :Mix_FadeInMusic => [:pointer, :int, :int],
186
- :Mix_FadeInMusicPos => [:pointer, :int, :int, :double],
187
- :Mix_FadeInChannelTimed => [:int, :pointer, :int, :int, :int],
188
- :Mix_Volume => [:int, :int],
189
- :Mix_VolumeChunk => [:pointer, :int],
190
- :Mix_VolumeMusic => [:int],
191
- :Mix_HaltChannel => [:int],
192
- :Mix_HaltGroup => [:int],
193
- :Mix_HaltMusic => [],
194
- :Mix_ExpireChannel => [:int, :int],
195
- :Mix_FadeOutChannel => [:int, :int],
196
- :Mix_FadeOutGroup => [:int, :int],
197
- :Mix_FadeOutMusic => [:int],
198
- :Mix_FadingMusic => [],
199
- :Mix_FadingChannel => [:int],
200
- :Mix_Pause => [:int],
201
- :Mix_Resume => [:int],
202
- :Mix_Paused => [:int],
203
- :Mix_PauseMusic => [],
204
- :Mix_ResumeMusic => [],
205
- :Mix_RewindMusic => [],
206
- :Mix_PausedMusic => [],
207
- :Mix_SetMusicPosition => [:double],
208
- :Mix_Playing => [:int],
209
- :Mix_PlayingMusic => [],
210
- :Mix_SetMusicCMD => [:pointer],
211
- :Mix_SetSynchroValue => [:int],
212
- :Mix_GetSynchroValue => [],
213
- :Mix_SetSoundFonts => [:pointer],
214
- :Mix_GetSoundFonts => [],
215
- :Mix_EachSoundFont => [:pointer, :pointer],
216
- :Mix_GetChunk => [:int],
217
- :Mix_CloseAudio => [],
218
- }
219
- retvals = {
220
- :Mix_Linked_Version => :pointer,
221
- :Mix_Init => :int,
222
- :Mix_Quit => :void,
223
- :Mix_OpenAudio => :int,
224
- :Mix_OpenAudioDevice => :int,
225
- :Mix_AllocateChannels => :int,
226
- :Mix_QuerySpec => :int,
227
- :Mix_LoadWAV_RW => :pointer,
228
- :Mix_LoadMUS => :pointer,
229
- :Mix_LoadMUS_RW => :pointer,
230
- :Mix_LoadMUSType_RW => :pointer,
231
- :Mix_QuickLoad_WAV => :pointer,
232
- :Mix_QuickLoad_RAW => :pointer,
233
- :Mix_FreeChunk => :void,
234
- :Mix_FreeMusic => :void,
235
- :Mix_GetNumChunkDecoders => :int,
236
- :Mix_GetChunkDecoder => :pointer,
237
- :Mix_HasChunkDecoder => :int,
238
- :Mix_GetNumMusicDecoders => :int,
239
- :Mix_GetMusicDecoder => :pointer,
240
- :Mix_HasMusicDecoder => :int,
241
- :Mix_GetMusicType => :int,
242
- :Mix_SetPostMix => :void,
243
- :Mix_HookMusic => :void,
244
- :Mix_HookMusicFinished => :void,
245
- :Mix_GetMusicHookData => :pointer,
246
- :Mix_ChannelFinished => :void,
247
- :Mix_RegisterEffect => :int,
248
- :Mix_UnregisterEffect => :int,
249
- :Mix_UnregisterAllEffects => :int,
250
- :Mix_SetPanning => :int,
251
- :Mix_SetPosition => :int,
252
- :Mix_SetDistance => :int,
253
- :Mix_SetReverseStereo => :int,
254
- :Mix_ReserveChannels => :int,
255
- :Mix_GroupChannel => :int,
256
- :Mix_GroupChannels => :int,
257
- :Mix_GroupAvailable => :int,
258
- :Mix_GroupCount => :int,
259
- :Mix_GroupOldest => :int,
260
- :Mix_GroupNewer => :int,
261
- :Mix_PlayChannelTimed => :int,
262
- :Mix_PlayMusic => :int,
263
- :Mix_FadeInMusic => :int,
264
- :Mix_FadeInMusicPos => :int,
265
- :Mix_FadeInChannelTimed => :int,
266
- :Mix_Volume => :int,
267
- :Mix_VolumeChunk => :int,
268
- :Mix_VolumeMusic => :int,
269
- :Mix_HaltChannel => :int,
270
- :Mix_HaltGroup => :int,
271
- :Mix_HaltMusic => :int,
272
- :Mix_ExpireChannel => :int,
273
- :Mix_FadeOutChannel => :int,
274
- :Mix_FadeOutGroup => :int,
275
- :Mix_FadeOutMusic => :int,
276
- :Mix_FadingMusic => :int,
277
- :Mix_FadingChannel => :int,
278
- :Mix_Pause => :void,
279
- :Mix_Resume => :void,
280
- :Mix_Paused => :int,
281
- :Mix_PauseMusic => :void,
282
- :Mix_ResumeMusic => :void,
283
- :Mix_RewindMusic => :void,
284
- :Mix_PausedMusic => :int,
285
- :Mix_SetMusicPosition => :int,
286
- :Mix_Playing => :int,
287
- :Mix_PlayingMusic => :int,
288
- :Mix_SetMusicCMD => :int,
289
- :Mix_SetSynchroValue => :int,
290
- :Mix_GetSynchroValue => :int,
291
- :Mix_SetSoundFonts => :int,
292
- :Mix_GetSoundFonts => :pointer,
293
- :Mix_EachSoundFont => :int,
294
- :Mix_GetChunk => :pointer,
295
- :Mix_CloseAudio => :void,
296
- }
297
- symbols.each do |sym|
298
- begin
299
- attach_function sym, args[sym], retvals[sym]
300
- rescue FFI::NotFoundError => error
301
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
302
- end
303
- end
304
- end
305
-
306
- end
307
-
1
+ # Ruby-SDL2 : Yet another SDL2 wrapper for Ruby
2
+ #
3
+ # * https://github.com/vaiorabbit/sdl2-bindings
4
+ #
5
+ # [NOTICE] This is an automatically generated file.
6
+
7
+ require 'ffi'
8
+
9
+ module SDL2
10
+ extend FFI::Library
11
+ # Define/Macro
12
+
13
+ SDL_MIXER_MAJOR_VERSION = 2
14
+ SDL_MIXER_MINOR_VERSION = 0
15
+ SDL_MIXER_PATCHLEVEL = 4
16
+
17
+ # Enum
18
+
19
+ MIX_INIT_FLAC = 1
20
+ MIX_INIT_MOD = 2
21
+ MIX_INIT_MP3 = 8
22
+ MIX_INIT_OGG = 16
23
+ MIX_INIT_MID = 32
24
+ MIX_INIT_OPUS = 64
25
+ MIX_NO_FADING = 0
26
+ MIX_FADING_OUT = 1
27
+ MIX_FADING_IN = 2
28
+ MUS_NONE = 0
29
+ MUS_CMD = 1
30
+ MUS_WAV = 2
31
+ MUS_MOD = 3
32
+ MUS_MID = 4
33
+ MUS_OGG = 5
34
+ MUS_MP3 = 6
35
+ MUS_MP3_MAD_UNUSED = 7
36
+ MUS_FLAC = 8
37
+ MUS_MODPLUG_UNUSED = 9
38
+ MUS_OPUS = 10
39
+
40
+ # Typedef
41
+
42
+ typedef :int, :MIX_InitFlags
43
+ typedef :int, :Mix_Fading
44
+ typedef :int, :Mix_MusicType
45
+ callback :Mix_EffectFunc_t, [:int, :pointer, :int, :pointer], :void
46
+ callback :Mix_EffectDone_t, [:int, :pointer], :void
47
+
48
+ # Struct
49
+
50
+ class Mix_Chunk < FFI::Struct
51
+ layout(
52
+ :allocated, :int,
53
+ :abuf, :pointer,
54
+ :alen, :uint,
55
+ :volume, :uchar,
56
+ )
57
+ end
58
+
59
+
60
+ # Function
61
+
62
+ def self.setup_mixer_symbols()
63
+ symbols = [
64
+ :Mix_Linked_Version,
65
+ :Mix_Init,
66
+ :Mix_Quit,
67
+ :Mix_OpenAudio,
68
+ :Mix_OpenAudioDevice,
69
+ :Mix_AllocateChannels,
70
+ :Mix_QuerySpec,
71
+ :Mix_LoadWAV_RW,
72
+ :Mix_LoadMUS,
73
+ :Mix_LoadMUS_RW,
74
+ :Mix_LoadMUSType_RW,
75
+ :Mix_QuickLoad_WAV,
76
+ :Mix_QuickLoad_RAW,
77
+ :Mix_FreeChunk,
78
+ :Mix_FreeMusic,
79
+ :Mix_GetNumChunkDecoders,
80
+ :Mix_GetChunkDecoder,
81
+ :Mix_HasChunkDecoder,
82
+ :Mix_GetNumMusicDecoders,
83
+ :Mix_GetMusicDecoder,
84
+ :Mix_HasMusicDecoder,
85
+ :Mix_GetMusicType,
86
+ :Mix_SetPostMix,
87
+ :Mix_HookMusic,
88
+ :Mix_HookMusicFinished,
89
+ :Mix_GetMusicHookData,
90
+ :Mix_ChannelFinished,
91
+ :Mix_RegisterEffect,
92
+ :Mix_UnregisterEffect,
93
+ :Mix_UnregisterAllEffects,
94
+ :Mix_SetPanning,
95
+ :Mix_SetPosition,
96
+ :Mix_SetDistance,
97
+ :Mix_SetReverseStereo,
98
+ :Mix_ReserveChannels,
99
+ :Mix_GroupChannel,
100
+ :Mix_GroupChannels,
101
+ :Mix_GroupAvailable,
102
+ :Mix_GroupCount,
103
+ :Mix_GroupOldest,
104
+ :Mix_GroupNewer,
105
+ :Mix_PlayChannelTimed,
106
+ :Mix_PlayMusic,
107
+ :Mix_FadeInMusic,
108
+ :Mix_FadeInMusicPos,
109
+ :Mix_FadeInChannelTimed,
110
+ :Mix_Volume,
111
+ :Mix_VolumeChunk,
112
+ :Mix_VolumeMusic,
113
+ :Mix_HaltChannel,
114
+ :Mix_HaltGroup,
115
+ :Mix_HaltMusic,
116
+ :Mix_ExpireChannel,
117
+ :Mix_FadeOutChannel,
118
+ :Mix_FadeOutGroup,
119
+ :Mix_FadeOutMusic,
120
+ :Mix_FadingMusic,
121
+ :Mix_FadingChannel,
122
+ :Mix_Pause,
123
+ :Mix_Resume,
124
+ :Mix_Paused,
125
+ :Mix_PauseMusic,
126
+ :Mix_ResumeMusic,
127
+ :Mix_RewindMusic,
128
+ :Mix_PausedMusic,
129
+ :Mix_SetMusicPosition,
130
+ :Mix_Playing,
131
+ :Mix_PlayingMusic,
132
+ :Mix_SetMusicCMD,
133
+ :Mix_SetSynchroValue,
134
+ :Mix_GetSynchroValue,
135
+ :Mix_SetSoundFonts,
136
+ :Mix_GetSoundFonts,
137
+ :Mix_EachSoundFont,
138
+ :Mix_GetChunk,
139
+ :Mix_CloseAudio,
140
+ ]
141
+ args = {
142
+ :Mix_Linked_Version => [],
143
+ :Mix_Init => [:int],
144
+ :Mix_Quit => [],
145
+ :Mix_OpenAudio => [:int, :ushort, :int, :int],
146
+ :Mix_OpenAudioDevice => [:int, :ushort, :int, :int, :pointer, :int],
147
+ :Mix_AllocateChannels => [:int],
148
+ :Mix_QuerySpec => [:pointer, :pointer, :pointer],
149
+ :Mix_LoadWAV_RW => [:pointer, :int],
150
+ :Mix_LoadMUS => [:pointer],
151
+ :Mix_LoadMUS_RW => [:pointer, :int],
152
+ :Mix_LoadMUSType_RW => [:pointer, :int, :int],
153
+ :Mix_QuickLoad_WAV => [:pointer],
154
+ :Mix_QuickLoad_RAW => [:pointer, :uint],
155
+ :Mix_FreeChunk => [:pointer],
156
+ :Mix_FreeMusic => [:pointer],
157
+ :Mix_GetNumChunkDecoders => [],
158
+ :Mix_GetChunkDecoder => [:int],
159
+ :Mix_HasChunkDecoder => [:pointer],
160
+ :Mix_GetNumMusicDecoders => [],
161
+ :Mix_GetMusicDecoder => [:int],
162
+ :Mix_HasMusicDecoder => [:pointer],
163
+ :Mix_GetMusicType => [:pointer],
164
+ :Mix_SetPostMix => [:pointer, :pointer],
165
+ :Mix_HookMusic => [:pointer, :pointer],
166
+ :Mix_HookMusicFinished => [:pointer],
167
+ :Mix_GetMusicHookData => [],
168
+ :Mix_ChannelFinished => [:pointer],
169
+ :Mix_RegisterEffect => [:int, :Mix_EffectFunc_t, :Mix_EffectDone_t, :pointer],
170
+ :Mix_UnregisterEffect => [:int, :Mix_EffectFunc_t],
171
+ :Mix_UnregisterAllEffects => [:int],
172
+ :Mix_SetPanning => [:int, :uchar, :uchar],
173
+ :Mix_SetPosition => [:int, :short, :uchar],
174
+ :Mix_SetDistance => [:int, :uchar],
175
+ :Mix_SetReverseStereo => [:int, :int],
176
+ :Mix_ReserveChannels => [:int],
177
+ :Mix_GroupChannel => [:int, :int],
178
+ :Mix_GroupChannels => [:int, :int, :int],
179
+ :Mix_GroupAvailable => [:int],
180
+ :Mix_GroupCount => [:int],
181
+ :Mix_GroupOldest => [:int],
182
+ :Mix_GroupNewer => [:int],
183
+ :Mix_PlayChannelTimed => [:int, :pointer, :int, :int],
184
+ :Mix_PlayMusic => [:pointer, :int],
185
+ :Mix_FadeInMusic => [:pointer, :int, :int],
186
+ :Mix_FadeInMusicPos => [:pointer, :int, :int, :double],
187
+ :Mix_FadeInChannelTimed => [:int, :pointer, :int, :int, :int],
188
+ :Mix_Volume => [:int, :int],
189
+ :Mix_VolumeChunk => [:pointer, :int],
190
+ :Mix_VolumeMusic => [:int],
191
+ :Mix_HaltChannel => [:int],
192
+ :Mix_HaltGroup => [:int],
193
+ :Mix_HaltMusic => [],
194
+ :Mix_ExpireChannel => [:int, :int],
195
+ :Mix_FadeOutChannel => [:int, :int],
196
+ :Mix_FadeOutGroup => [:int, :int],
197
+ :Mix_FadeOutMusic => [:int],
198
+ :Mix_FadingMusic => [],
199
+ :Mix_FadingChannel => [:int],
200
+ :Mix_Pause => [:int],
201
+ :Mix_Resume => [:int],
202
+ :Mix_Paused => [:int],
203
+ :Mix_PauseMusic => [],
204
+ :Mix_ResumeMusic => [],
205
+ :Mix_RewindMusic => [],
206
+ :Mix_PausedMusic => [],
207
+ :Mix_SetMusicPosition => [:double],
208
+ :Mix_Playing => [:int],
209
+ :Mix_PlayingMusic => [],
210
+ :Mix_SetMusicCMD => [:pointer],
211
+ :Mix_SetSynchroValue => [:int],
212
+ :Mix_GetSynchroValue => [],
213
+ :Mix_SetSoundFonts => [:pointer],
214
+ :Mix_GetSoundFonts => [],
215
+ :Mix_EachSoundFont => [:pointer, :pointer],
216
+ :Mix_GetChunk => [:int],
217
+ :Mix_CloseAudio => [],
218
+ }
219
+ retvals = {
220
+ :Mix_Linked_Version => :pointer,
221
+ :Mix_Init => :int,
222
+ :Mix_Quit => :void,
223
+ :Mix_OpenAudio => :int,
224
+ :Mix_OpenAudioDevice => :int,
225
+ :Mix_AllocateChannels => :int,
226
+ :Mix_QuerySpec => :int,
227
+ :Mix_LoadWAV_RW => :pointer,
228
+ :Mix_LoadMUS => :pointer,
229
+ :Mix_LoadMUS_RW => :pointer,
230
+ :Mix_LoadMUSType_RW => :pointer,
231
+ :Mix_QuickLoad_WAV => :pointer,
232
+ :Mix_QuickLoad_RAW => :pointer,
233
+ :Mix_FreeChunk => :void,
234
+ :Mix_FreeMusic => :void,
235
+ :Mix_GetNumChunkDecoders => :int,
236
+ :Mix_GetChunkDecoder => :pointer,
237
+ :Mix_HasChunkDecoder => :int,
238
+ :Mix_GetNumMusicDecoders => :int,
239
+ :Mix_GetMusicDecoder => :pointer,
240
+ :Mix_HasMusicDecoder => :int,
241
+ :Mix_GetMusicType => :int,
242
+ :Mix_SetPostMix => :void,
243
+ :Mix_HookMusic => :void,
244
+ :Mix_HookMusicFinished => :void,
245
+ :Mix_GetMusicHookData => :pointer,
246
+ :Mix_ChannelFinished => :void,
247
+ :Mix_RegisterEffect => :int,
248
+ :Mix_UnregisterEffect => :int,
249
+ :Mix_UnregisterAllEffects => :int,
250
+ :Mix_SetPanning => :int,
251
+ :Mix_SetPosition => :int,
252
+ :Mix_SetDistance => :int,
253
+ :Mix_SetReverseStereo => :int,
254
+ :Mix_ReserveChannels => :int,
255
+ :Mix_GroupChannel => :int,
256
+ :Mix_GroupChannels => :int,
257
+ :Mix_GroupAvailable => :int,
258
+ :Mix_GroupCount => :int,
259
+ :Mix_GroupOldest => :int,
260
+ :Mix_GroupNewer => :int,
261
+ :Mix_PlayChannelTimed => :int,
262
+ :Mix_PlayMusic => :int,
263
+ :Mix_FadeInMusic => :int,
264
+ :Mix_FadeInMusicPos => :int,
265
+ :Mix_FadeInChannelTimed => :int,
266
+ :Mix_Volume => :int,
267
+ :Mix_VolumeChunk => :int,
268
+ :Mix_VolumeMusic => :int,
269
+ :Mix_HaltChannel => :int,
270
+ :Mix_HaltGroup => :int,
271
+ :Mix_HaltMusic => :int,
272
+ :Mix_ExpireChannel => :int,
273
+ :Mix_FadeOutChannel => :int,
274
+ :Mix_FadeOutGroup => :int,
275
+ :Mix_FadeOutMusic => :int,
276
+ :Mix_FadingMusic => :int,
277
+ :Mix_FadingChannel => :int,
278
+ :Mix_Pause => :void,
279
+ :Mix_Resume => :void,
280
+ :Mix_Paused => :int,
281
+ :Mix_PauseMusic => :void,
282
+ :Mix_ResumeMusic => :void,
283
+ :Mix_RewindMusic => :void,
284
+ :Mix_PausedMusic => :int,
285
+ :Mix_SetMusicPosition => :int,
286
+ :Mix_Playing => :int,
287
+ :Mix_PlayingMusic => :int,
288
+ :Mix_SetMusicCMD => :int,
289
+ :Mix_SetSynchroValue => :int,
290
+ :Mix_GetSynchroValue => :int,
291
+ :Mix_SetSoundFonts => :int,
292
+ :Mix_GetSoundFonts => :pointer,
293
+ :Mix_EachSoundFont => :int,
294
+ :Mix_GetChunk => :pointer,
295
+ :Mix_CloseAudio => :void,
296
+ }
297
+ symbols.each do |sym|
298
+ begin
299
+ attach_function sym, args[sym], retvals[sym]
300
+ rescue FFI::NotFoundError => error
301
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
302
+ end
303
+ end
304
+ end
305
+
306
+ end
307
+