sdl2-bindings 0.0.6 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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