hybridgroup-ruby-sdl-ffi 0.4.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.
@@ -0,0 +1,108 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ module SDL
32
+ module Gfx
33
+
34
+ SMOOTHING_OFF = 0
35
+ SMOOTHING_ON = 1
36
+
37
+
38
+ class TColorRGBA < NiceFFI::Struct
39
+ layout( :r, :uint8,
40
+ :g, :uint8,
41
+ :b, :uint8,
42
+ :a, :uint8 )
43
+ end
44
+
45
+
46
+ class TColorY < NiceFFI::Struct
47
+ layout( :y, :uint8 )
48
+ end
49
+
50
+
51
+
52
+ func :rotozoomSurface,
53
+ [ :pointer, :double, :double, :int ],
54
+ SDL::Surface.typed_pointer
55
+
56
+ func :__rotozoomSurfaceSize, :rotozoomSurfaceSize,
57
+ [ :int, :int, :double, :double, :buffer_out, :buffer_out ], :void
58
+
59
+ def self.rotozoomSurfaceSize( width, height, angle, zoom )
60
+ w = FFI::Buffer.new( :int )
61
+ h = FFI::Buffer.new( :int )
62
+ __rotozoomSurfaceSize( width, height, angle, zoom, w, h )
63
+ return [w.get_int(0), h.get_int(0)]
64
+ end
65
+
66
+
67
+ func :rotozoomSurfaceXY,
68
+ [ :pointer, :double, :double, :double, :int ],
69
+ SDL::Surface.typed_pointer
70
+
71
+ func :__rotozoomSurfaceSizeXY, :rotozoomSurfaceSizeXY,
72
+ [ :int, :int, :double, :double, :double,
73
+ :buffer_out, :buffer_out ], :void
74
+
75
+ def self.rotozoomSurfaceSizeXY( width, height, angle, zoomx, zoomy )
76
+ w = FFI::Buffer.new( :int )
77
+ h = FFI::Buffer.new( :int )
78
+ __rotozoomSurfaceSizeXY( width, height, angle, zoomx, zoomy, w, h )
79
+ return [w.get_int(0), h.get_int(0)]
80
+ end
81
+
82
+
83
+
84
+ func :zoomSurface, [ :pointer, :double, :double, :int ],
85
+ SDL::Surface.typed_pointer
86
+
87
+
88
+ func :__zoomSurfaceSize, :zoomSurfaceSize,
89
+ [ :int, :int, :double, :double, :buffer_out, :buffer_out ], :void
90
+
91
+ def self.zoomSurfaceSize( width, height, zoomx, zoomy )
92
+ w = FFI::Buffer.new( :int )
93
+ h = FFI::Buffer.new( :int )
94
+ __zoomSurfaceSize( width, height, zoomx, zoomy, w, h )
95
+ return [w.get_int(0), h.get_int(0)]
96
+ end
97
+
98
+
99
+
100
+ optfunc :shrinkSurface, [ :pointer, :int, :int ],
101
+ SDL::Surface.typed_pointer
102
+
103
+
104
+ optfunc :rotateSurface90Degrees, [ :pointer, :int ],
105
+ SDL::Surface.typed_pointer
106
+
107
+ end
108
+ end
@@ -0,0 +1,56 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ this_dir = File.expand_path( File.dirname(__FILE__) )
32
+
33
+
34
+ require File.join( this_dir, "sdl" )
35
+
36
+
37
+ module SDL
38
+ module Gfx
39
+ extend NiceFFI::Library
40
+ load_library "SDL_gfx", SDL::LOAD_PATHS
41
+
42
+ def self.sdl_func( name, args, ret )
43
+ func name, "SDL_#{name}", args, ret
44
+ end
45
+ end
46
+ end
47
+
48
+ %w{
49
+ framerate
50
+ blitfunc
51
+ primitives
52
+ imagefilter
53
+ rotozoom
54
+ }.each do |f|
55
+ require File.join( this_dir, "gfx", f )
56
+ end
@@ -0,0 +1,90 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ this_dir = File.expand_path( File.dirname(__FILE__) )
32
+
33
+ require File.join( this_dir, "sdl" )
34
+
35
+
36
+ module SDL
37
+ module Image
38
+ extend NiceFFI::Library
39
+ load_library "SDL_image", SDL::LOAD_PATHS
40
+
41
+
42
+ def self.img_func( name, args, ret )
43
+ func name, "IMG_#{name}", args, ret
44
+ end
45
+
46
+
47
+ img_func :Linked_Version, [], SDL::Version.typed_pointer
48
+
49
+
50
+ img_func :LoadTyped_RW, [ :pointer, :int, :string ],
51
+ SDL::Surface.typed_pointer
52
+
53
+ img_func :Load, [ :string ], SDL::Surface.typed_pointer
54
+ img_func :Load_RW, [ :pointer, :int ], SDL::Surface.typed_pointer
55
+
56
+
57
+ img_func :InvertAlpha, [ :int ], :int
58
+
59
+
60
+ img_func :isBMP, [ :pointer ], :int
61
+ img_func :isGIF, [ :pointer ], :int
62
+ img_func :isJPG, [ :pointer ], :int
63
+ img_func :isLBM, [ :pointer ], :int
64
+ img_func :isPCX, [ :pointer ], :int
65
+ img_func :isPNG, [ :pointer ], :int
66
+ img_func :isPNM, [ :pointer ], :int
67
+ img_func :isTIF, [ :pointer ], :int
68
+ img_func :isXCF, [ :pointer ], :int
69
+ img_func :isXPM, [ :pointer ], :int
70
+ img_func :isXV, [ :pointer ], :int
71
+
72
+
73
+ img_func :LoadBMP_RW, [ :pointer ], SDL::Surface.typed_pointer
74
+ img_func :LoadGIF_RW, [ :pointer ], SDL::Surface.typed_pointer
75
+ img_func :LoadJPG_RW, [ :pointer ], SDL::Surface.typed_pointer
76
+ img_func :LoadLBM_RW, [ :pointer ], SDL::Surface.typed_pointer
77
+ img_func :LoadPCX_RW, [ :pointer ], SDL::Surface.typed_pointer
78
+ img_func :LoadPNG_RW, [ :pointer ], SDL::Surface.typed_pointer
79
+ img_func :LoadPNM_RW, [ :pointer ], SDL::Surface.typed_pointer
80
+ img_func :LoadTGA_RW, [ :pointer ], SDL::Surface.typed_pointer
81
+ img_func :LoadTIF_RW, [ :pointer ], SDL::Surface.typed_pointer
82
+ img_func :LoadXCF_RW, [ :pointer ], SDL::Surface.typed_pointer
83
+ img_func :LoadXPM_RW, [ :pointer ], SDL::Surface.typed_pointer
84
+ img_func :LoadXV_RW, [ :pointer ], SDL::Surface.typed_pointer
85
+
86
+
87
+ img_func :ReadXPMFromArray, [ :pointer ], SDL::Surface.typed_pointer
88
+
89
+ end
90
+ end
@@ -0,0 +1,215 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ this_dir = File.expand_path( File.dirname(__FILE__) )
32
+
33
+ require File.join( this_dir, "sdl" )
34
+
35
+
36
+ module SDL
37
+ module Mixer
38
+ extend NiceFFI::Library
39
+ load_library "SDL_mixer", SDL::LOAD_PATHS
40
+
41
+
42
+ def self.mix_func( name, args, ret )
43
+ func name, "Mix_#{name}", args, ret
44
+ end
45
+
46
+
47
+ mix_func :Linked_Version, [], SDL::Version.typed_pointer
48
+
49
+
50
+ CHANNELS = 8
51
+ DEFAULT_FREQUENCY = 22050
52
+ DEFAULT_CHANNELS = 2
53
+
54
+ DEFAULT_FORMAT = if( FFI::Platform::BYTE_ORDER ==
55
+ FFI::Platform::LITTLE_ENDIAN)
56
+ AUDIO_S16LSB
57
+ else
58
+ AUDIO_S16MSB
59
+ end
60
+
61
+ MAX_VOLUME = 128
62
+
63
+
64
+ class Chunk < NiceFFI::Struct
65
+ layout( :allocated, :int,
66
+ :abuf, :pointer,
67
+ :alen, :uint32,
68
+ :volume, :uint8 )
69
+
70
+ def self.release( pointer )
71
+ SDL::Mixer.FreeChunk( pointer )
72
+ end
73
+ end
74
+
75
+
76
+
77
+ class Music < NiceFFI::OpaqueStruct
78
+ #--
79
+ # Mix_Music struct (in C) has a hidden layout, which changes
80
+ # depending on which sound format libraries were available
81
+ # at compile time.
82
+ #++
83
+
84
+ def self.release( pointer )
85
+ SDL::Mixer.FreeMusic( pointer )
86
+ end
87
+ end
88
+
89
+
90
+
91
+ NO_FADING = 0
92
+ FADING_OUT = 1
93
+ FADING_IN = 2
94
+
95
+ MUS_NONE = 0
96
+ MUS_CMD = 1
97
+ MUS_WAV = 2
98
+ MUS_MOD = 3
99
+ MUS_MID = 4
100
+ MUS_OGG = 5
101
+ MUS_MP3 = 6
102
+ MUS_MP3_MAD = 7
103
+
104
+
105
+ mix_func :OpenAudio, [ :int, :uint16, :int, :int ], :int
106
+ mix_func :AllocateChannels, [ :int ], :int
107
+ mix_func :QuerySpec, [ :pointer, :pointer, :pointer ], :int
108
+
109
+
110
+ def self.LoadWAV( file )
111
+ LoadWAV_RW( SDL.RWFromFile(file, "rb"), 1 )
112
+ end
113
+
114
+ mix_func :LoadWAV_RW, [ :pointer, :int ], Chunk.typed_pointer
115
+ mix_func :LoadMUS, [ :string ], Music.typed_pointer
116
+ mix_func :LoadMUS_RW, [ :pointer ], Music.typed_pointer
117
+ mix_func :QuickLoad_WAV, [ :pointer ], Chunk.typed_pointer
118
+ mix_func :QuickLoad_RAW, [ :pointer, :uint32 ], Chunk.typed_pointer
119
+
120
+
121
+ mix_func :FreeChunk, [ :pointer ], :void
122
+ mix_func :FreeMusic, [ :pointer ], :void
123
+
124
+
125
+ mix_func :GetMusicType, [ :pointer ], :int
126
+
127
+
128
+ callback( :mix_hook_cb, [:pointer, :pointer, :int], :void)
129
+
130
+ mix_func :SetPostMix, [ :mix_hook_cb, :pointer ], :void
131
+ mix_func :HookMusic, [ :mix_hook_cb, :pointer ], :void
132
+ mix_func :HookMusicFinished, [ callback([], :void) ], :void
133
+ mix_func :GetMusicHookData, [ ], :pointer
134
+ mix_func :ChannelFinished, [ callback([:int], :void) ], :void
135
+
136
+
137
+ CHANNEL_POST = -2
138
+
139
+
140
+ callback(:mix_effectfunc_cb, [ :int, :pointer, :int, :pointer ], :void)
141
+ callback(:mix_effectdone_cb, [ :int, :pointer ], :void)
142
+
143
+ mix_func :RegisterEffect,
144
+ [ :int, :mix_effectfunc_cb, :mix_effectdone_cb, :pointer ], :int
145
+
146
+ mix_func :UnregisterEffect, [ :int, :mix_effectfunc_cb ], :int
147
+ mix_func :UnregisterAllEffects, [ :int ], :int
148
+
149
+
150
+ EFFECTSMAXSPEED = "MIX_EFFECTSMAXSPEED"
151
+
152
+
153
+ mix_func :SetPanning, [ :int, :uint8, :uint8 ], :int
154
+ mix_func :SetPosition, [ :int, :int16, :uint8 ], :int
155
+ mix_func :SetDistance, [ :int, :uint8 ], :int
156
+ mix_func :SetReverseStereo, [ :int, :int ], :int
157
+
158
+
159
+ mix_func :ReserveChannels, [ :int ], :int
160
+ mix_func :GroupChannel, [ :int, :int ], :int
161
+ mix_func :GroupChannels, [ :int, :int, :int ], :int
162
+ mix_func :GroupAvailable, [ :int ], :int
163
+ mix_func :GroupCount, [ :int ], :int
164
+ mix_func :GroupOldest, [ :int ], :int
165
+ mix_func :GroupNewer, [ :int ], :int
166
+
167
+
168
+ mix_func :PlayChannelTimed, [ :int, :pointer, :int, :int ], :int
169
+ mix_func :PlayMusic, [ :pointer, :int ], :int
170
+ mix_func :FadeInMusic, [ :pointer, :int, :int ], :int
171
+ mix_func :FadeInMusicPos, [ :pointer, :int, :int, :double ], :int
172
+ mix_func :FadeInChannelTimed, [ :int, :pointer, :int, :int, :int ], :int
173
+
174
+
175
+ mix_func :Volume, [ :int, :int ], :int
176
+ mix_func :VolumeChunk, [ :pointer, :int ], :int
177
+ mix_func :VolumeMusic, [ :int ], :int
178
+
179
+
180
+ mix_func :HaltChannel, [ :int ], :int
181
+ mix_func :HaltGroup, [ :int ], :int
182
+ mix_func :HaltMusic, [ ], :int
183
+ mix_func :ExpireChannel, [ :int, :int ], :int
184
+
185
+
186
+ mix_func :FadeOutChannel, [ :int, :int ], :int
187
+ mix_func :FadeOutGroup, [ :int, :int ], :int
188
+ mix_func :FadeOutMusic, [ :int ], :int
189
+ mix_func :FadingMusic, [ ], :int
190
+ mix_func :FadingChannel, [ :int ], :int
191
+
192
+
193
+ mix_func :Pause, [ :int ], :void
194
+ mix_func :Resume, [ :int ], :void
195
+ mix_func :Paused, [ :int ], :int
196
+ mix_func :PauseMusic, [ ], :void
197
+ mix_func :ResumeMusic, [ ], :void
198
+ mix_func :RewindMusic, [ ], :void
199
+ mix_func :PausedMusic, [ ], :int
200
+
201
+
202
+ mix_func :SetMusicPosition, [ :double ], :int
203
+ mix_func :Playing, [ :int ], :int
204
+ mix_func :PlayingMusic, [ ], :int
205
+ mix_func :SetMusicCMD, [ :string ], :int
206
+
207
+ mix_func :SetSynchroValue, [ :int ], :int
208
+ mix_func :GetSynchroValue, [ ], :int
209
+
210
+ mix_func :GetChunk, [ :int ], Chunk.typed_pointer
211
+
212
+ mix_func :CloseAudio, [ ], :void
213
+
214
+ end
215
+ end
@@ -0,0 +1,139 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ module SDL
32
+
33
+ class AudioSpec < NiceFFI::Struct
34
+
35
+ SDL::callback(:audiospec_cb, [ :pointer, :pointer, :int ], :void)
36
+
37
+ layout( :freq, :int,
38
+ :format, :uint16,
39
+ :channels, :uint8,
40
+ :silence, :uint8,
41
+ :samples, :uint16,
42
+ :padding, :uint16,
43
+ :size, :uint32,
44
+ :callback, :audiospec_cb,
45
+ :userdata, :pointer )
46
+
47
+ def callback=(cb)
48
+ @callback = cb
49
+ self[:callback] = @callback
50
+ end
51
+
52
+ def callback
53
+ @callback
54
+ end
55
+
56
+ end
57
+
58
+
59
+ AUDIO_U8 = 0x0008
60
+ AUDIO_S8 = 0x8008
61
+ AUDIO_U16LSB = 0x0010
62
+ AUDIO_S16LSB = 0x8010
63
+ AUDIO_U16MSB = 0x1010
64
+ AUDIO_S16MSB = 0x9010
65
+ AUDIO_U16 = 0x0010
66
+ AUDIO_S16 = 0x8010
67
+
68
+ if FFI::Platform::BYTE_ORDER == FFI::Platform::LITTLE_ENDIAN
69
+ AUDIO_U16SYS = AUDIO_U16LSB
70
+ AUDIO_S16SYS = AUDIO_S16LSB
71
+ else
72
+ AUDIO_U16SYS = AUDIO_U16MSB
73
+ AUDIO_S16SYS = AUDIO_U16MSB
74
+ end
75
+
76
+
77
+ # callback( :filters_cb, [ :pointer, :uint16 ], :void)
78
+
79
+ # class AudioCVT < NiceFFI::Struct
80
+ # layout( :needed, :int,
81
+ # :src_format, :uint16,
82
+ # :dst_format, :uint16,
83
+ # :rate_incr, :double,
84
+ # :buf, :pointer,
85
+ # :len, :int,
86
+ # :len_cvt, :int,
87
+ # :len_mult, :int,
88
+ # :len_ratio, :double,
89
+ # :filters, [:filters_cb, 10],
90
+ # :filter_index, :int )
91
+ # end
92
+
93
+
94
+ sdl_func :AudioInit, [ :string ], :int
95
+ sdl_func :AudioQuit, [ ], :void
96
+ sdl_func :OpenAudio, [ :buffer_in, :buffer_out ], :int
97
+
98
+
99
+ func :__AudioDriverName, "SDL_AudioDriverName",
100
+ [:buffer_out, :int], :pointer
101
+
102
+ def self.AudioDriverName
103
+ b = FFI::Buffer.new(:char, 1024)
104
+ result = __AudioDriverName( b, 1024 )
105
+ if result.null?
106
+ nil
107
+ else
108
+ b.get_string(0,1024)
109
+ end
110
+ end
111
+
112
+
113
+ AUDIO_STOPPED = 0
114
+ AUDIO_PLAYING = 1
115
+ AUDIO_PAUSED = 2
116
+
117
+ sdl_func :GetAudioStatus, [ ], SDL::ENUM
118
+ sdl_func :PauseAudio, [ :int ], :void
119
+
120
+ sdl_func :LoadWAV_RW,
121
+ [ :pointer, :int, :pointer, :pointer, :pointer ], :pointer
122
+
123
+ sdl_func :FreeWAV, [ :pointer ], :void
124
+
125
+ sdl_func :BuildAudioCVT,
126
+ [ :pointer, :uint16, :uint8, :int, :uint16, :uint8, :int ], :int
127
+
128
+ sdl_func :ConvertAudio, [ :pointer ], :int
129
+
130
+
131
+ MIX_MAXVOLUME = 128
132
+
133
+ sdl_func :MixAudio, [ :pointer, :pointer, :uint32, :int ], :void
134
+
135
+ sdl_func :LockAudio, [ ], :void
136
+ sdl_func :UnlockAudio, [ ], :void
137
+ sdl_func :CloseAudio, [ ], :void
138
+
139
+ end
@@ -0,0 +1,87 @@
1
+ #--
2
+ #
3
+ # This file is one part of:
4
+ #
5
+ # Ruby-SDL-FFI - Ruby-FFI bindings to SDL
6
+ #
7
+ # Copyright (c) 2009 John Croisant
8
+ #
9
+ # Permission is hereby granted, free of charge, to any person obtaining
10
+ # a copy of this software and associated documentation files (the
11
+ # "Software"), to deal in the Software without restriction, including
12
+ # without limitation the rights to use, copy, modify, merge, publish,
13
+ # distribute, sublicense, and/or sell copies of the Software, and to
14
+ # permit persons to whom the Software is furnished to do so, subject to
15
+ # the following conditions:
16
+ #
17
+ # The above copyright notice and this permission notice shall be
18
+ # included in all copies or substantial portions of the Software.
19
+ #
20
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
23
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
24
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
26
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
+ #
28
+ #++
29
+
30
+
31
+ module SDL
32
+
33
+ CD_ERROR = -1
34
+ CD_TRAYEMPTY = 0
35
+ CD_STOPPED = 1
36
+ CD_PLAYING = 2
37
+ CD_PAUSED = 3
38
+
39
+ AUDIO_TRACK = 0x00
40
+ DATA_TRACK = 0x04
41
+
42
+ MAX_TRACKS = 99
43
+
44
+ class CDtrack < NiceFFI::Struct
45
+ layout( :id, :uint8,
46
+ :type, :uint8,
47
+ :unused, :uint16,
48
+ :length, :uint32,
49
+ :offset, :uint32 )
50
+
51
+ hidden( :unused )
52
+
53
+ end
54
+
55
+
56
+ if RUBY_PLATFORM =~ /java/
57
+ # 2009-10-21: JRuby FFI does not support arrays of structs in structs.
58
+ # Attempting it can raise an un-rescuable NotImplementedError! :(
59
+ puts "Warning: Skipping class SDL::CD due to JRuby limitations."
60
+ else
61
+
62
+ class CD < NiceFFI::Struct
63
+ layout( :id, :int,
64
+ :status, SDL::ENUM,
65
+ :numtracks, :int,
66
+ :cur_track, :int,
67
+ :cur_frame, :int,
68
+ :track, [CDtrack.by_value, SDL::MAX_TRACKS+1] )
69
+ end
70
+
71
+ end
72
+
73
+ CD_FPS = 75
74
+
75
+ sdl_func :CDNumDrives, [ ], :int
76
+ sdl_func :CDName, [ :int ], :string
77
+ sdl_func :CDOpen, [ :int ], :pointer
78
+ sdl_func :CDStatus, [ :pointer ], SDL::ENUM
79
+ sdl_func :CDPlayTracks, [ :pointer, :int, :int, :int, :int ], :int
80
+ sdl_func :CDPlay, [ :pointer, :int, :int ], :int
81
+ sdl_func :CDPause, [ :pointer ], :int
82
+ sdl_func :CDResume, [ :pointer ], :int
83
+ sdl_func :CDStop, [ :pointer ], :int
84
+ sdl_func :CDEject, [ :pointer ], :int
85
+ sdl_func :CDClose, [ :pointer ], :void
86
+
87
+ end