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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +25 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +38 -19
  5. data/lib/sdl2.rb +56 -99
  6. data/lib/sdl2_audio.rb +62 -20
  7. data/lib/sdl2_blendmode.rb +28 -25
  8. data/lib/sdl2_clipboard.rb +9 -4
  9. data/lib/sdl2_cpuinfo.rb +31 -8
  10. data/lib/sdl2_error.rb +17 -10
  11. data/lib/sdl2_events.rb +152 -130
  12. data/lib/sdl2_filesystem.rb +8 -4
  13. data/lib/sdl2_framerate.rb +11 -4
  14. data/lib/sdl2_gamecontroller.rb +130 -55
  15. data/lib/sdl2_gesture.rb +10 -4
  16. data/lib/sdl2_gfxPrimitives.rb +65 -4
  17. data/lib/sdl2_haptic.rb +76 -44
  18. data/lib/sdl2_hidapi.rb +139 -0
  19. data/lib/sdl2_hints.rb +146 -113
  20. data/lib/sdl2_image.rb +54 -7
  21. data/lib/sdl2_imageFilter.rb +36 -4
  22. data/lib/sdl2_joystick.rb +102 -38
  23. data/lib/sdl2_keyboard.rb +23 -5
  24. data/lib/sdl2_keycode.rb +8 -5
  25. data/lib/sdl2_log.rb +48 -32
  26. data/lib/sdl2_main.rb +21 -14
  27. data/lib/sdl2_messagebox.rb +26 -22
  28. data/lib/sdl2_misc.rb +48 -0
  29. data/lib/sdl2_mixer.rb +86 -11
  30. data/lib/sdl2_mouse.rb +44 -25
  31. data/lib/sdl2_pixels.rb +115 -99
  32. data/lib/sdl2_platform.rb +7 -4
  33. data/lib/sdl2_power.rb +12 -9
  34. data/lib/sdl2_rect.rb +18 -11
  35. data/lib/sdl2_render.rb +135 -21
  36. data/lib/sdl2_rotozoom.rb +14 -4
  37. data/lib/sdl2_rwops.rb +69 -39
  38. data/lib/sdl2_scancode.rb +250 -248
  39. data/lib/sdl2_sensor.rb +115 -0
  40. data/lib/sdl2_shape.rb +17 -11
  41. data/lib/sdl2_stdinc.rb +213 -42
  42. data/lib/sdl2_surface.rb +62 -15
  43. data/lib/sdl2_syswm.rb +47 -41
  44. data/lib/sdl2_timer.rb +16 -4
  45. data/lib/sdl2_touch.rb +18 -9
  46. data/lib/sdl2_ttf.rb +180 -25
  47. data/lib/sdl2_version.rb +13 -8
  48. data/lib/sdl2_video.rb +232 -103
  49. data/lib/sdl2_vulkan.rb +12 -4
  50. metadata +21 -4
data/lib/sdl2_render.rb CHANGED
@@ -6,29 +6,29 @@
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_RENDERER_SOFTWARE = 1
17
- SDL_RENDERER_ACCELERATED = 2
18
- SDL_RENDERER_PRESENTVSYNC = 4
19
- SDL_RENDERER_TARGETTEXTURE = 8
20
- SDL_ScaleModeNearest = 0
21
- SDL_ScaleModeLinear = 1
22
- SDL_ScaleModeBest = 2
23
- SDL_TEXTUREACCESS_STATIC = 0
24
- SDL_TEXTUREACCESS_STREAMING = 1
25
- SDL_TEXTUREACCESS_TARGET = 2
26
- SDL_TEXTUREMODULATE_NONE = 0
27
- SDL_TEXTUREMODULATE_COLOR = 1
28
- SDL_TEXTUREMODULATE_ALPHA = 2
29
- SDL_FLIP_NONE = 0
30
- SDL_FLIP_HORIZONTAL = 1
31
- SDL_FLIP_VERTICAL = 2
16
+ RENDERER_SOFTWARE = 1
17
+ RENDERER_ACCELERATED = 2
18
+ RENDERER_PRESENTVSYNC = 4
19
+ RENDERER_TARGETTEXTURE = 8
20
+ ScaleModeNearest = 0
21
+ ScaleModeLinear = 1
22
+ ScaleModeBest = 2
23
+ TEXTUREACCESS_STATIC = 0
24
+ TEXTUREACCESS_STREAMING = 1
25
+ TEXTUREACCESS_TARGET = 2
26
+ TEXTUREMODULATE_NONE = 0
27
+ TEXTUREMODULATE_COLOR = 1
28
+ TEXTUREMODULATE_ALPHA = 2
29
+ FLIP_NONE = 0
30
+ FLIP_HORIZONTAL = 1
31
+ FLIP_VERTICAL = 2
32
32
 
33
33
  # Typedef
34
34
 
@@ -40,7 +40,7 @@ module SDL2
40
40
 
41
41
  # Struct
42
42
 
43
- class SDL_RendererInfo < FFI::Struct
43
+ class RendererInfo < FFI::Struct
44
44
  layout(
45
45
  :name, :pointer,
46
46
  :flags, :uint,
@@ -51,10 +51,18 @@ module SDL2
51
51
  )
52
52
  end
53
53
 
54
+ class Vertex < FFI::Struct
55
+ layout(
56
+ :position, FPoint,
57
+ :color, Color,
58
+ :tex_coord, FPoint,
59
+ )
60
+ end
61
+
54
62
 
55
63
  # Function
56
64
 
57
- def self.setup_render_symbols()
65
+ def self.setup_render_symbols(output_error = false)
58
66
  symbols = [
59
67
  :SDL_GetNumRenderDrivers,
60
68
  :SDL_GetRenderDriverInfo,
@@ -75,8 +83,11 @@ module SDL2
75
83
  :SDL_GetTextureBlendMode,
76
84
  :SDL_SetTextureScaleMode,
77
85
  :SDL_GetTextureScaleMode,
86
+ :SDL_SetTextureUserData,
87
+ :SDL_GetTextureUserData,
78
88
  :SDL_UpdateTexture,
79
89
  :SDL_UpdateYUVTexture,
90
+ :SDL_UpdateNVTexture,
80
91
  :SDL_LockTexture,
81
92
  :SDL_LockTextureToSurface,
82
93
  :SDL_UnlockTexture,
@@ -94,6 +105,8 @@ module SDL2
94
105
  :SDL_RenderIsClipEnabled,
95
106
  :SDL_RenderSetScale,
96
107
  :SDL_RenderGetScale,
108
+ :SDL_RenderWindowToLogical,
109
+ :SDL_RenderLogicalToWindow,
97
110
  :SDL_SetRenderDrawColor,
98
111
  :SDL_GetRenderDrawColor,
99
112
  :SDL_SetRenderDrawBlendMode,
@@ -119,6 +132,8 @@ module SDL2
119
132
  :SDL_RenderFillRectsF,
120
133
  :SDL_RenderCopyF,
121
134
  :SDL_RenderCopyExF,
135
+ :SDL_RenderGeometry,
136
+ :SDL_RenderGeometryRaw,
122
137
  :SDL_RenderReadPixels,
123
138
  :SDL_RenderPresent,
124
139
  :SDL_DestroyTexture,
@@ -128,7 +143,90 @@ module SDL2
128
143
  :SDL_GL_UnbindTexture,
129
144
  :SDL_RenderGetMetalLayer,
130
145
  :SDL_RenderGetMetalCommandEncoder,
146
+ :SDL_RenderSetVSync,
131
147
  ]
148
+ apis = {
149
+ :SDL_GetNumRenderDrivers => :GetNumRenderDrivers,
150
+ :SDL_GetRenderDriverInfo => :GetRenderDriverInfo,
151
+ :SDL_CreateWindowAndRenderer => :CreateWindowAndRenderer,
152
+ :SDL_CreateRenderer => :CreateRenderer,
153
+ :SDL_CreateSoftwareRenderer => :CreateSoftwareRenderer,
154
+ :SDL_GetRenderer => :GetRenderer,
155
+ :SDL_GetRendererInfo => :GetRendererInfo,
156
+ :SDL_GetRendererOutputSize => :GetRendererOutputSize,
157
+ :SDL_CreateTexture => :CreateTexture,
158
+ :SDL_CreateTextureFromSurface => :CreateTextureFromSurface,
159
+ :SDL_QueryTexture => :QueryTexture,
160
+ :SDL_SetTextureColorMod => :SetTextureColorMod,
161
+ :SDL_GetTextureColorMod => :GetTextureColorMod,
162
+ :SDL_SetTextureAlphaMod => :SetTextureAlphaMod,
163
+ :SDL_GetTextureAlphaMod => :GetTextureAlphaMod,
164
+ :SDL_SetTextureBlendMode => :SetTextureBlendMode,
165
+ :SDL_GetTextureBlendMode => :GetTextureBlendMode,
166
+ :SDL_SetTextureScaleMode => :SetTextureScaleMode,
167
+ :SDL_GetTextureScaleMode => :GetTextureScaleMode,
168
+ :SDL_SetTextureUserData => :SetTextureUserData,
169
+ :SDL_GetTextureUserData => :GetTextureUserData,
170
+ :SDL_UpdateTexture => :UpdateTexture,
171
+ :SDL_UpdateYUVTexture => :UpdateYUVTexture,
172
+ :SDL_UpdateNVTexture => :UpdateNVTexture,
173
+ :SDL_LockTexture => :LockTexture,
174
+ :SDL_LockTextureToSurface => :LockTextureToSurface,
175
+ :SDL_UnlockTexture => :UnlockTexture,
176
+ :SDL_RenderTargetSupported => :RenderTargetSupported,
177
+ :SDL_SetRenderTarget => :SetRenderTarget,
178
+ :SDL_GetRenderTarget => :GetRenderTarget,
179
+ :SDL_RenderSetLogicalSize => :RenderSetLogicalSize,
180
+ :SDL_RenderGetLogicalSize => :RenderGetLogicalSize,
181
+ :SDL_RenderSetIntegerScale => :RenderSetIntegerScale,
182
+ :SDL_RenderGetIntegerScale => :RenderGetIntegerScale,
183
+ :SDL_RenderSetViewport => :RenderSetViewport,
184
+ :SDL_RenderGetViewport => :RenderGetViewport,
185
+ :SDL_RenderSetClipRect => :RenderSetClipRect,
186
+ :SDL_RenderGetClipRect => :RenderGetClipRect,
187
+ :SDL_RenderIsClipEnabled => :RenderIsClipEnabled,
188
+ :SDL_RenderSetScale => :RenderSetScale,
189
+ :SDL_RenderGetScale => :RenderGetScale,
190
+ :SDL_RenderWindowToLogical => :RenderWindowToLogical,
191
+ :SDL_RenderLogicalToWindow => :RenderLogicalToWindow,
192
+ :SDL_SetRenderDrawColor => :SetRenderDrawColor,
193
+ :SDL_GetRenderDrawColor => :GetRenderDrawColor,
194
+ :SDL_SetRenderDrawBlendMode => :SetRenderDrawBlendMode,
195
+ :SDL_GetRenderDrawBlendMode => :GetRenderDrawBlendMode,
196
+ :SDL_RenderClear => :RenderClear,
197
+ :SDL_RenderDrawPoint => :RenderDrawPoint,
198
+ :SDL_RenderDrawPoints => :RenderDrawPoints,
199
+ :SDL_RenderDrawLine => :RenderDrawLine,
200
+ :SDL_RenderDrawLines => :RenderDrawLines,
201
+ :SDL_RenderDrawRect => :RenderDrawRect,
202
+ :SDL_RenderDrawRects => :RenderDrawRects,
203
+ :SDL_RenderFillRect => :RenderFillRect,
204
+ :SDL_RenderFillRects => :RenderFillRects,
205
+ :SDL_RenderCopy => :RenderCopy,
206
+ :SDL_RenderCopyEx => :RenderCopyEx,
207
+ :SDL_RenderDrawPointF => :RenderDrawPointF,
208
+ :SDL_RenderDrawPointsF => :RenderDrawPointsF,
209
+ :SDL_RenderDrawLineF => :RenderDrawLineF,
210
+ :SDL_RenderDrawLinesF => :RenderDrawLinesF,
211
+ :SDL_RenderDrawRectF => :RenderDrawRectF,
212
+ :SDL_RenderDrawRectsF => :RenderDrawRectsF,
213
+ :SDL_RenderFillRectF => :RenderFillRectF,
214
+ :SDL_RenderFillRectsF => :RenderFillRectsF,
215
+ :SDL_RenderCopyF => :RenderCopyF,
216
+ :SDL_RenderCopyExF => :RenderCopyExF,
217
+ :SDL_RenderGeometry => :RenderGeometry,
218
+ :SDL_RenderGeometryRaw => :RenderGeometryRaw,
219
+ :SDL_RenderReadPixels => :RenderReadPixels,
220
+ :SDL_RenderPresent => :RenderPresent,
221
+ :SDL_DestroyTexture => :DestroyTexture,
222
+ :SDL_DestroyRenderer => :DestroyRenderer,
223
+ :SDL_RenderFlush => :RenderFlush,
224
+ :SDL_GL_BindTexture => :GL_BindTexture,
225
+ :SDL_GL_UnbindTexture => :GL_UnbindTexture,
226
+ :SDL_RenderGetMetalLayer => :RenderGetMetalLayer,
227
+ :SDL_RenderGetMetalCommandEncoder => :RenderGetMetalCommandEncoder,
228
+ :SDL_RenderSetVSync => :RenderSetVSync,
229
+ }
132
230
  args = {
133
231
  :SDL_GetNumRenderDrivers => [],
134
232
  :SDL_GetRenderDriverInfo => [:int, :pointer],
@@ -149,8 +247,11 @@ module SDL2
149
247
  :SDL_GetTextureBlendMode => [:pointer, :pointer],
150
248
  :SDL_SetTextureScaleMode => [:pointer, :int],
151
249
  :SDL_GetTextureScaleMode => [:pointer, :pointer],
250
+ :SDL_SetTextureUserData => [:pointer, :pointer],
251
+ :SDL_GetTextureUserData => [:pointer],
152
252
  :SDL_UpdateTexture => [:pointer, :pointer, :pointer, :int],
153
253
  :SDL_UpdateYUVTexture => [:pointer, :pointer, :pointer, :int, :pointer, :int, :pointer, :int],
254
+ :SDL_UpdateNVTexture => [:pointer, :pointer, :pointer, :int, :pointer, :int],
154
255
  :SDL_LockTexture => [:pointer, :pointer, :pointer, :pointer],
155
256
  :SDL_LockTextureToSurface => [:pointer, :pointer, :pointer],
156
257
  :SDL_UnlockTexture => [:pointer],
@@ -168,6 +269,8 @@ module SDL2
168
269
  :SDL_RenderIsClipEnabled => [:pointer],
169
270
  :SDL_RenderSetScale => [:pointer, :float, :float],
170
271
  :SDL_RenderGetScale => [:pointer, :pointer, :pointer],
272
+ :SDL_RenderWindowToLogical => [:pointer, :int, :int, :pointer, :pointer],
273
+ :SDL_RenderLogicalToWindow => [:pointer, :float, :float, :pointer, :pointer],
171
274
  :SDL_SetRenderDrawColor => [:pointer, :uchar, :uchar, :uchar, :uchar],
172
275
  :SDL_GetRenderDrawColor => [:pointer, :pointer, :pointer, :pointer, :pointer],
173
276
  :SDL_SetRenderDrawBlendMode => [:pointer, :int],
@@ -193,6 +296,8 @@ module SDL2
193
296
  :SDL_RenderFillRectsF => [:pointer, :pointer, :int],
194
297
  :SDL_RenderCopyF => [:pointer, :pointer, :pointer, :pointer],
195
298
  :SDL_RenderCopyExF => [:pointer, :pointer, :pointer, :pointer, :double, :pointer, :int],
299
+ :SDL_RenderGeometry => [:pointer, :pointer, :pointer, :int, :pointer, :int],
300
+ :SDL_RenderGeometryRaw => [:pointer, :pointer, :pointer, :int, :pointer, :int, :pointer, :int, :int, :pointer, :int, :int],
196
301
  :SDL_RenderReadPixels => [:pointer, :pointer, :uint, :pointer, :int],
197
302
  :SDL_RenderPresent => [:pointer],
198
303
  :SDL_DestroyTexture => [:pointer],
@@ -202,6 +307,7 @@ module SDL2
202
307
  :SDL_GL_UnbindTexture => [:pointer],
203
308
  :SDL_RenderGetMetalLayer => [:pointer],
204
309
  :SDL_RenderGetMetalCommandEncoder => [:pointer],
310
+ :SDL_RenderSetVSync => [:pointer, :int],
205
311
  }
206
312
  retvals = {
207
313
  :SDL_GetNumRenderDrivers => :int,
@@ -223,8 +329,11 @@ module SDL2
223
329
  :SDL_GetTextureBlendMode => :int,
224
330
  :SDL_SetTextureScaleMode => :int,
225
331
  :SDL_GetTextureScaleMode => :int,
332
+ :SDL_SetTextureUserData => :int,
333
+ :SDL_GetTextureUserData => :pointer,
226
334
  :SDL_UpdateTexture => :int,
227
335
  :SDL_UpdateYUVTexture => :int,
336
+ :SDL_UpdateNVTexture => :int,
228
337
  :SDL_LockTexture => :int,
229
338
  :SDL_LockTextureToSurface => :int,
230
339
  :SDL_UnlockTexture => :void,
@@ -242,6 +351,8 @@ module SDL2
242
351
  :SDL_RenderIsClipEnabled => :int,
243
352
  :SDL_RenderSetScale => :int,
244
353
  :SDL_RenderGetScale => :void,
354
+ :SDL_RenderWindowToLogical => :void,
355
+ :SDL_RenderLogicalToWindow => :void,
245
356
  :SDL_SetRenderDrawColor => :int,
246
357
  :SDL_GetRenderDrawColor => :int,
247
358
  :SDL_SetRenderDrawBlendMode => :int,
@@ -267,6 +378,8 @@ module SDL2
267
378
  :SDL_RenderFillRectsF => :int,
268
379
  :SDL_RenderCopyF => :int,
269
380
  :SDL_RenderCopyExF => :int,
381
+ :SDL_RenderGeometry => :int,
382
+ :SDL_RenderGeometryRaw => :int,
270
383
  :SDL_RenderReadPixels => :int,
271
384
  :SDL_RenderPresent => :void,
272
385
  :SDL_DestroyTexture => :void,
@@ -276,12 +389,13 @@ module SDL2
276
389
  :SDL_GL_UnbindTexture => :int,
277
390
  :SDL_RenderGetMetalLayer => :pointer,
278
391
  :SDL_RenderGetMetalCommandEncoder => :pointer,
392
+ :SDL_RenderSetVSync => :int,
279
393
  }
280
394
  symbols.each do |sym|
281
395
  begin
282
- attach_function sym, args[sym], retvals[sym]
396
+ attach_function apis[sym], sym, args[sym], retvals[sym]
283
397
  rescue FFI::NotFoundError => error
284
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
398
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
285
399
  end
286
400
  end
287
401
  end
data/lib/sdl2_rotozoom.rb CHANGED
@@ -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,7 +22,7 @@ module SDL2
22
22
 
23
23
  # Function
24
24
 
25
- def self.setup_gfx_rotozoom_symbols()
25
+ def self.setup_gfx_rotozoom_symbols(output_error = false)
26
26
  symbols = [
27
27
  :rotozoomSurface,
28
28
  :rotozoomSurfaceXY,
@@ -33,6 +33,16 @@ module SDL2
33
33
  :shrinkSurface,
34
34
  :rotateSurface90Degrees,
35
35
  ]
36
+ apis = {
37
+ :rotozoomSurface => :rotozoomSurface,
38
+ :rotozoomSurfaceXY => :rotozoomSurfaceXY,
39
+ :rotozoomSurfaceSize => :rotozoomSurfaceSize,
40
+ :rotozoomSurfaceSizeXY => :rotozoomSurfaceSizeXY,
41
+ :zoomSurface => :zoomSurface,
42
+ :zoomSurfaceSize => :zoomSurfaceSize,
43
+ :shrinkSurface => :shrinkSurface,
44
+ :rotateSurface90Degrees => :rotateSurface90Degrees,
45
+ }
36
46
  args = {
37
47
  :rotozoomSurface => [:pointer, :double, :double, :int],
38
48
  :rotozoomSurfaceXY => [:pointer, :double, :double, :double, :int],
@@ -55,9 +65,9 @@ module SDL2
55
65
  }
56
66
  symbols.each do |sym|
57
67
  begin
58
- attach_function sym, args[sym], retvals[sym]
68
+ attach_function apis[sym], sym, args[sym], retvals[sym]
59
69
  rescue FFI::NotFoundError => error
60
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
70
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
61
71
  end
62
72
  end
63
73
  end
data/lib/sdl2_rwops.rb CHANGED
@@ -6,16 +6,16 @@
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_RWOPS_UNKNOWN = 0
14
- SDL_RWOPS_WINFILE = 1
15
- SDL_RWOPS_STDFILE = 2
16
- SDL_RWOPS_JNIFILE = 3
17
- SDL_RWOPS_MEMORY = 4
18
- SDL_RWOPS_MEMORY_RO = 5
13
+ RWOPS_UNKNOWN = 0
14
+ RWOPS_WINFILE = 1
15
+ RWOPS_STDFILE = 2
16
+ RWOPS_JNIFILE = 3
17
+ RWOPS_MEMORY = 4
18
+ RWOPS_MEMORY_RO = 5
19
19
 
20
20
  # Enum
21
21
 
@@ -23,7 +23,7 @@ module SDL2
23
23
  # Typedef
24
24
 
25
25
 
26
- class SDL_RWops_mem < FFI::Struct
26
+ class RWops_mem < FFI::Struct
27
27
  layout(
28
28
  :base, :pointer,
29
29
  :here, :pointer,
@@ -31,13 +31,13 @@ module SDL2
31
31
  )
32
32
  end
33
33
 
34
- class SDL_RWops_unknown < FFI::Struct
34
+ class RWops_unknown < FFI::Struct
35
35
  layout(
36
36
  :data1, :pointer,
37
37
  :data2, :pointer,
38
38
  )
39
39
  end
40
- class SDL_RWops_windowsio_buffer < FFI::Struct
40
+ class RWops_windowsio_buffer < FFI::Struct
41
41
  layout(
42
42
  :data, :pointer,
43
43
  :size, :size_t,
@@ -45,30 +45,30 @@ module SDL2
45
45
  )
46
46
  end
47
47
 
48
- class SDL_RWops_windowsio < FFI::Struct
48
+ class RWops_windowsio < FFI::Struct
49
49
  layout(
50
50
  :append, :int,
51
51
  :h, :pointer,
52
- :buffer, SDL_RWops_windowsio_buffer.by_value,
52
+ :buffer, RWops_windowsio_buffer,
53
53
  )
54
54
  end
55
55
 
56
- class SDL_Default_RWops_hidden < FFI::Union
56
+ class Default_RWops_hidden < FFI::Union
57
57
  layout(
58
- :mem, SDL_RWops_mem.by_value,
59
- :unknown, SDL_RWops_unknown.by_value,
58
+ :mem, RWops_mem,
59
+ :unknown, RWops_unknown,
60
60
  )
61
61
  end
62
62
 
63
- class SDL_Win32_RWops_hidden < FFI::Union
63
+ class Win32_RWops_hidden < FFI::Union
64
64
  layout(
65
- :mem, SDL_RWops_mem.by_value,
66
- :unknown, SDL_RWops_unknown.by_value,
67
- :windowsio, SDL_RWops_windowsio.by_value,
65
+ :mem, RWops_mem,
66
+ :unknown, RWops_unknown,
67
+ :windowsio, RWops_windowsio,
68
68
  )
69
69
  end
70
70
 
71
- class SDL_Default_RWops < FFI::Struct
71
+ class Default_RWops < FFI::Struct
72
72
  layout(
73
73
  :size, :pointer,
74
74
  :seek, :pointer,
@@ -76,11 +76,11 @@ module SDL2
76
76
  :write, :pointer,
77
77
  :close, :pointer,
78
78
  :type, :uint,
79
- :hidden, SDL_Default_RWops_hidden.by_value,
79
+ :hidden, Default_RWops_hidden,
80
80
  )
81
81
  end
82
82
 
83
- class SDL_Win32_RWops < FFI::Struct
83
+ class Win32_RWops < FFI::Struct
84
84
  layout(
85
85
  :size, :pointer,
86
86
  :seek, :pointer,
@@ -88,14 +88,14 @@ module SDL2
88
88
  :write, :pointer,
89
89
  :close, :pointer,
90
90
  :type, :uint,
91
- :hidden, SDL_Win32_RWops_hidden.by_value
91
+ :hidden, Win32_RWops_hidden
92
92
  )
93
93
  end
94
94
 
95
95
  if RUBY_PLATFORM =~ /mswin|msys|mingw|cygwin/
96
- SDL_RWops = SDL_Win32_RWops
96
+ RWops = Win32_RWops
97
97
  else
98
- SDL_RWops = SDL_Default_RWops
98
+ RWops = Default_RWops
99
99
  end
100
100
 
101
101
 
@@ -104,7 +104,7 @@ module SDL2
104
104
 
105
105
  # Function
106
106
 
107
- def self.setup_rwops_symbols()
107
+ def self.setup_rwops_symbols(output_error = false)
108
108
  symbols = [
109
109
  :SDL_RWFromFile,
110
110
  :SDL_RWFromFP,
@@ -135,6 +135,36 @@ module SDL2
135
135
  :SDL_WriteLE64,
136
136
  :SDL_WriteBE64,
137
137
  ]
138
+ apis = {
139
+ :SDL_RWFromFile => :RWFromFile,
140
+ :SDL_RWFromFP => :RWFromFP,
141
+ :SDL_RWFromMem => :RWFromMem,
142
+ :SDL_RWFromConstMem => :RWFromConstMem,
143
+ :SDL_AllocRW => :AllocRW,
144
+ :SDL_FreeRW => :FreeRW,
145
+ :SDL_RWsize => :RWsize,
146
+ :SDL_RWseek => :RWseek,
147
+ :SDL_RWtell => :RWtell,
148
+ :SDL_RWread => :RWread,
149
+ :SDL_RWwrite => :RWwrite,
150
+ :SDL_RWclose => :RWclose,
151
+ :SDL_LoadFile_RW => :LoadFile_RW,
152
+ :SDL_LoadFile => :LoadFile,
153
+ :SDL_ReadU8 => :ReadU8,
154
+ :SDL_ReadLE16 => :ReadLE16,
155
+ :SDL_ReadBE16 => :ReadBE16,
156
+ :SDL_ReadLE32 => :ReadLE32,
157
+ :SDL_ReadBE32 => :ReadBE32,
158
+ :SDL_ReadLE64 => :ReadLE64,
159
+ :SDL_ReadBE64 => :ReadBE64,
160
+ :SDL_WriteU8 => :WriteU8,
161
+ :SDL_WriteLE16 => :WriteLE16,
162
+ :SDL_WriteBE16 => :WriteBE16,
163
+ :SDL_WriteLE32 => :WriteLE32,
164
+ :SDL_WriteBE32 => :WriteBE32,
165
+ :SDL_WriteLE64 => :WriteLE64,
166
+ :SDL_WriteBE64 => :WriteBE64,
167
+ }
138
168
  args = {
139
169
  :SDL_RWFromFile => [:pointer, :pointer],
140
170
  :SDL_RWFromFP => [:pointer, :int],
@@ -145,8 +175,8 @@ module SDL2
145
175
  :SDL_RWsize => [:pointer],
146
176
  :SDL_RWseek => [:pointer, :long_long, :int],
147
177
  :SDL_RWtell => [:pointer],
148
- :SDL_RWread => [:pointer, :pointer, :ulong, :ulong],
149
- :SDL_RWwrite => [:pointer, :pointer, :ulong, :ulong],
178
+ :SDL_RWread => [:pointer, :pointer, :int, :int],
179
+ :SDL_RWwrite => [:pointer, :pointer, :int, :int],
150
180
  :SDL_RWclose => [:pointer],
151
181
  :SDL_LoadFile_RW => [:pointer, :pointer, :int],
152
182
  :SDL_LoadFile => [:pointer, :pointer],
@@ -175,8 +205,8 @@ module SDL2
175
205
  :SDL_RWsize => :long_long,
176
206
  :SDL_RWseek => :long_long,
177
207
  :SDL_RWtell => :long_long,
178
- :SDL_RWread => :size_t,
179
- :SDL_RWwrite => :size_t,
208
+ :SDL_RWread => :int,
209
+ :SDL_RWwrite => :int,
180
210
  :SDL_RWclose => :int,
181
211
  :SDL_LoadFile_RW => :pointer,
182
212
  :SDL_LoadFile => :pointer,
@@ -187,19 +217,19 @@ module SDL2
187
217
  :SDL_ReadBE32 => :uint,
188
218
  :SDL_ReadLE64 => :ulong_long,
189
219
  :SDL_ReadBE64 => :ulong_long,
190
- :SDL_WriteU8 => :size_t,
191
- :SDL_WriteLE16 => :size_t,
192
- :SDL_WriteBE16 => :size_t,
193
- :SDL_WriteLE32 => :size_t,
194
- :SDL_WriteBE32 => :size_t,
195
- :SDL_WriteLE64 => :size_t,
196
- :SDL_WriteBE64 => :size_t,
220
+ :SDL_WriteU8 => :int,
221
+ :SDL_WriteLE16 => :int,
222
+ :SDL_WriteBE16 => :int,
223
+ :SDL_WriteLE32 => :int,
224
+ :SDL_WriteBE32 => :int,
225
+ :SDL_WriteLE64 => :int,
226
+ :SDL_WriteBE64 => :int,
197
227
  }
198
228
  symbols.each do |sym|
199
229
  begin
200
- attach_function sym, args[sym], retvals[sym]
230
+ attach_function apis[sym], sym, args[sym], retvals[sym]
201
231
  rescue FFI::NotFoundError => error
202
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
232
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
203
233
  end
204
234
  end
205
235
  end