SDLRuby 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/SDLRuby/event/accessor.rb +62 -63
- data/lib/SDLRuby/event/type.rb +1 -1
- data/lib/SDLRuby/event.rb +98 -80
- data/lib/SDLRuby/sdl/include/SDL.h.rb +11 -0
- data/lib/SDLRuby/sdl/include/SDL_audio.h.rb +125 -14
- data/lib/SDLRuby/sdl/include/SDL_blendmode.h.rb +24 -0
- data/lib/SDLRuby/sdl/include/SDL_endian.h.rb +10 -1
- data/lib/SDLRuby/sdl/include/SDL_error.h.rb +21 -2
- data/lib/SDLRuby/sdl/include/SDL_events.h.rb +458 -18
- data/lib/SDLRuby/sdl/include/SDL_gamecontroller.h.rb +92 -11
- data/lib/SDLRuby/sdl/include/SDL_guid.h.rb +10 -4
- data/lib/SDLRuby/sdl/include/SDL_hints.h.rb +186 -1
- data/lib/SDLRuby/sdl/include/SDL_joystick.h.rb +72 -10
- data/lib/SDLRuby/sdl/include/SDL_keyboard.h.rb +13 -4
- data/lib/SDLRuby/sdl/include/SDL_keycode.h.rb +287 -2
- data/lib/SDLRuby/sdl/include/SDL_locale.h.rb +9 -2
- data/lib/SDLRuby/sdl/include/SDL_messagebox.h.rb +50 -2
- data/lib/SDLRuby/sdl/include/SDL_mouse.h.rb +39 -8
- data/lib/SDLRuby/sdl/include/SDL_pixels.h.rb +271 -11
- data/lib/SDLRuby/sdl/include/SDL_rect.h.rb +43 -14
- data/lib/SDLRuby/sdl/include/SDL_render.h.rb +112 -75
- data/lib/SDLRuby/sdl/include/SDL_rwops.h.rb +63 -19
- data/lib/SDLRuby/sdl/include/SDL_scancode.h.rb +248 -1
- data/lib/SDLRuby/sdl/include/SDL_shape.h.rb +33 -6
- data/lib/SDLRuby/sdl/include/SDL_stdinc.h.rb +42 -4
- data/lib/SDLRuby/sdl/include/SDL_surface.h.rb +92 -29
- data/lib/SDLRuby/sdl/include/SDL_syswm.h.rb +1 -7
- data/lib/SDLRuby/sdl/include/SDL_timer.h.rb +11 -3
- data/lib/SDLRuby/sdl/include/SDL_version.h.rb +10 -2
- data/lib/SDLRuby/sdl/include/SDL_video.h.rb +221 -74
- data/lib/SDLRuby/sdl/sdl.rb +0 -50
- data/lib/SDLRuby/sdl.rb +7 -8
- data/lib/SDLRuby/version.rb +1 -1
- data/sig/lib/SDLRuby/event/accessor.rbs +157 -0
- data/sig/lib/SDLRuby/event/type.rbs +67 -0
- data/sig/lib/SDLRuby/event.rbs +47 -0
- data/sig/lib/SDLRuby/sdl.rbs +655 -0
- metadata +6 -22
- data/lib/SDLRuby/sdl/sdl_audio.rb +0 -75
- data/lib/SDLRuby/sdl/sdl_blendmode.rb +0 -10
- data/lib/SDLRuby/sdl/sdl_error.rb +0 -5
- data/lib/SDLRuby/sdl/sdl_events.rb +0 -470
- data/lib/SDLRuby/sdl/sdl_hints.rb +0 -9
- data/lib/SDLRuby/sdl/sdl_keyboard.rb +0 -12
- data/lib/SDLRuby/sdl/sdl_locale.rb +0 -8
- data/lib/SDLRuby/sdl/sdl_message_box.rb +0 -7
- data/lib/SDLRuby/sdl/sdl_mouse.rb +0 -32
- data/lib/SDLRuby/sdl/sdl_palette.rb +0 -12
- data/lib/SDLRuby/sdl/sdl_pixels.rb +0 -138
- data/lib/SDLRuby/sdl/sdl_rect.rb +0 -11
- data/lib/SDLRuby/sdl/sdl_render.rb +0 -35
- data/lib/SDLRuby/sdl/sdl_rw_ops.rb +0 -29
- data/lib/SDLRuby/sdl/sdl_scancode.rb +0 -255
- data/lib/SDLRuby/sdl/sdl_surface.rb +0 -27
- data/lib/SDLRuby/sdl/sdl_version.rb +0 -5
- data/lib/SDLRuby/sdl/sdl_video.rb +0 -104
- data/sig/SDLRuby/event.rbs +0 -104
- data/sig/SDLRuby/sdl.rbs +0 -606
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9420fbe6427d0cc1c72c97f9da2ff735959cc6233c53df296a2fa75330c5ae8b
|
4
|
+
data.tar.gz: 7ea49cbccc75f54cc54cc105f8662270b671c182abec10f3bba8ba01868113be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 59ac04bd9bade02f0865dc35e1977926b907bc535629d412a0c801b7913c10a886641b29cb706e905a8eacac23983dc10971d36009f2daa9d71b0c820e92b880
|
7
|
+
data.tar.gz: 518572826202fab87596afd4241b87fe743fb3b1055d75d6825a54fe91db9604d965cf074b300941fb84a3f89af47e790c6b9de74c420e352b6af57feabf9824
|
data/CHANGELOG.md
CHANGED
@@ -3,37 +3,21 @@ module SDLRuby
|
|
3
3
|
module Accessor
|
4
4
|
include SDL
|
5
5
|
|
6
|
-
|
7
|
-
if members
|
8
|
-
# ネストした構造体の場合は親のみを選択する。
|
9
|
-
result << [name, members.flatten(1).select { |a| !(Array === a) }]
|
10
|
-
end
|
11
|
-
|
12
|
-
result
|
13
|
-
end
|
6
|
+
@modules = Hash.new
|
14
7
|
|
15
|
-
|
16
|
-
raise KeyError, "undefined SDL_Event member(#{key})"
|
17
|
-
end
|
18
|
-
|
19
|
-
union_members.each do |name, members|
|
8
|
+
(SDL_Event.members - %w[type padding]).each do |name, members|
|
20
9
|
@modules[name.to_sym] = Module.new do
|
21
10
|
extend Forwardable
|
22
|
-
|
23
|
-
|
11
|
+
# ネストした構造体の場合は親のみを選択する。
|
12
|
+
#
|
13
|
+
def_delegators :entity, *members.flatten(1).select { |a| !(Array === a) }
|
24
14
|
end
|
25
15
|
end
|
26
16
|
|
27
17
|
class << self
|
28
|
-
def [](sym)
|
29
|
-
|
30
|
-
|
31
|
-
self[:adevice].module_eval do
|
32
|
-
def capture? = entity.iscapture != 0
|
33
|
-
end
|
34
|
-
|
35
|
-
self[:cbutton].module_eval do
|
36
|
-
def pressed? = state == SDL_PRESSED
|
18
|
+
def [](sym)
|
19
|
+
@modules[sym] || raise(KeyError, "undefined member(#{sym})")
|
20
|
+
end
|
37
21
|
end
|
38
22
|
|
39
23
|
self[:drop].module_eval do
|
@@ -41,14 +25,14 @@ module SDLRuby
|
|
41
25
|
|
42
26
|
def file = char_ptr_to_str(entity.file)
|
43
27
|
|
44
|
-
|
28
|
+
alias text file
|
45
29
|
|
46
30
|
def self.extended(obj)
|
47
|
-
|
31
|
+
obj.__send__(:keep_member_pointer, :file)
|
48
32
|
end
|
49
33
|
end
|
50
34
|
|
51
|
-
self[:edit].module_eval
|
35
|
+
self[:edit].module_eval do
|
52
36
|
undef text
|
53
37
|
|
54
38
|
def text = char_ary_to_str(entity.text)
|
@@ -60,68 +44,83 @@ module SDLRuby
|
|
60
44
|
def text = char_ptr_to_str(entity.text)
|
61
45
|
|
62
46
|
def self.extended(obj)
|
63
|
-
|
47
|
+
obj.__send__(:keep_member_pointer, :text)
|
64
48
|
end
|
65
49
|
end
|
66
50
|
|
67
|
-
self[:jbutton].module_eval do
|
68
|
-
def pressed? = state == SDL_PRESSED
|
69
|
-
end
|
70
|
-
|
71
51
|
self[:key].module_eval do
|
72
52
|
undef keysym
|
73
53
|
|
74
54
|
def keysym = entity.keysym.to_h
|
75
55
|
end
|
76
56
|
|
77
|
-
self[:syswm].module_eval do
|
78
|
-
undef msg
|
79
|
-
|
80
|
-
def msg = entity.msg
|
81
|
-
end
|
82
|
-
|
83
57
|
self[:text].module_eval do
|
84
58
|
undef text
|
85
59
|
|
86
60
|
def text = char_ary_to_str(entity.text)
|
87
61
|
end
|
88
62
|
|
89
|
-
|
90
|
-
|
63
|
+
# イベント構造体へのアクセスをSTIとして実装する。
|
64
|
+
# メンバー全てのゲッターに応答できるようにする。(NoMethodErrorを出さない)
|
65
|
+
# ※これはKernel#yメソッドにオブジェクトが応答してしまうため、
|
66
|
+
# 事前にattr_readerでオーバーライドする。
|
67
|
+
#
|
68
|
+
attr_reader *%w[
|
69
|
+
axis ball button clicks code dDist dTheta data data1 data2 direction
|
70
|
+
display dx dy error event file finger fingerId gestureId hat iscapture
|
71
|
+
keysym length level mouseX mouseY msg numFingers
|
72
|
+
padding padding1 padding2 padding3 padding4
|
73
|
+
preciseX preciseY pressure repeat sensor start state text timestamp
|
74
|
+
timestamp_us touchId touchpad type value which windowID x xrel y yrel
|
75
|
+
]
|
91
76
|
|
92
|
-
|
77
|
+
# Ruby like accessor
|
78
|
+
#
|
79
|
+
alias d_dist dDist
|
80
|
+
alias d_theta dTheta
|
81
|
+
alias finger_id fingerId
|
82
|
+
alias gesture_id gestureId
|
83
|
+
alias mouse_x mouseX
|
84
|
+
alias mouse_y mouseY
|
85
|
+
alias num_fingers numFingers
|
86
|
+
alias precise_x preciseX
|
87
|
+
alias precise_y preciseY
|
88
|
+
alias touch_id touchId
|
89
|
+
alias window_id windowID
|
90
|
+
|
91
|
+
# for adevice
|
92
|
+
#
|
93
|
+
# iscapture = nil => false
|
94
|
+
# iscapture = 0 => false
|
95
|
+
# iscapture = 1 => true
|
96
|
+
#
|
97
|
+
def capture? = iscapture&.nonzero? ? true : false
|
93
98
|
|
94
|
-
|
95
|
-
|
99
|
+
# for button, cbutton, jbutton
|
100
|
+
#
|
101
|
+
def pressed? = state == SDL_PRESSED
|
96
102
|
|
97
|
-
#
|
98
|
-
# これは"y"メソッドにRubyが応答してしまうため。事前にオーバーライドしておく。
|
103
|
+
# for key
|
99
104
|
#
|
100
|
-
|
105
|
+
def scancode = keysym&.[]("scancode")
|
101
106
|
|
102
|
-
|
107
|
+
def sym = keysym&.[]("sym")
|
103
108
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
alias_method :gesture_id, :gestureId
|
110
|
-
alias_method :mouse_x, :mouseX
|
111
|
-
alias_method :mouse_y, :mouseY
|
112
|
-
alias_method :num_fingers, :numFingers
|
113
|
-
alias_method :precise_x, :preciseX
|
114
|
-
alias_method :precise_y, :preciseY
|
115
|
-
alias_method :touch_id, :touchId
|
116
|
-
alias_method :window_id, :windowID
|
117
|
-
|
118
|
-
private def char_ary_to_str(a)
|
109
|
+
def mod = keysym&.[]("mod")
|
110
|
+
|
111
|
+
private
|
112
|
+
|
113
|
+
def char_ary_to_str(a)
|
119
114
|
a[0, a.find_index(0)].pack("C*").force_encoding("UTF-8")
|
120
115
|
end
|
121
116
|
|
122
|
-
|
117
|
+
def char_ptr_to_str(ptr)
|
123
118
|
ptr.null? ? "" : ptr.to_s.force_encoding("UTF-8")
|
124
119
|
end
|
120
|
+
|
121
|
+
def keep_member_pointer(attr)
|
122
|
+
@_ptr ||= entity.__send__(attr).tap { |ptr| ptr.free = SDL_FREE }
|
123
|
+
end
|
125
124
|
end
|
126
125
|
end
|
127
126
|
end
|
data/lib/SDLRuby/event/type.rb
CHANGED
data/lib/SDLRuby/event.rb
CHANGED
@@ -1,80 +1,98 @@
|
|
1
|
-
require_relative 'event/accessor'
|
2
|
-
require_relative 'event/type'
|
3
|
-
|
4
|
-
module SDLRuby
|
5
|
-
class Event
|
6
|
-
include Accessor, Fiddle, SDL
|
7
|
-
|
8
|
-
class << self
|
9
|
-
include SDL
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
#
|
16
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
1
|
+
require_relative 'event/accessor'
|
2
|
+
require_relative 'event/type'
|
3
|
+
|
4
|
+
module SDLRuby
|
5
|
+
class Event
|
6
|
+
include Accessor, Fiddle, SDL
|
7
|
+
|
8
|
+
class << self
|
9
|
+
include SDL
|
10
|
+
|
11
|
+
private def __malloc__ = Fiddle.malloc(SDL_Event.size)
|
12
|
+
|
13
|
+
def clear = SDL.SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT)
|
14
|
+
|
15
|
+
# The deq method can be called from any thread.
|
16
|
+
#
|
17
|
+
def deq(non_block = false)
|
18
|
+
if non_block && empty?
|
19
|
+
raise SDLError, "event queue empty"
|
20
|
+
end
|
21
|
+
|
22
|
+
e = __malloc__
|
23
|
+
|
24
|
+
case SDL.SDL_PeepEvents(e, 1, SDL_GETEVENT, 0, -1)
|
25
|
+
when 1
|
26
|
+
return new(e)
|
27
|
+
when 0
|
28
|
+
sleep(0.001)
|
29
|
+
else # -1 "The event system has been shut down"
|
30
|
+
return
|
31
|
+
end while true
|
32
|
+
end
|
33
|
+
|
34
|
+
def disable(type) = SDL.SDL_EventState(type, 0)
|
35
|
+
|
36
|
+
def empty? = SDL.SDL_PeepEvents(nil, 1, SDL_PEEKEVENT, 0, -1) != 1
|
37
|
+
|
38
|
+
def enable(type) = SDL.SDL_EventState(type, 1)
|
39
|
+
|
40
|
+
def get
|
41
|
+
unless Thread.current == Thread.main
|
42
|
+
raise SDLError, "called from a non-main thread"
|
43
|
+
end
|
44
|
+
|
45
|
+
e = __malloc__
|
46
|
+
SDL.SDL_WaitEvent(e)
|
47
|
+
new(e)
|
48
|
+
end
|
49
|
+
|
50
|
+
def length = SDL.SDL_PeepEvents(nil, 0, SDL_PEEKEVENT, 0, -1)
|
51
|
+
alias size length
|
52
|
+
|
53
|
+
def quit? = (update or SDL.SDL_HasEvent(SDL_QUIT) == 1)
|
54
|
+
|
55
|
+
def reserve(num)
|
56
|
+
base = SDL.SDL_RegisterEvents(num)
|
57
|
+
|
58
|
+
if base == 0xFFFF_FFFF
|
59
|
+
raise SDLError, "cannot register any more user events"
|
60
|
+
end
|
61
|
+
|
62
|
+
base
|
63
|
+
end
|
64
|
+
|
65
|
+
def update
|
66
|
+
unless Thread.current == Thread.main
|
67
|
+
raise SDLError, "called from a non-main thread"
|
68
|
+
end
|
69
|
+
|
70
|
+
SDL.SDL_PumpEvents
|
71
|
+
end
|
72
|
+
|
73
|
+
def wait(timeout = nil)
|
74
|
+
return self unless empty?
|
75
|
+
|
76
|
+
return nil unless Thread.current == Thread.main
|
77
|
+
|
78
|
+
if timeout
|
79
|
+
SDL.SDL_WaitEventTimeout(nil, timeout * 1000)
|
80
|
+
else
|
81
|
+
SDL.SDL_WaitEvent(nil)
|
82
|
+
end == 1 ? self : nil
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def initialize(ptr)
|
87
|
+
st = SDL_Event.new(ptr)
|
88
|
+
sym = Type[st.type]
|
89
|
+
@entity = st.__send__(sym)
|
90
|
+
@entity.to_ptr.free = RUBY_FREE
|
91
|
+
extend(Accessor[sym])
|
92
|
+
end
|
93
|
+
|
94
|
+
private attr_reader :entity
|
95
|
+
|
96
|
+
def to_ptr = @entity.to_ptr
|
97
|
+
end
|
98
|
+
end
|
@@ -25,6 +25,17 @@ module SDLRuby::SDL
|
|
25
25
|
require_relative 'SDL_locale.h.rb'
|
26
26
|
require_relative 'SDL_misc.h.rb'
|
27
27
|
|
28
|
+
SDL_INIT_TIMER = 0x00000001
|
29
|
+
SDL_INIT_AUDIO = 0x00000010
|
30
|
+
SDL_INIT_VIDEO = 0x00000020
|
31
|
+
SDL_INIT_JOYSTICK = 0x00000200
|
32
|
+
SDL_INIT_HAPTIC = 0x00001000
|
33
|
+
SDL_INIT_GAMECONTROLLER = 0x00002000
|
34
|
+
SDL_INIT_EVENTS = 0x00004000
|
35
|
+
SDL_INIT_SENSOR = 0x00008000
|
36
|
+
SDL_INIT_NOPARACHUTE = 0x00100000
|
37
|
+
SDL_INIT_EVERYTHING = ( SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR )
|
38
|
+
|
28
39
|
extern "int SDL_Init(Uint32 flags)"
|
29
40
|
extern "int SDL_InitSubSystem(Uint32 flags)"
|
30
41
|
extern "void SDL_QuitSubSystem(Uint32 flags)"
|
@@ -1,32 +1,140 @@
|
|
1
1
|
module SDLRuby::SDL
|
2
|
-
require_relative
|
3
|
-
require_relative
|
4
|
-
require_relative
|
5
|
-
require_relative
|
2
|
+
require_relative "SDL_stdinc.h"
|
3
|
+
require_relative "SDL_error.h"
|
4
|
+
require_relative "SDL_endian.h"
|
5
|
+
require_relative "SDL_rwops.h"
|
6
6
|
|
7
7
|
typealias "SDL_AudioFormat", "Uint16"
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
|
9
|
+
SDL_AUDIO_MASK_BITSIZE = (0xFF)
|
10
|
+
SDL_AUDIO_MASK_DATATYPE = (1<<8)
|
11
|
+
SDL_AUDIO_MASK_ENDIAN = (1<<12)
|
12
|
+
SDL_AUDIO_MASK_SIGNED = (1<<15)
|
13
|
+
|
14
|
+
def self.SDL_AUDIO_BITSIZE(x)
|
15
|
+
(x & SDL_AUDIO_MASK_BITSIZE)
|
16
|
+
end
|
17
|
+
def self.SDL_AUDIO_ISFLOAT(x)
|
18
|
+
(x & SDL_AUDIO_MASK_DATATYPE)
|
19
|
+
end
|
20
|
+
def self.SDL_AUDIO_ISBIGENDIAN(x)
|
21
|
+
(x & SDL_AUDIO_MASK_ENDIAN)
|
22
|
+
end
|
23
|
+
def self.SDL_AUDIO_ISSIGNED(x)
|
24
|
+
(x & SDL_AUDIO_MASK_SIGNED)
|
25
|
+
end
|
26
|
+
def self.SDL_AUDIO_ISINT(x)
|
27
|
+
(!SDL_AUDIO_ISFLOAT(x))
|
28
|
+
end
|
29
|
+
def self.SDL_AUDIO_ISLITTLEENDIAN(x)
|
30
|
+
(!SDL_AUDIO_ISBIGENDIAN(x))
|
31
|
+
end
|
32
|
+
def self.SDL_AUDIO_ISUNSIGNED(x)
|
33
|
+
(!SDL_AUDIO_ISSIGNED(x))
|
34
|
+
end
|
35
|
+
|
36
|
+
AUDIO_U8 = 0x0008
|
37
|
+
AUDIO_S8 = 0x8008
|
38
|
+
AUDIO_U16LSB = 0x0010
|
39
|
+
AUDIO_S16LSB = 0x8010
|
40
|
+
AUDIO_U16MSB = 0x1010
|
41
|
+
AUDIO_S16MSB = 0x9010
|
42
|
+
AUDIO_U16 = AUDIO_U16LSB
|
43
|
+
AUDIO_S16 = AUDIO_S16LSB
|
44
|
+
AUDIO_S32LSB = 0x8020
|
45
|
+
AUDIO_S32MSB = 0x9020
|
46
|
+
AUDIO_S32 = AUDIO_S32LSB
|
47
|
+
AUDIO_F32LSB = 0x8120
|
48
|
+
AUDIO_F32MSB = 0x9120
|
49
|
+
AUDIO_F32 = AUDIO_F32LSB
|
50
|
+
|
51
|
+
if SDL_BYTEORDER == SDL_LIL_ENDIAN
|
52
|
+
AUDIO_U16SYS = AUDIO_U16LSB
|
53
|
+
AUDIO_S16SYS = AUDIO_S16LSB
|
54
|
+
AUDIO_S32SYS = AUDIO_S32LSB
|
55
|
+
AUDIO_F32SYS = AUDIO_F32LSB
|
56
|
+
else
|
57
|
+
AUDIO_U16SYS = AUDIO_U16MSB
|
58
|
+
AUDIO_S16SYS = AUDIO_S16MSB
|
59
|
+
AUDIO_S32SYS = AUDIO_S32MSB
|
60
|
+
AUDIO_F32SYS = AUDIO_F32MSB
|
61
|
+
end
|
62
|
+
|
63
|
+
SDL_AUDIO_ALLOW_FREQUENCY_CHANGE = 0x00000001
|
64
|
+
SDL_AUDIO_ALLOW_FORMAT_CHANGE = 0x00000002
|
65
|
+
SDL_AUDIO_ALLOW_CHANNELS_CHANGE = 0x00000004
|
66
|
+
SDL_AUDIO_ALLOW_SAMPLES_CHANGE = 0x00000008
|
67
|
+
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)
|
68
|
+
|
69
|
+
typealias "SDL_AudioCallback", "void*"
|
70
|
+
|
71
|
+
SDL_AudioSpec = struct(
|
72
|
+
[
|
73
|
+
"int freq",
|
74
|
+
"SDL_AudioFormat format",
|
75
|
+
"Uint8 channels",
|
76
|
+
"Uint8 silence",
|
77
|
+
"Uint16 samples",
|
78
|
+
"Uint16 padding",
|
79
|
+
"Uint32 size",
|
80
|
+
"SDL_AudioCallback callback",
|
81
|
+
"void *userdata",
|
82
|
+
]
|
83
|
+
)
|
84
|
+
|
85
|
+
typealias "SDL_AudioFilter", "void*"
|
86
|
+
|
87
|
+
SDL_AUDIOCVT_MAX_FILTERS = 9
|
88
|
+
|
89
|
+
SDL_AudioCVT = struct(
|
90
|
+
[
|
91
|
+
"int needed",
|
92
|
+
"SDL_AudioFormat src_format",
|
93
|
+
"SDL_AudioFormat dst_format",
|
94
|
+
"double rate_incr",
|
95
|
+
"Uint8 *buf",
|
96
|
+
"int len",
|
97
|
+
"int len_cvt",
|
98
|
+
"int len_mult",
|
99
|
+
"double len_ratio",
|
100
|
+
"SDL_AudioFilter filters[#{SDL_AUDIOCVT_MAX_FILTERS + 1}]",
|
101
|
+
"int filter_index",
|
102
|
+
]
|
103
|
+
)
|
104
|
+
|
11
105
|
extern "int SDL_GetNumAudioDrivers(void)"
|
12
106
|
extern "const char * SDL_GetAudioDriver(int index)"
|
13
107
|
extern "int SDL_AudioInit(const char *driver_name)"
|
14
108
|
extern "void SDL_AudioQuit(void)"
|
15
109
|
extern "const char * SDL_GetCurrentAudioDriver(void)"
|
16
|
-
extern "int SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained)"
|
110
|
+
extern "int SDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained)"
|
111
|
+
|
112
|
+
typealias "SDL_AudioDeviceID", "Uint32"
|
113
|
+
|
17
114
|
extern "int SDL_GetNumAudioDevices(int iscapture)"
|
18
115
|
extern "const char * SDL_GetAudioDeviceName(int index, int iscapture)"
|
19
116
|
extern "int SDL_GetAudioDeviceSpec(int index, int iscapture, SDL_AudioSpec *spec)"
|
20
117
|
extern "int SDL_GetDefaultAudioInfo(char **name, SDL_AudioSpec *spec, int iscapture)"
|
21
118
|
extern "SDL_AudioDeviceID SDL_OpenAudioDevice( const char *device, int iscapture, const SDL_AudioSpec *desired, SDL_AudioSpec *obtained, int allowed_changes)"
|
119
|
+
|
120
|
+
SDL_AUDIO_STOPPED = 0
|
121
|
+
SDL_AUDIO_PLAYING = 1
|
122
|
+
SDL_AUDIO_PAUSED = 2
|
123
|
+
typealias "SDL_AudioStatus", "int"
|
124
|
+
|
22
125
|
extern "SDL_AudioStatus SDL_GetAudioStatus(void)"
|
23
126
|
extern "SDL_AudioStatus SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev)"
|
24
127
|
extern "void SDL_PauseAudio(int pause_on)"
|
25
128
|
extern "void SDL_PauseAudioDevice(SDL_AudioDeviceID dev, int pause_on)"
|
26
|
-
extern "SDL_AudioSpec * SDL_LoadWAV_RW(SDL_RWops *src, int freesrc, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len)"
|
27
|
-
|
28
|
-
|
29
|
-
|
129
|
+
extern "SDL_AudioSpec * SDL_LoadWAV_RW(SDL_RWops * src, int freesrc, SDL_AudioSpec * spec, Uint8 ** audio_buf, Uint32 * audio_len)"
|
130
|
+
|
131
|
+
def self.SDL_LoadWAV(file, spec, audio_buf, audio_len)
|
132
|
+
SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len)
|
133
|
+
end
|
134
|
+
|
135
|
+
extern "void SDL_FreeWAV(Uint8 * audio_buf)"
|
136
|
+
extern "int SDL_BuildAudioCVT(SDL_AudioCVT * cvt, SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate)"
|
137
|
+
extern "int SDL_ConvertAudio(SDL_AudioCVT * cvt)"
|
30
138
|
extern "SDL_AudioStream * SDL_NewAudioStream(const SDL_AudioFormat src_format, const Uint8 src_channels, const int src_rate, const SDL_AudioFormat dst_format, const Uint8 dst_channels, const int dst_rate)"
|
31
139
|
extern "int SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len)"
|
32
140
|
extern "int SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len)"
|
@@ -34,8 +142,11 @@ module SDLRuby::SDL
|
|
34
142
|
extern "int SDL_AudioStreamFlush(SDL_AudioStream *stream)"
|
35
143
|
extern "void SDL_AudioStreamClear(SDL_AudioStream *stream)"
|
36
144
|
extern "void SDL_FreeAudioStream(SDL_AudioStream *stream)"
|
37
|
-
|
38
|
-
|
145
|
+
|
146
|
+
SDL_MIX_MAXVOLUME = 128
|
147
|
+
|
148
|
+
extern "void SDL_MixAudio(Uint8 * dst, const Uint8 * src, Uint32 len, int volume)"
|
149
|
+
extern "void SDL_MixAudioFormat(Uint8 * dst, const Uint8 * src, SDL_AudioFormat format, Uint32 len, int volume)"
|
39
150
|
extern "int SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len)"
|
40
151
|
extern "Uint32 SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len)"
|
41
152
|
extern "Uint32 SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev)"
|
@@ -1,6 +1,30 @@
|
|
1
1
|
module SDLRuby::SDL
|
2
|
+
SDL_BLENDMODE_NONE = 0x00000000
|
3
|
+
SDL_BLENDMODE_BLEND = 0x00000001
|
4
|
+
SDL_BLENDMODE_ADD = 0x00000002
|
5
|
+
SDL_BLENDMODE_MOD = 0x00000004
|
6
|
+
SDL_BLENDMODE_MUL = 0x00000008
|
7
|
+
SDL_BLENDMODE_INVALID = 0x7FFFFFFF
|
2
8
|
typealias "SDL_BlendMode", "int"
|
9
|
+
|
10
|
+
SDL_BLENDOPERATION_ADD = 0x1
|
11
|
+
SDL_BLENDOPERATION_SUBTRACT = 0x2
|
12
|
+
SDL_BLENDOPERATION_REV_SUBTRACT = 0x3
|
13
|
+
SDL_BLENDOPERATION_MINIMUM = 0x4
|
14
|
+
SDL_BLENDOPERATION_MAXIMUM = 0x5
|
3
15
|
typealias "SDL_BlendOperation", "int"
|
16
|
+
|
17
|
+
SDL_BLENDFACTOR_ZERO = 0x1
|
18
|
+
SDL_BLENDFACTOR_ONE = 0x2
|
19
|
+
SDL_BLENDFACTOR_SRC_COLOR = 0x3
|
20
|
+
SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4
|
21
|
+
SDL_BLENDFACTOR_SRC_ALPHA = 0x5
|
22
|
+
SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6
|
23
|
+
SDL_BLENDFACTOR_DST_COLOR = 0x7
|
24
|
+
SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8
|
25
|
+
SDL_BLENDFACTOR_DST_ALPHA = 0x9
|
26
|
+
SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA
|
4
27
|
typealias "SDL_BlendFactor", "int"
|
28
|
+
|
5
29
|
extern "SDL_BlendMode SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, SDL_BlendFactor dstColorFactor, SDL_BlendOperation colorOperation, SDL_BlendFactor srcAlphaFactor, SDL_BlendFactor dstAlphaFactor, SDL_BlendOperation alphaOperation)"
|
6
30
|
end
|
@@ -1,3 +1,12 @@
|
|
1
1
|
module SDLRuby::SDL
|
2
|
-
require_relative
|
2
|
+
require_relative "SDL_stdinc.h"
|
3
|
+
|
4
|
+
SDL_LIL_ENDIAN = 1234
|
5
|
+
SDL_BIG_ENDIAN = 4321
|
6
|
+
|
7
|
+
if "\x01\x02\x03\x04".unpack("I") == 0x1020304
|
8
|
+
SDL_BYTEORDER = SDL_BIG_ENDIAN
|
9
|
+
else
|
10
|
+
SDL_BYTEORDER = SDL_LIL_ENDIAN
|
11
|
+
end
|
3
12
|
end
|
@@ -1,9 +1,28 @@
|
|
1
1
|
module SDLRuby::SDL
|
2
|
-
require_relative
|
2
|
+
require_relative "SDL_stdinc.h"
|
3
3
|
|
4
|
-
|
4
|
+
extern "int SDL_SetError(const char *fmt, ...)"
|
5
5
|
extern "const char * SDL_GetError(void)"
|
6
6
|
extern "char * SDL_GetErrorMsg(char *errstr, int maxlen)"
|
7
7
|
extern "void SDL_ClearError(void)"
|
8
|
+
|
9
|
+
def self.SDL_OutOfMemory()
|
10
|
+
SDL_Error(SDL_ENOMEM)
|
11
|
+
end
|
12
|
+
def self.SDL_Unsupported()
|
13
|
+
SDL_Error(SDL_UNSUPPORTED)
|
14
|
+
end
|
15
|
+
def self.SDL_InvalidParamError(param)
|
16
|
+
SDL_SetError("Parameter '%s' is invalid", (param))
|
17
|
+
end
|
18
|
+
|
19
|
+
SDL_ENOMEM = 0
|
20
|
+
SDL_EFREAD = 1
|
21
|
+
SDL_EFWRITE = 2
|
22
|
+
SDL_EFSEEK = 3
|
23
|
+
SDL_UNSUPPORTED = 4
|
24
|
+
SDL_LASTERROR = 5
|
25
|
+
typealias "SDL_errorcode", "int"
|
26
|
+
|
8
27
|
extern "int SDL_Error(SDL_errorcode code)"
|
9
28
|
end
|