sdl2-bindings 0.0.6 → 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.
- checksums.yaml +4 -4
- data/ChangeLog +25 -0
- data/LICENSE.txt +1 -1
- data/README.md +38 -19
- data/lib/sdl2.rb +56 -99
- data/lib/sdl2_audio.rb +62 -20
- data/lib/sdl2_blendmode.rb +28 -25
- data/lib/sdl2_clipboard.rb +9 -4
- data/lib/sdl2_cpuinfo.rb +31 -8
- data/lib/sdl2_error.rb +17 -10
- data/lib/sdl2_events.rb +152 -130
- data/lib/sdl2_filesystem.rb +8 -4
- data/lib/sdl2_framerate.rb +11 -4
- data/lib/sdl2_gamecontroller.rb +130 -55
- data/lib/sdl2_gesture.rb +10 -4
- data/lib/sdl2_gfxPrimitives.rb +65 -4
- data/lib/sdl2_haptic.rb +76 -44
- data/lib/sdl2_hidapi.rb +139 -0
- data/lib/sdl2_hints.rb +146 -113
- data/lib/sdl2_image.rb +54 -7
- data/lib/sdl2_imageFilter.rb +36 -4
- data/lib/sdl2_joystick.rb +102 -38
- data/lib/sdl2_keyboard.rb +23 -5
- data/lib/sdl2_keycode.rb +8 -5
- data/lib/sdl2_log.rb +48 -32
- data/lib/sdl2_main.rb +21 -14
- data/lib/sdl2_messagebox.rb +26 -22
- data/lib/sdl2_misc.rb +48 -0
- data/lib/sdl2_mixer.rb +86 -11
- data/lib/sdl2_mouse.rb +44 -25
- data/lib/sdl2_pixels.rb +115 -99
- data/lib/sdl2_platform.rb +7 -4
- data/lib/sdl2_power.rb +12 -9
- data/lib/sdl2_rect.rb +18 -11
- data/lib/sdl2_render.rb +135 -21
- data/lib/sdl2_rotozoom.rb +14 -4
- data/lib/sdl2_rwops.rb +69 -39
- data/lib/sdl2_scancode.rb +250 -248
- data/lib/sdl2_sensor.rb +115 -0
- data/lib/sdl2_shape.rb +17 -11
- data/lib/sdl2_stdinc.rb +213 -42
- data/lib/sdl2_surface.rb +62 -15
- data/lib/sdl2_syswm.rb +47 -41
- data/lib/sdl2_timer.rb +16 -4
- data/lib/sdl2_touch.rb +18 -9
- data/lib/sdl2_ttf.rb +180 -25
- data/lib/sdl2_version.rb +13 -8
- data/lib/sdl2_video.rb +232 -103
- data/lib/sdl2_vulkan.rb +12 -4
- metadata +21 -4
data/lib/sdl2_cpuinfo.rb
CHANGED
@@ -6,11 +6,11 @@
|
|
6
6
|
|
7
7
|
require 'ffi'
|
8
8
|
|
9
|
-
module
|
9
|
+
module SDL
|
10
10
|
extend FFI::Library
|
11
11
|
# Define/Macro
|
12
12
|
|
13
|
-
|
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 => [],
|
@@ -66,8 +89,8 @@ module SDL2
|
|
66
89
|
:SDL_HasNEON => [],
|
67
90
|
:SDL_GetSystemRAM => [],
|
68
91
|
:SDL_SIMDGetAlignment => [],
|
69
|
-
:SDL_SIMDAlloc => [:
|
70
|
-
:SDL_SIMDRealloc => [:pointer, :
|
92
|
+
:SDL_SIMDAlloc => [:int],
|
93
|
+
:SDL_SIMDRealloc => [:pointer, :int],
|
71
94
|
:SDL_SIMDFree => [:pointer],
|
72
95
|
}
|
73
96
|
retvals = {
|
@@ -88,16 +111,16 @@ module SDL2
|
|
88
111
|
:SDL_HasARMSIMD => :int,
|
89
112
|
:SDL_HasNEON => :int,
|
90
113
|
:SDL_GetSystemRAM => :int,
|
91
|
-
:SDL_SIMDGetAlignment => :
|
114
|
+
:SDL_SIMDGetAlignment => :int,
|
92
115
|
:SDL_SIMDAlloc => :pointer,
|
93
116
|
:SDL_SIMDRealloc => :pointer,
|
94
117
|
:SDL_SIMDFree => :void,
|
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
|
9
|
+
module SDL
|
10
10
|
extend FFI::Library
|
11
11
|
# Define/Macro
|
12
12
|
|
13
13
|
|
14
14
|
# Enum
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
data/lib/sdl2_events.rb
CHANGED
@@ -7,80 +7,81 @@
|
|
7
7
|
require 'ffi'
|
8
8
|
require_relative 'sdl2_keyboard'
|
9
9
|
|
10
|
-
module
|
10
|
+
module SDL
|
11
11
|
extend FFI::Library
|
12
12
|
# Define/Macro
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
RELEASED = 0
|
15
|
+
PRESSED = 1
|
16
|
+
TEXTEDITINGEVENT_TEXT_SIZE = 32
|
17
|
+
TEXTINPUTEVENT_TEXT_SIZE = 32
|
18
|
+
QUERY = -1
|
19
|
+
IGNORE = 0
|
20
|
+
DISABLE = 0
|
21
|
+
ENABLE = 1
|
22
22
|
|
23
23
|
# Enum
|
24
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
|
-
|
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
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
25
|
+
FIRSTEVENT = 0
|
26
|
+
QUIT = 256
|
27
|
+
APP_TERMINATING = 257
|
28
|
+
APP_LOWMEMORY = 258
|
29
|
+
APP_WILLENTERBACKGROUND = 259
|
30
|
+
APP_DIDENTERBACKGROUND = 260
|
31
|
+
APP_WILLENTERFOREGROUND = 261
|
32
|
+
APP_DIDENTERFOREGROUND = 262
|
33
|
+
LOCALECHANGED = 263
|
34
|
+
DISPLAYEVENT = 336
|
35
|
+
WINDOWEVENT = 512
|
36
|
+
SYSWMEVENT = 513
|
37
|
+
KEYDOWN = 768
|
38
|
+
KEYUP = 769
|
39
|
+
TEXTEDITING = 770
|
40
|
+
TEXTINPUT = 771
|
41
|
+
KEYMAPCHANGED = 772
|
42
|
+
MOUSEMOTION = 1024
|
43
|
+
MOUSEBUTTONDOWN = 1025
|
44
|
+
MOUSEBUTTONUP = 1026
|
45
|
+
MOUSEWHEEL = 1027
|
46
|
+
JOYAXISMOTION = 1536
|
47
|
+
JOYBALLMOTION = 1537
|
48
|
+
JOYHATMOTION = 1538
|
49
|
+
JOYBUTTONDOWN = 1539
|
50
|
+
JOYBUTTONUP = 1540
|
51
|
+
JOYDEVICEADDED = 1541
|
52
|
+
JOYDEVICEREMOVED = 1542
|
53
|
+
CONTROLLERAXISMOTION = 1616
|
54
|
+
CONTROLLERBUTTONDOWN = 1617
|
55
|
+
CONTROLLERBUTTONUP = 1618
|
56
|
+
CONTROLLERDEVICEADDED = 1619
|
57
|
+
CONTROLLERDEVICEREMOVED = 1620
|
58
|
+
CONTROLLERDEVICEREMAPPED = 1621
|
59
|
+
CONTROLLERTOUCHPADDOWN = 1622
|
60
|
+
CONTROLLERTOUCHPADMOTION = 1623
|
61
|
+
CONTROLLERTOUCHPADUP = 1624
|
62
|
+
CONTROLLERSENSORUPDATE = 1625
|
63
|
+
FINGERDOWN = 1792
|
64
|
+
FINGERUP = 1793
|
65
|
+
FINGERMOTION = 1794
|
66
|
+
DOLLARGESTURE = 2048
|
67
|
+
DOLLARRECORD = 2049
|
68
|
+
MULTIGESTURE = 2050
|
69
|
+
CLIPBOARDUPDATE = 2304
|
70
|
+
DROPFILE = 4096
|
71
|
+
DROPTEXT = 4097
|
72
|
+
DROPBEGIN = 4098
|
73
|
+
DROPCOMPLETE = 4099
|
74
|
+
AUDIODEVICEADDED = 4352
|
75
|
+
AUDIODEVICEREMOVED = 4353
|
76
|
+
SENSORUPDATE = 4608
|
77
|
+
RENDER_TARGETS_RESET = 8192
|
78
|
+
RENDER_DEVICE_RESET = 8193
|
79
|
+
POLLSENTINEL = 32512
|
80
|
+
USEREVENT = 32768
|
81
|
+
LASTEVENT = 65535
|
82
|
+
ADDEVENT = 0
|
83
|
+
PEEKEVENT = 1
|
84
|
+
GETEVENT = 2
|
84
85
|
|
85
86
|
# Typedef
|
86
87
|
|
@@ -91,14 +92,14 @@ module SDL2
|
|
91
92
|
|
92
93
|
# Struct
|
93
94
|
|
94
|
-
class
|
95
|
+
class CommonEvent < FFI::Struct
|
95
96
|
layout(
|
96
97
|
:type, :uint,
|
97
98
|
:timestamp, :uint,
|
98
99
|
)
|
99
100
|
end
|
100
101
|
|
101
|
-
class
|
102
|
+
class DisplayEvent < FFI::Struct
|
102
103
|
layout(
|
103
104
|
:type, :uint,
|
104
105
|
:timestamp, :uint,
|
@@ -111,7 +112,7 @@ module SDL2
|
|
111
112
|
)
|
112
113
|
end
|
113
114
|
|
114
|
-
class
|
115
|
+
class WindowEvent < FFI::Struct
|
115
116
|
layout(
|
116
117
|
:type, :uint,
|
117
118
|
:timestamp, :uint,
|
@@ -125,7 +126,7 @@ module SDL2
|
|
125
126
|
)
|
126
127
|
end
|
127
128
|
|
128
|
-
class
|
129
|
+
class KeyboardEvent < FFI::Struct
|
129
130
|
layout(
|
130
131
|
:type, :uint,
|
131
132
|
:timestamp, :uint,
|
@@ -134,11 +135,11 @@ module SDL2
|
|
134
135
|
:repeat, :uchar,
|
135
136
|
:padding2, :uchar,
|
136
137
|
:padding3, :uchar,
|
137
|
-
:keysym,
|
138
|
+
:keysym, Keysym,
|
138
139
|
)
|
139
140
|
end
|
140
141
|
|
141
|
-
class
|
142
|
+
class TextEditingEvent < FFI::Struct
|
142
143
|
layout(
|
143
144
|
:type, :uint,
|
144
145
|
:timestamp, :uint,
|
@@ -149,7 +150,7 @@ module SDL2
|
|
149
150
|
)
|
150
151
|
end
|
151
152
|
|
152
|
-
class
|
153
|
+
class TextInputEvent < FFI::Struct
|
153
154
|
layout(
|
154
155
|
:type, :uint,
|
155
156
|
:timestamp, :uint,
|
@@ -158,7 +159,7 @@ module SDL2
|
|
158
159
|
)
|
159
160
|
end
|
160
161
|
|
161
|
-
class
|
162
|
+
class MouseMotionEvent < FFI::Struct
|
162
163
|
layout(
|
163
164
|
:type, :uint,
|
164
165
|
:timestamp, :uint,
|
@@ -172,7 +173,7 @@ module SDL2
|
|
172
173
|
)
|
173
174
|
end
|
174
175
|
|
175
|
-
class
|
176
|
+
class MouseButtonEvent < FFI::Struct
|
176
177
|
layout(
|
177
178
|
:type, :uint,
|
178
179
|
:timestamp, :uint,
|
@@ -187,7 +188,7 @@ module SDL2
|
|
187
188
|
)
|
188
189
|
end
|
189
190
|
|
190
|
-
class
|
191
|
+
class MouseWheelEvent < FFI::Struct
|
191
192
|
layout(
|
192
193
|
:type, :uint,
|
193
194
|
:timestamp, :uint,
|
@@ -196,10 +197,12 @@ module SDL2
|
|
196
197
|
:x, :int,
|
197
198
|
:y, :int,
|
198
199
|
:direction, :uint,
|
200
|
+
:preciseX, :float,
|
201
|
+
:preciseY, :float,
|
199
202
|
)
|
200
203
|
end
|
201
204
|
|
202
|
-
class
|
205
|
+
class JoyAxisEvent < FFI::Struct
|
203
206
|
layout(
|
204
207
|
:type, :uint,
|
205
208
|
:timestamp, :uint,
|
@@ -213,7 +216,7 @@ module SDL2
|
|
213
216
|
)
|
214
217
|
end
|
215
218
|
|
216
|
-
class
|
219
|
+
class JoyBallEvent < FFI::Struct
|
217
220
|
layout(
|
218
221
|
:type, :uint,
|
219
222
|
:timestamp, :uint,
|
@@ -227,7 +230,7 @@ module SDL2
|
|
227
230
|
)
|
228
231
|
end
|
229
232
|
|
230
|
-
class
|
233
|
+
class JoyHatEvent < FFI::Struct
|
231
234
|
layout(
|
232
235
|
:type, :uint,
|
233
236
|
:timestamp, :uint,
|
@@ -239,7 +242,7 @@ module SDL2
|
|
239
242
|
)
|
240
243
|
end
|
241
244
|
|
242
|
-
class
|
245
|
+
class JoyButtonEvent < FFI::Struct
|
243
246
|
layout(
|
244
247
|
:type, :uint,
|
245
248
|
:timestamp, :uint,
|
@@ -251,7 +254,7 @@ module SDL2
|
|
251
254
|
)
|
252
255
|
end
|
253
256
|
|
254
|
-
class
|
257
|
+
class JoyDeviceEvent < FFI::Struct
|
255
258
|
layout(
|
256
259
|
:type, :uint,
|
257
260
|
:timestamp, :uint,
|
@@ -259,7 +262,7 @@ module SDL2
|
|
259
262
|
)
|
260
263
|
end
|
261
264
|
|
262
|
-
class
|
265
|
+
class ControllerAxisEvent < FFI::Struct
|
263
266
|
layout(
|
264
267
|
:type, :uint,
|
265
268
|
:timestamp, :uint,
|
@@ -273,7 +276,7 @@ module SDL2
|
|
273
276
|
)
|
274
277
|
end
|
275
278
|
|
276
|
-
class
|
279
|
+
class ControllerButtonEvent < FFI::Struct
|
277
280
|
layout(
|
278
281
|
:type, :uint,
|
279
282
|
:timestamp, :uint,
|
@@ -285,7 +288,7 @@ module SDL2
|
|
285
288
|
)
|
286
289
|
end
|
287
290
|
|
288
|
-
class
|
291
|
+
class ControllerDeviceEvent < FFI::Struct
|
289
292
|
layout(
|
290
293
|
:type, :uint,
|
291
294
|
:timestamp, :uint,
|
@@ -293,7 +296,7 @@ module SDL2
|
|
293
296
|
)
|
294
297
|
end
|
295
298
|
|
296
|
-
class
|
299
|
+
class ControllerTouchpadEvent < FFI::Struct
|
297
300
|
layout(
|
298
301
|
:type, :uint,
|
299
302
|
:timestamp, :uint,
|
@@ -306,7 +309,7 @@ module SDL2
|
|
306
309
|
)
|
307
310
|
end
|
308
311
|
|
309
|
-
class
|
312
|
+
class ControllerSensorEvent < FFI::Struct
|
310
313
|
layout(
|
311
314
|
:type, :uint,
|
312
315
|
:timestamp, :uint,
|
@@ -316,7 +319,7 @@ module SDL2
|
|
316
319
|
)
|
317
320
|
end
|
318
321
|
|
319
|
-
class
|
322
|
+
class AudioDeviceEvent < FFI::Struct
|
320
323
|
layout(
|
321
324
|
:type, :uint,
|
322
325
|
:timestamp, :uint,
|
@@ -328,7 +331,7 @@ module SDL2
|
|
328
331
|
)
|
329
332
|
end
|
330
333
|
|
331
|
-
class
|
334
|
+
class TouchFingerEvent < FFI::Struct
|
332
335
|
layout(
|
333
336
|
:type, :uint,
|
334
337
|
:timestamp, :uint,
|
@@ -343,7 +346,7 @@ module SDL2
|
|
343
346
|
)
|
344
347
|
end
|
345
348
|
|
346
|
-
class
|
349
|
+
class MultiGestureEvent < FFI::Struct
|
347
350
|
layout(
|
348
351
|
:type, :uint,
|
349
352
|
:timestamp, :uint,
|
@@ -357,7 +360,7 @@ module SDL2
|
|
357
360
|
)
|
358
361
|
end
|
359
362
|
|
360
|
-
class
|
363
|
+
class DollarGestureEvent < FFI::Struct
|
361
364
|
layout(
|
362
365
|
:type, :uint,
|
363
366
|
:timestamp, :uint,
|
@@ -370,7 +373,7 @@ module SDL2
|
|
370
373
|
)
|
371
374
|
end
|
372
375
|
|
373
|
-
class
|
376
|
+
class DropEvent < FFI::Struct
|
374
377
|
layout(
|
375
378
|
:type, :uint,
|
376
379
|
:timestamp, :uint,
|
@@ -379,7 +382,7 @@ module SDL2
|
|
379
382
|
)
|
380
383
|
end
|
381
384
|
|
382
|
-
class
|
385
|
+
class SensorEvent < FFI::Struct
|
383
386
|
layout(
|
384
387
|
:type, :uint,
|
385
388
|
:timestamp, :uint,
|
@@ -388,21 +391,21 @@ module SDL2
|
|
388
391
|
)
|
389
392
|
end
|
390
393
|
|
391
|
-
class
|
394
|
+
class QuitEvent < FFI::Struct
|
392
395
|
layout(
|
393
396
|
:type, :uint,
|
394
397
|
:timestamp, :uint,
|
395
398
|
)
|
396
399
|
end
|
397
400
|
|
398
|
-
class
|
401
|
+
class OSEvent < FFI::Struct
|
399
402
|
layout(
|
400
403
|
:type, :uint,
|
401
404
|
:timestamp, :uint,
|
402
405
|
)
|
403
406
|
end
|
404
407
|
|
405
|
-
class
|
408
|
+
class UserEvent < FFI::Struct
|
406
409
|
layout(
|
407
410
|
:type, :uint,
|
408
411
|
:timestamp, :uint,
|
@@ -413,7 +416,7 @@ module SDL2
|
|
413
416
|
)
|
414
417
|
end
|
415
418
|
|
416
|
-
class
|
419
|
+
class SysWMEvent < FFI::Struct
|
417
420
|
layout(
|
418
421
|
:type, :uint,
|
419
422
|
:timestamp, :uint,
|
@@ -421,37 +424,37 @@ module SDL2
|
|
421
424
|
)
|
422
425
|
end
|
423
426
|
|
424
|
-
class
|
427
|
+
class Event < FFI::Union
|
425
428
|
layout(
|
426
429
|
:type, :uint,
|
427
|
-
:common,
|
428
|
-
:display,
|
429
|
-
:window,
|
430
|
-
:key,
|
431
|
-
:edit,
|
432
|
-
:text,
|
433
|
-
:motion,
|
434
|
-
:button,
|
435
|
-
:wheel,
|
436
|
-
:jaxis,
|
437
|
-
:jball,
|
438
|
-
:jhat,
|
439
|
-
:jbutton,
|
440
|
-
:jdevice,
|
441
|
-
:caxis,
|
442
|
-
:cbutton,
|
443
|
-
:cdevice,
|
444
|
-
:ctouchpad,
|
445
|
-
:csensor,
|
446
|
-
:adevice,
|
447
|
-
:sensor,
|
448
|
-
:quit,
|
449
|
-
:user,
|
450
|
-
:syswm,
|
451
|
-
:tfinger,
|
452
|
-
:mgesture,
|
453
|
-
:dgesture,
|
454
|
-
:drop,
|
430
|
+
:common, CommonEvent,
|
431
|
+
:display, DisplayEvent,
|
432
|
+
:window, WindowEvent,
|
433
|
+
:key, KeyboardEvent,
|
434
|
+
:edit, TextEditingEvent,
|
435
|
+
:text, TextInputEvent,
|
436
|
+
:motion, MouseMotionEvent,
|
437
|
+
:button, MouseButtonEvent,
|
438
|
+
:wheel, MouseWheelEvent,
|
439
|
+
:jaxis, JoyAxisEvent,
|
440
|
+
:jball, JoyBallEvent,
|
441
|
+
:jhat, JoyHatEvent,
|
442
|
+
:jbutton, JoyButtonEvent,
|
443
|
+
:jdevice, JoyDeviceEvent,
|
444
|
+
:caxis, ControllerAxisEvent,
|
445
|
+
:cbutton, ControllerButtonEvent,
|
446
|
+
:cdevice, ControllerDeviceEvent,
|
447
|
+
:ctouchpad, ControllerTouchpadEvent,
|
448
|
+
:csensor, ControllerSensorEvent,
|
449
|
+
:adevice, AudioDeviceEvent,
|
450
|
+
:sensor, SensorEvent,
|
451
|
+
:quit, QuitEvent,
|
452
|
+
:user, UserEvent,
|
453
|
+
:syswm, SysWMEvent,
|
454
|
+
:tfinger, TouchFingerEvent,
|
455
|
+
:mgesture, MultiGestureEvent,
|
456
|
+
:dgesture, DollarGestureEvent,
|
457
|
+
:drop, DropEvent,
|
455
458
|
:padding, [:uchar, 56],
|
456
459
|
)
|
457
460
|
end
|
@@ -459,7 +462,7 @@ module SDL2
|
|
459
462
|
|
460
463
|
# Function
|
461
464
|
|
462
|
-
def self.setup_events_symbols()
|
465
|
+
def self.setup_events_symbols(output_error = false)
|
463
466
|
symbols = [
|
464
467
|
:SDL_PumpEvents,
|
465
468
|
:SDL_PeepEvents,
|
@@ -479,6 +482,25 @@ module SDL2
|
|
479
482
|
:SDL_EventState,
|
480
483
|
:SDL_RegisterEvents,
|
481
484
|
]
|
485
|
+
apis = {
|
486
|
+
:SDL_PumpEvents => :PumpEvents,
|
487
|
+
:SDL_PeepEvents => :PeepEvents,
|
488
|
+
:SDL_HasEvent => :HasEvent,
|
489
|
+
:SDL_HasEvents => :HasEvents,
|
490
|
+
:SDL_FlushEvent => :FlushEvent,
|
491
|
+
:SDL_FlushEvents => :FlushEvents,
|
492
|
+
:SDL_PollEvent => :PollEvent,
|
493
|
+
:SDL_WaitEvent => :WaitEvent,
|
494
|
+
:SDL_WaitEventTimeout => :WaitEventTimeout,
|
495
|
+
:SDL_PushEvent => :PushEvent,
|
496
|
+
:SDL_SetEventFilter => :SetEventFilter,
|
497
|
+
:SDL_GetEventFilter => :GetEventFilter,
|
498
|
+
:SDL_AddEventWatch => :AddEventWatch,
|
499
|
+
:SDL_DelEventWatch => :DelEventWatch,
|
500
|
+
:SDL_FilterEvents => :FilterEvents,
|
501
|
+
:SDL_EventState => :EventState,
|
502
|
+
:SDL_RegisterEvents => :RegisterEvents,
|
503
|
+
}
|
482
504
|
args = {
|
483
505
|
:SDL_PumpEvents => [],
|
484
506
|
:SDL_PeepEvents => [:pointer, :int, :int, :uint, :uint],
|
@@ -519,9 +541,9 @@ module SDL2
|
|
519
541
|
}
|
520
542
|
symbols.each do |sym|
|
521
543
|
begin
|
522
|
-
attach_function sym, args[sym], retvals[sym]
|
544
|
+
attach_function apis[sym], sym, args[sym], retvals[sym]
|
523
545
|
rescue FFI::NotFoundError => error
|
524
|
-
$stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
|
546
|
+
$stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
|
525
547
|
end
|
526
548
|
end
|
527
549
|
end
|
data/lib/sdl2_filesystem.rb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
require 'ffi'
|
8
8
|
|
9
|
-
module
|
9
|
+
module SDL
|
10
10
|
extend FFI::Library
|
11
11
|
# Define/Macro
|
12
12
|
|
@@ -22,11 +22,15 @@ module SDL2
|
|
22
22
|
|
23
23
|
# Function
|
24
24
|
|
25
|
-
def self.setup_filesystem_symbols()
|
25
|
+
def self.setup_filesystem_symbols(output_error = false)
|
26
26
|
symbols = [
|
27
27
|
:SDL_GetBasePath,
|
28
28
|
:SDL_GetPrefPath,
|
29
29
|
]
|
30
|
+
apis = {
|
31
|
+
:SDL_GetBasePath => :GetBasePath,
|
32
|
+
:SDL_GetPrefPath => :GetPrefPath,
|
33
|
+
}
|
30
34
|
args = {
|
31
35
|
:SDL_GetBasePath => [],
|
32
36
|
:SDL_GetPrefPath => [:pointer, :pointer],
|
@@ -37,9 +41,9 @@ module SDL2
|
|
37
41
|
}
|
38
42
|
symbols.each do |sym|
|
39
43
|
begin
|
40
|
-
attach_function sym, args[sym], retvals[sym]
|
44
|
+
attach_function apis[sym], sym, args[sym], retvals[sym]
|
41
45
|
rescue FFI::NotFoundError => error
|
42
|
-
$stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
|
46
|
+
$stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
|
43
47
|
end
|
44
48
|
end
|
45
49
|
end
|