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_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