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_shape.rb CHANGED
@@ -7,13 +7,13 @@
7
7
  require 'ffi'
8
8
  require_relative 'sdl2_pixels'
9
9
 
10
- module SDL2
10
+ module SDL
11
11
  extend FFI::Library
12
12
  # Define/Macro
13
13
 
14
- SDL_NONSHAPEABLE_WINDOW = -1
15
- SDL_INVALID_SHAPE_ARGUMENT = -2
16
- SDL_WINDOW_LACKS_SHAPE = -3
14
+ NONSHAPEABLE_WINDOW = -1
15
+ INVALID_SHAPE_ARGUMENT = -2
16
+ WINDOW_LACKS_SHAPE = -3
17
17
 
18
18
  # Enum
19
19
 
@@ -28,30 +28,36 @@ module SDL2
28
28
 
29
29
  # Struct
30
30
 
31
- class SDL_WindowShapeParams < FFI::Union
31
+ class WindowShapeParams < FFI::Union
32
32
  layout(
33
33
  :binarizationCutoff, :uchar,
34
- :colorKey, SDL_Color,
34
+ :colorKey, Color,
35
35
  )
36
36
  end
37
37
 
38
- class SDL_WindowShapeMode < FFI::Struct
38
+ class WindowShapeMode < FFI::Struct
39
39
  layout(
40
40
  :mode, :int,
41
- :parameters, SDL_WindowShapeParams,
41
+ :parameters, WindowShapeParams,
42
42
  )
43
43
  end
44
44
 
45
45
 
46
46
  # Function
47
47
 
48
- def self.setup_shape_symbols()
48
+ def self.setup_shape_symbols(output_error = false)
49
49
  symbols = [
50
50
  :SDL_CreateShapedWindow,
51
51
  :SDL_IsShapedWindow,
52
52
  :SDL_SetWindowShape,
53
53
  :SDL_GetShapedWindowMode,
54
54
  ]
55
+ apis = {
56
+ :SDL_CreateShapedWindow => :CreateShapedWindow,
57
+ :SDL_IsShapedWindow => :IsShapedWindow,
58
+ :SDL_SetWindowShape => :SetWindowShape,
59
+ :SDL_GetShapedWindowMode => :GetShapedWindowMode,
60
+ }
55
61
  args = {
56
62
  :SDL_CreateShapedWindow => [:pointer, :uint, :uint, :uint, :uint, :uint],
57
63
  :SDL_IsShapedWindow => [:pointer],
@@ -66,9 +72,9 @@ module SDL2
66
72
  }
67
73
  symbols.each do |sym|
68
74
  begin
69
- attach_function sym, args[sym], retvals[sym]
75
+ attach_function apis[sym], sym, args[sym], retvals[sym]
70
76
  rescue FFI::NotFoundError => error
71
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
77
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
72
78
  end
73
79
  end
74
80
  end
data/lib/sdl2_stdinc.rb CHANGED
@@ -6,15 +6,19 @@
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
+ ICONV_ERROR = -1
14
+ ICONV_E2BIG = -2
15
+ ICONV_EILSEQ = -3
16
+ ICONV_EINVAL = -4
13
17
 
14
18
  # Enum
15
19
 
16
- SDL_FALSE = 0
17
- SDL_TRUE = 1
20
+ FALSE = 0
21
+ TRUE = 1
18
22
 
19
23
  # Typedef
20
24
 
@@ -35,9 +39,9 @@ module SDL2
35
39
  typedef :uint, :Uint32
36
40
  typedef :long_long, :Sint64
37
41
  typedef :ulong_long, :Uint64
38
- callback :SDL_malloc_func, [:ulong], :pointer
39
- callback :SDL_calloc_func, [:ulong, :ulong], :pointer
40
- callback :SDL_realloc_func, [:pointer, :ulong], :pointer
42
+ callback :SDL_malloc_func, [:int], :pointer
43
+ callback :SDL_calloc_func, [:int, :int], :pointer
44
+ callback :SDL_realloc_func, [:pointer, :int], :pointer
41
45
  callback :SDL_free_func, [:pointer], :void
42
46
  typedef :pointer, :SDL_iconv_t
43
47
 
@@ -46,7 +50,7 @@ module SDL2
46
50
 
47
51
  # Function
48
52
 
49
- def self.setup_stdinc_symbols()
53
+ def self.setup_stdinc_symbols(output_error = false)
50
54
  symbols = [
51
55
  :SDL_malloc,
52
56
  :SDL_calloc,
@@ -59,10 +63,18 @@ module SDL2
59
63
  :SDL_setenv,
60
64
  :SDL_qsort,
61
65
  :SDL_abs,
66
+ :SDL_isalpha,
67
+ :SDL_isalnum,
68
+ :SDL_isblank,
69
+ :SDL_iscntrl,
62
70
  :SDL_isdigit,
71
+ :SDL_isxdigit,
72
+ :SDL_ispunct,
63
73
  :SDL_isspace,
64
74
  :SDL_isupper,
65
75
  :SDL_islower,
76
+ :SDL_isprint,
77
+ :SDL_isgraph,
66
78
  :SDL_toupper,
67
79
  :SDL_tolower,
68
80
  :SDL_crc32,
@@ -114,6 +126,8 @@ module SDL2
114
126
  :SDL_vsscanf,
115
127
  :SDL_snprintf,
116
128
  :SDL_vsnprintf,
129
+ :SDL_asprintf,
130
+ :SDL_vasprintf,
117
131
  :SDL_acos,
118
132
  :SDL_acosf,
119
133
  :SDL_asin,
@@ -144,6 +158,10 @@ module SDL2
144
158
  :SDL_log10f,
145
159
  :SDL_pow,
146
160
  :SDL_powf,
161
+ :SDL_round,
162
+ :SDL_roundf,
163
+ :SDL_lround,
164
+ :SDL_lroundf,
147
165
  :SDL_scalbn,
148
166
  :SDL_scalbnf,
149
167
  :SDL_sin,
@@ -158,43 +176,176 @@ module SDL2
158
176
  :SDL_iconv_string,
159
177
  :SDL_memcpy4,
160
178
  ]
179
+ apis = {
180
+ :SDL_malloc => :malloc,
181
+ :SDL_calloc => :calloc,
182
+ :SDL_realloc => :realloc,
183
+ :SDL_free => :free,
184
+ :SDL_GetMemoryFunctions => :GetMemoryFunctions,
185
+ :SDL_SetMemoryFunctions => :SetMemoryFunctions,
186
+ :SDL_GetNumAllocations => :GetNumAllocations,
187
+ :SDL_getenv => :getenv,
188
+ :SDL_setenv => :setenv,
189
+ :SDL_qsort => :qsort,
190
+ :SDL_abs => :abs,
191
+ :SDL_isalpha => :isalpha,
192
+ :SDL_isalnum => :isalnum,
193
+ :SDL_isblank => :isblank,
194
+ :SDL_iscntrl => :iscntrl,
195
+ :SDL_isdigit => :isdigit,
196
+ :SDL_isxdigit => :isxdigit,
197
+ :SDL_ispunct => :ispunct,
198
+ :SDL_isspace => :isspace,
199
+ :SDL_isupper => :isupper,
200
+ :SDL_islower => :islower,
201
+ :SDL_isprint => :isprint,
202
+ :SDL_isgraph => :isgraph,
203
+ :SDL_toupper => :toupper,
204
+ :SDL_tolower => :tolower,
205
+ :SDL_crc32 => :crc32,
206
+ :SDL_memset => :memset,
207
+ :SDL_memset4 => :memset4,
208
+ :SDL_memcpy => :memcpy,
209
+ :SDL_memmove => :memmove,
210
+ :SDL_memcmp => :memcmp,
211
+ :SDL_wcslen => :wcslen,
212
+ :SDL_wcslcpy => :wcslcpy,
213
+ :SDL_wcslcat => :wcslcat,
214
+ :SDL_wcsdup => :wcsdup,
215
+ :SDL_wcsstr => :wcsstr,
216
+ :SDL_wcscmp => :wcscmp,
217
+ :SDL_wcsncmp => :wcsncmp,
218
+ :SDL_wcscasecmp => :wcscasecmp,
219
+ :SDL_wcsncasecmp => :wcsncasecmp,
220
+ :SDL_strlen => :strlen,
221
+ :SDL_strlcpy => :strlcpy,
222
+ :SDL_utf8strlcpy => :utf8strlcpy,
223
+ :SDL_strlcat => :strlcat,
224
+ :SDL_strdup => :strdup,
225
+ :SDL_strrev => :strrev,
226
+ :SDL_strupr => :strupr,
227
+ :SDL_strlwr => :strlwr,
228
+ :SDL_strchr => :strchr,
229
+ :SDL_strrchr => :strrchr,
230
+ :SDL_strstr => :strstr,
231
+ :SDL_strtokr => :strtokr,
232
+ :SDL_utf8strlen => :utf8strlen,
233
+ :SDL_itoa => :itoa,
234
+ :SDL_uitoa => :uitoa,
235
+ :SDL_ltoa => :ltoa,
236
+ :SDL_ultoa => :ultoa,
237
+ :SDL_lltoa => :lltoa,
238
+ :SDL_ulltoa => :ulltoa,
239
+ :SDL_atoi => :atoi,
240
+ :SDL_atof => :atof,
241
+ :SDL_strtol => :strtol,
242
+ :SDL_strtoul => :strtoul,
243
+ :SDL_strtoll => :strtoll,
244
+ :SDL_strtoull => :strtoull,
245
+ :SDL_strtod => :strtod,
246
+ :SDL_strcmp => :strcmp,
247
+ :SDL_strncmp => :strncmp,
248
+ :SDL_strcasecmp => :strcasecmp,
249
+ :SDL_strncasecmp => :strncasecmp,
250
+ :SDL_sscanf => :sscanf,
251
+ :SDL_vsscanf => :vsscanf,
252
+ :SDL_snprintf => :snprintf,
253
+ :SDL_vsnprintf => :vsnprintf,
254
+ :SDL_asprintf => :asprintf,
255
+ :SDL_vasprintf => :vasprintf,
256
+ :SDL_acos => :acos,
257
+ :SDL_acosf => :acosf,
258
+ :SDL_asin => :asin,
259
+ :SDL_asinf => :asinf,
260
+ :SDL_atan => :atan,
261
+ :SDL_atanf => :atanf,
262
+ :SDL_atan2 => :atan2,
263
+ :SDL_atan2f => :atan2f,
264
+ :SDL_ceil => :ceil,
265
+ :SDL_ceilf => :ceilf,
266
+ :SDL_copysign => :copysign,
267
+ :SDL_copysignf => :copysignf,
268
+ :SDL_cos => :cos,
269
+ :SDL_cosf => :cosf,
270
+ :SDL_exp => :exp,
271
+ :SDL_expf => :expf,
272
+ :SDL_fabs => :fabs,
273
+ :SDL_fabsf => :fabsf,
274
+ :SDL_floor => :floor,
275
+ :SDL_floorf => :floorf,
276
+ :SDL_trunc => :trunc,
277
+ :SDL_truncf => :truncf,
278
+ :SDL_fmod => :fmod,
279
+ :SDL_fmodf => :fmodf,
280
+ :SDL_log => :log,
281
+ :SDL_logf => :logf,
282
+ :SDL_log10 => :log10,
283
+ :SDL_log10f => :log10f,
284
+ :SDL_pow => :pow,
285
+ :SDL_powf => :powf,
286
+ :SDL_round => :round,
287
+ :SDL_roundf => :roundf,
288
+ :SDL_lround => :lround,
289
+ :SDL_lroundf => :lroundf,
290
+ :SDL_scalbn => :scalbn,
291
+ :SDL_scalbnf => :scalbnf,
292
+ :SDL_sin => :sin,
293
+ :SDL_sinf => :sinf,
294
+ :SDL_sqrt => :sqrt,
295
+ :SDL_sqrtf => :sqrtf,
296
+ :SDL_tan => :tan,
297
+ :SDL_tanf => :tanf,
298
+ :SDL_iconv_open => :iconv_open,
299
+ :SDL_iconv_close => :iconv_close,
300
+ :SDL_iconv => :iconv,
301
+ :SDL_iconv_string => :iconv_string,
302
+ :SDL_memcpy4 => :memcpy4,
303
+ }
161
304
  args = {
162
- :SDL_malloc => [:ulong],
163
- :SDL_calloc => [:ulong, :ulong],
164
- :SDL_realloc => [:pointer, :ulong],
305
+ :SDL_malloc => [:int],
306
+ :SDL_calloc => [:int, :int],
307
+ :SDL_realloc => [:pointer, :int],
165
308
  :SDL_free => [:pointer],
166
309
  :SDL_GetMemoryFunctions => [:pointer, :pointer, :pointer, :pointer],
167
310
  :SDL_SetMemoryFunctions => [:SDL_malloc_func, :SDL_calloc_func, :SDL_realloc_func, :SDL_free_func],
168
311
  :SDL_GetNumAllocations => [],
169
312
  :SDL_getenv => [:pointer],
170
313
  :SDL_setenv => [:pointer, :pointer, :int],
171
- :SDL_qsort => [:pointer, :ulong, :ulong, :pointer],
314
+ :SDL_qsort => [:pointer, :int, :int, :pointer],
172
315
  :SDL_abs => [:int],
316
+ :SDL_isalpha => [:int],
317
+ :SDL_isalnum => [:int],
318
+ :SDL_isblank => [:int],
319
+ :SDL_iscntrl => [:int],
173
320
  :SDL_isdigit => [:int],
321
+ :SDL_isxdigit => [:int],
322
+ :SDL_ispunct => [:int],
174
323
  :SDL_isspace => [:int],
175
324
  :SDL_isupper => [:int],
176
325
  :SDL_islower => [:int],
326
+ :SDL_isprint => [:int],
327
+ :SDL_isgraph => [:int],
177
328
  :SDL_toupper => [:int],
178
329
  :SDL_tolower => [:int],
179
- :SDL_crc32 => [:uint, :pointer, :ulong],
180
- :SDL_memset => [:pointer, :int, :ulong],
181
- :SDL_memset4 => [:pointer, :uint, :ulong],
182
- :SDL_memcpy => [:pointer, :pointer, :ulong],
183
- :SDL_memmove => [:pointer, :pointer, :ulong],
184
- :SDL_memcmp => [:pointer, :pointer, :ulong],
330
+ :SDL_crc32 => [:uint, :pointer, :int],
331
+ :SDL_memset => [:pointer, :int, :int],
332
+ :SDL_memset4 => [:pointer, :uint, :int],
333
+ :SDL_memcpy => [:pointer, :pointer, :int],
334
+ :SDL_memmove => [:pointer, :pointer, :int],
335
+ :SDL_memcmp => [:pointer, :pointer, :int],
185
336
  :SDL_wcslen => [:pointer],
186
- :SDL_wcslcpy => [:pointer, :pointer, :ulong],
187
- :SDL_wcslcat => [:pointer, :pointer, :ulong],
337
+ :SDL_wcslcpy => [:pointer, :pointer, :int],
338
+ :SDL_wcslcat => [:pointer, :pointer, :int],
188
339
  :SDL_wcsdup => [:pointer],
189
340
  :SDL_wcsstr => [:pointer, :pointer],
190
341
  :SDL_wcscmp => [:pointer, :pointer],
191
- :SDL_wcsncmp => [:pointer, :pointer, :ulong],
342
+ :SDL_wcsncmp => [:pointer, :pointer, :int],
192
343
  :SDL_wcscasecmp => [:pointer, :pointer],
193
- :SDL_wcsncasecmp => [:pointer, :pointer, :ulong],
344
+ :SDL_wcsncasecmp => [:pointer, :pointer, :int],
194
345
  :SDL_strlen => [:pointer],
195
- :SDL_strlcpy => [:pointer, :pointer, :ulong],
196
- :SDL_utf8strlcpy => [:pointer, :pointer, :ulong],
197
- :SDL_strlcat => [:pointer, :pointer, :ulong],
346
+ :SDL_strlcpy => [:pointer, :pointer, :int],
347
+ :SDL_utf8strlcpy => [:pointer, :pointer, :int],
348
+ :SDL_strlcat => [:pointer, :pointer, :int],
198
349
  :SDL_strdup => [:pointer],
199
350
  :SDL_strrev => [:pointer],
200
351
  :SDL_strupr => [:pointer],
@@ -218,13 +369,15 @@ module SDL2
218
369
  :SDL_strtoull => [:pointer, :pointer, :int],
219
370
  :SDL_strtod => [:pointer, :pointer],
220
371
  :SDL_strcmp => [:pointer, :pointer],
221
- :SDL_strncmp => [:pointer, :pointer, :ulong],
372
+ :SDL_strncmp => [:pointer, :pointer, :int],
222
373
  :SDL_strcasecmp => [:pointer, :pointer],
223
- :SDL_strncasecmp => [:pointer, :pointer, :ulong],
374
+ :SDL_strncasecmp => [:pointer, :pointer, :int],
224
375
  :SDL_sscanf => [:pointer, :pointer],
225
- :SDL_vsscanf => [:pointer, :pointer, :pointer],
226
- :SDL_snprintf => [:pointer, :ulong, :pointer],
227
- :SDL_vsnprintf => [:pointer, :ulong, :pointer, :pointer],
376
+ :SDL_vsscanf => [:pointer, :pointer, :int],
377
+ :SDL_snprintf => [:pointer, :int, :pointer],
378
+ :SDL_vsnprintf => [:pointer, :int, :pointer, :int],
379
+ :SDL_asprintf => [:pointer, :pointer],
380
+ :SDL_vasprintf => [:pointer, :pointer, :int],
228
381
  :SDL_acos => [:double],
229
382
  :SDL_acosf => [:float],
230
383
  :SDL_asin => [:double],
@@ -255,6 +408,10 @@ module SDL2
255
408
  :SDL_log10f => [:float],
256
409
  :SDL_pow => [:double, :double],
257
410
  :SDL_powf => [:float, :float],
411
+ :SDL_round => [:double],
412
+ :SDL_roundf => [:float],
413
+ :SDL_lround => [:double],
414
+ :SDL_lroundf => [:float],
258
415
  :SDL_scalbn => [:double, :int],
259
416
  :SDL_scalbnf => [:float, :int],
260
417
  :SDL_sin => [:double],
@@ -266,8 +423,8 @@ module SDL2
266
423
  :SDL_iconv_open => [:pointer, :pointer],
267
424
  :SDL_iconv_close => [:pointer],
268
425
  :SDL_iconv => [:pointer, :pointer, :pointer, :pointer, :pointer],
269
- :SDL_iconv_string => [:pointer, :pointer, :pointer, :ulong],
270
- :SDL_memcpy4 => [:pointer, :pointer, :ulong],
426
+ :SDL_iconv_string => [:pointer, :pointer, :pointer, :int],
427
+ :SDL_memcpy4 => [:pointer, :pointer, :int],
271
428
  }
272
429
  retvals = {
273
430
  :SDL_malloc => :pointer,
@@ -281,10 +438,18 @@ module SDL2
281
438
  :SDL_setenv => :int,
282
439
  :SDL_qsort => :void,
283
440
  :SDL_abs => :int,
441
+ :SDL_isalpha => :int,
442
+ :SDL_isalnum => :int,
443
+ :SDL_isblank => :int,
444
+ :SDL_iscntrl => :int,
284
445
  :SDL_isdigit => :int,
446
+ :SDL_isxdigit => :int,
447
+ :SDL_ispunct => :int,
285
448
  :SDL_isspace => :int,
286
449
  :SDL_isupper => :int,
287
450
  :SDL_islower => :int,
451
+ :SDL_isprint => :int,
452
+ :SDL_isgraph => :int,
288
453
  :SDL_toupper => :int,
289
454
  :SDL_tolower => :int,
290
455
  :SDL_crc32 => :uint,
@@ -293,19 +458,19 @@ module SDL2
293
458
  :SDL_memcpy => :pointer,
294
459
  :SDL_memmove => :pointer,
295
460
  :SDL_memcmp => :int,
296
- :SDL_wcslen => :size_t,
297
- :SDL_wcslcpy => :size_t,
298
- :SDL_wcslcat => :size_t,
461
+ :SDL_wcslen => :int,
462
+ :SDL_wcslcpy => :int,
463
+ :SDL_wcslcat => :int,
299
464
  :SDL_wcsdup => :pointer,
300
465
  :SDL_wcsstr => :pointer,
301
466
  :SDL_wcscmp => :int,
302
467
  :SDL_wcsncmp => :int,
303
468
  :SDL_wcscasecmp => :int,
304
469
  :SDL_wcsncasecmp => :int,
305
- :SDL_strlen => :size_t,
306
- :SDL_strlcpy => :size_t,
307
- :SDL_utf8strlcpy => :size_t,
308
- :SDL_strlcat => :size_t,
470
+ :SDL_strlen => :int,
471
+ :SDL_strlcpy => :int,
472
+ :SDL_utf8strlcpy => :int,
473
+ :SDL_strlcat => :int,
309
474
  :SDL_strdup => :pointer,
310
475
  :SDL_strrev => :pointer,
311
476
  :SDL_strupr => :pointer,
@@ -314,7 +479,7 @@ module SDL2
314
479
  :SDL_strrchr => :pointer,
315
480
  :SDL_strstr => :pointer,
316
481
  :SDL_strtokr => :pointer,
317
- :SDL_utf8strlen => :size_t,
482
+ :SDL_utf8strlen => :int,
318
483
  :SDL_itoa => :pointer,
319
484
  :SDL_uitoa => :pointer,
320
485
  :SDL_ltoa => :pointer,
@@ -336,6 +501,8 @@ module SDL2
336
501
  :SDL_vsscanf => :int,
337
502
  :SDL_snprintf => :int,
338
503
  :SDL_vsnprintf => :int,
504
+ :SDL_asprintf => :int,
505
+ :SDL_vasprintf => :int,
339
506
  :SDL_acos => :double,
340
507
  :SDL_acosf => :float,
341
508
  :SDL_asin => :double,
@@ -366,6 +533,10 @@ module SDL2
366
533
  :SDL_log10f => :float,
367
534
  :SDL_pow => :double,
368
535
  :SDL_powf => :float,
536
+ :SDL_round => :double,
537
+ :SDL_roundf => :float,
538
+ :SDL_lround => :long,
539
+ :SDL_lroundf => :long,
369
540
  :SDL_scalbn => :double,
370
541
  :SDL_scalbnf => :float,
371
542
  :SDL_sin => :double,
@@ -376,15 +547,15 @@ module SDL2
376
547
  :SDL_tanf => :float,
377
548
  :SDL_iconv_open => :pointer,
378
549
  :SDL_iconv_close => :int,
379
- :SDL_iconv => :size_t,
550
+ :SDL_iconv => :int,
380
551
  :SDL_iconv_string => :pointer,
381
552
  :SDL_memcpy4 => :pointer,
382
553
  }
383
554
  symbols.each do |sym|
384
555
  begin
385
- attach_function sym, args[sym], retvals[sym]
556
+ attach_function apis[sym], sym, args[sym], retvals[sym]
386
557
  rescue FFI::NotFoundError => error
387
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
558
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
388
559
  end
389
560
  end
390
561
  end
data/lib/sdl2_surface.rb CHANGED
@@ -7,22 +7,22 @@
7
7
  require 'ffi'
8
8
  require_relative 'sdl2_rect'
9
9
 
10
- module SDL2
10
+ module SDL
11
11
  extend FFI::Library
12
12
  # Define/Macro
13
13
 
14
- SDL_SWSURFACE = 0
15
- SDL_PREALLOC = 0x00000001
16
- SDL_RLEACCEL = 0x00000002
17
- SDL_DONTFREE = 0x00000004
18
- SDL_SIMD_ALIGNED = 0x00000008
14
+ SWSURFACE = 0
15
+ PREALLOC = 0x00000001
16
+ RLEACCEL = 0x00000002
17
+ DONTFREE = 0x00000004
18
+ SIMD_ALIGNED = 0x00000008
19
19
 
20
20
  # Enum
21
21
 
22
- SDL_YUV_CONVERSION_JPEG = 0
23
- SDL_YUV_CONVERSION_BT601 = 1
24
- SDL_YUV_CONVERSION_BT709 = 2
25
- SDL_YUV_CONVERSION_AUTOMATIC = 3
22
+ YUV_CONVERSION_JPEG = 0
23
+ YUV_CONVERSION_BT601 = 1
24
+ YUV_CONVERSION_BT709 = 2
25
+ YUV_CONVERSION_AUTOMATIC = 3
26
26
 
27
27
  # Typedef
28
28
 
@@ -31,7 +31,7 @@ module SDL2
31
31
 
32
32
  # Struct
33
33
 
34
- class SDL_Surface < FFI::Struct
34
+ class Surface < FFI::Struct
35
35
  layout(
36
36
  :flags, :uint,
37
37
  :format, :pointer,
@@ -42,7 +42,7 @@ module SDL2
42
42
  :userdata, :pointer,
43
43
  :locked, :int,
44
44
  :list_blitmap, :pointer,
45
- :clip_rect, SDL_Rect,
45
+ :clip_rect, Rect,
46
46
  :map, :pointer,
47
47
  :refcount, :int,
48
48
  )
@@ -51,7 +51,7 @@ module SDL2
51
51
 
52
52
  # Function
53
53
 
54
- def self.setup_surface_symbols()
54
+ def self.setup_surface_symbols(output_error = false)
55
55
  symbols = [
56
56
  :SDL_CreateRGBSurface,
57
57
  :SDL_CreateRGBSurfaceWithFormat,
@@ -80,17 +80,60 @@ module SDL2
80
80
  :SDL_ConvertSurface,
81
81
  :SDL_ConvertSurfaceFormat,
82
82
  :SDL_ConvertPixels,
83
+ :SDL_PremultiplyAlpha,
83
84
  :SDL_FillRect,
84
85
  :SDL_FillRects,
85
86
  :SDL_UpperBlit,
86
87
  :SDL_LowerBlit,
87
88
  :SDL_SoftStretch,
89
+ :SDL_SoftStretchLinear,
88
90
  :SDL_UpperBlitScaled,
89
91
  :SDL_LowerBlitScaled,
90
92
  :SDL_SetYUVConversionMode,
91
93
  :SDL_GetYUVConversionMode,
92
94
  :SDL_GetYUVConversionModeForResolution,
93
95
  ]
96
+ apis = {
97
+ :SDL_CreateRGBSurface => :CreateRGBSurface,
98
+ :SDL_CreateRGBSurfaceWithFormat => :CreateRGBSurfaceWithFormat,
99
+ :SDL_CreateRGBSurfaceFrom => :CreateRGBSurfaceFrom,
100
+ :SDL_CreateRGBSurfaceWithFormatFrom => :CreateRGBSurfaceWithFormatFrom,
101
+ :SDL_FreeSurface => :FreeSurface,
102
+ :SDL_SetSurfacePalette => :SetSurfacePalette,
103
+ :SDL_LockSurface => :LockSurface,
104
+ :SDL_UnlockSurface => :UnlockSurface,
105
+ :SDL_LoadBMP_RW => :LoadBMP_RW,
106
+ :SDL_SaveBMP_RW => :SaveBMP_RW,
107
+ :SDL_SetSurfaceRLE => :SetSurfaceRLE,
108
+ :SDL_HasSurfaceRLE => :HasSurfaceRLE,
109
+ :SDL_SetColorKey => :SetColorKey,
110
+ :SDL_HasColorKey => :HasColorKey,
111
+ :SDL_GetColorKey => :GetColorKey,
112
+ :SDL_SetSurfaceColorMod => :SetSurfaceColorMod,
113
+ :SDL_GetSurfaceColorMod => :GetSurfaceColorMod,
114
+ :SDL_SetSurfaceAlphaMod => :SetSurfaceAlphaMod,
115
+ :SDL_GetSurfaceAlphaMod => :GetSurfaceAlphaMod,
116
+ :SDL_SetSurfaceBlendMode => :SetSurfaceBlendMode,
117
+ :SDL_GetSurfaceBlendMode => :GetSurfaceBlendMode,
118
+ :SDL_SetClipRect => :SetClipRect,
119
+ :SDL_GetClipRect => :GetClipRect,
120
+ :SDL_DuplicateSurface => :DuplicateSurface,
121
+ :SDL_ConvertSurface => :ConvertSurface,
122
+ :SDL_ConvertSurfaceFormat => :ConvertSurfaceFormat,
123
+ :SDL_ConvertPixels => :ConvertPixels,
124
+ :SDL_PremultiplyAlpha => :PremultiplyAlpha,
125
+ :SDL_FillRect => :FillRect,
126
+ :SDL_FillRects => :FillRects,
127
+ :SDL_UpperBlit => :UpperBlit,
128
+ :SDL_LowerBlit => :LowerBlit,
129
+ :SDL_SoftStretch => :SoftStretch,
130
+ :SDL_SoftStretchLinear => :SoftStretchLinear,
131
+ :SDL_UpperBlitScaled => :UpperBlitScaled,
132
+ :SDL_LowerBlitScaled => :LowerBlitScaled,
133
+ :SDL_SetYUVConversionMode => :SetYUVConversionMode,
134
+ :SDL_GetYUVConversionMode => :GetYUVConversionMode,
135
+ :SDL_GetYUVConversionModeForResolution => :GetYUVConversionModeForResolution,
136
+ }
94
137
  args = {
95
138
  :SDL_CreateRGBSurface => [:uint, :int, :int, :int, :uint, :uint, :uint, :uint],
96
139
  :SDL_CreateRGBSurfaceWithFormat => [:uint, :int, :int, :int, :uint],
@@ -119,11 +162,13 @@ module SDL2
119
162
  :SDL_ConvertSurface => [:pointer, :pointer, :uint],
120
163
  :SDL_ConvertSurfaceFormat => [:pointer, :uint, :uint],
121
164
  :SDL_ConvertPixels => [:int, :int, :uint, :pointer, :int, :uint, :pointer, :int],
165
+ :SDL_PremultiplyAlpha => [:int, :int, :uint, :pointer, :int, :uint, :pointer, :int],
122
166
  :SDL_FillRect => [:pointer, :pointer, :uint],
123
167
  :SDL_FillRects => [:pointer, :pointer, :int, :uint],
124
168
  :SDL_UpperBlit => [:pointer, :pointer, :pointer, :pointer],
125
169
  :SDL_LowerBlit => [:pointer, :pointer, :pointer, :pointer],
126
170
  :SDL_SoftStretch => [:pointer, :pointer, :pointer, :pointer],
171
+ :SDL_SoftStretchLinear => [:pointer, :pointer, :pointer, :pointer],
127
172
  :SDL_UpperBlitScaled => [:pointer, :pointer, :pointer, :pointer],
128
173
  :SDL_LowerBlitScaled => [:pointer, :pointer, :pointer, :pointer],
129
174
  :SDL_SetYUVConversionMode => [:int],
@@ -158,11 +203,13 @@ module SDL2
158
203
  :SDL_ConvertSurface => :pointer,
159
204
  :SDL_ConvertSurfaceFormat => :pointer,
160
205
  :SDL_ConvertPixels => :int,
206
+ :SDL_PremultiplyAlpha => :int,
161
207
  :SDL_FillRect => :int,
162
208
  :SDL_FillRects => :int,
163
209
  :SDL_UpperBlit => :int,
164
210
  :SDL_LowerBlit => :int,
165
211
  :SDL_SoftStretch => :int,
212
+ :SDL_SoftStretchLinear => :int,
166
213
  :SDL_UpperBlitScaled => :int,
167
214
  :SDL_LowerBlitScaled => :int,
168
215
  :SDL_SetYUVConversionMode => :void,
@@ -171,9 +218,9 @@ module SDL2
171
218
  }
172
219
  symbols.each do |sym|
173
220
  begin
174
- attach_function sym, args[sym], retvals[sym]
221
+ attach_function apis[sym], sym, args[sym], retvals[sym]
175
222
  rescue FFI::NotFoundError => error
176
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
223
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
177
224
  end
178
225
  end
179
226
  end