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_syswm.rb CHANGED
@@ -7,32 +7,35 @@
7
7
  require 'ffi'
8
8
  require_relative 'sdl2_version'
9
9
 
10
- module SDL2
10
+ module SDL
11
11
  extend FFI::Library
12
12
  # Define/Macro
13
13
 
14
+ METALVIEW_TAG = 255
14
15
 
15
16
  # Enum
16
17
 
17
- SDL_SYSWM_UNKNOWN = 0
18
- SDL_SYSWM_WINDOWS = 1
19
- SDL_SYSWM_X11 = 2
20
- SDL_SYSWM_DIRECTFB = 3
21
- SDL_SYSWM_COCOA = 4
22
- SDL_SYSWM_UIKIT = 5
23
- SDL_SYSWM_WAYLAND = 6
24
- SDL_SYSWM_MIR = 7
25
- SDL_SYSWM_WINRT = 8
26
- SDL_SYSWM_ANDROID = 9
27
- SDL_SYSWM_VIVANTE = 10
28
- SDL_SYSWM_OS2 = 11
29
- SDL_SYSWM_HAIKU = 12
18
+ SYSWM_UNKNOWN = 0
19
+ SYSWM_WINDOWS = 1
20
+ SYSWM_X11 = 2
21
+ SYSWM_DIRECTFB = 3
22
+ SYSWM_COCOA = 4
23
+ SYSWM_UIKIT = 5
24
+ SYSWM_WAYLAND = 6
25
+ SYSWM_MIR = 7
26
+ SYSWM_WINRT = 8
27
+ SYSWM_ANDROID = 9
28
+ SYSWM_VIVANTE = 10
29
+ SYSWM_OS2 = 11
30
+ SYSWM_HAIKU = 12
31
+ SYSWM_KMSDRM = 13
32
+ SYSWM_RISCOS = 14
30
33
 
31
34
  # Typedef
32
35
 
33
36
  typedef :int, :SDL_SYSWM_TYPE
34
37
 
35
- class SDL_SysWMmsg_def_win < FFI::Struct
38
+ class SysWMmsg_def_win < FFI::Struct
36
39
  layout(
37
40
  :hwnd, :pointer,
38
41
  :msg, :uint32,
@@ -41,46 +44,46 @@ module SDL2
41
44
  )
42
45
  end
43
46
 
44
- class SDL_SysWMmsg_value_win < FFI::Union
47
+ class SysWMmsg_value_win < FFI::Union
45
48
  layout(
46
- :win, SDL_SysWMmsg_def_win.by_value,
49
+ :win, SysWMmsg_def_win.by_value,
47
50
  :dummy, :int
48
51
  )
49
52
  end
50
53
 
51
- class SDL_SysWMmsg_win < FFI::Struct
54
+ class SysWMmsg_win < FFI::Struct
52
55
  layout(
53
- :version, SDL_version.by_value,
56
+ :version, Version.by_value,
54
57
  :subsystem, :int,
55
- :msg, SDL_SysWMmsg_value_win.by_value
58
+ :msg, SysWMmsg_value_win.by_value
56
59
  )
57
60
  end
58
61
 
59
62
 
60
- class SDL_SysWMmsg_def_cocoa < FFI::Struct
63
+ class SysWMmsg_def_cocoa < FFI::Struct
61
64
  layout(
62
65
  :dummy, :int
63
66
  )
64
67
  end
65
68
 
66
- class SDL_SysWMmsg_value_cocoa < FFI::Union
69
+ class SysWMmsg_value_cocoa < FFI::Union
67
70
  layout(
68
- :cocoa, SDL_SysWMmsg_def_cocoa.by_value,
71
+ :cocoa, SysWMmsg_def_cocoa.by_value,
69
72
  :dummy, :int
70
73
  )
71
74
  end
72
75
 
73
- class SDL_SysWMmsg_cocoa < FFI::Struct
76
+ class SysWMmsg_cocoa < FFI::Struct
74
77
  layout(
75
- :version, SDL_version.by_value,
78
+ :version, Version.by_value,
76
79
  :subsystem, :int,
77
- :msg, SDL_SysWMmsg_value_cocoa.by_value
80
+ :msg, SysWMmsg_value_cocoa.by_value
78
81
  )
79
82
  end
80
83
 
81
84
  ################################################################################
82
85
 
83
- class SDL_SysWMinfo_def_win < FFI::Struct
86
+ class SysWMinfo_def_win < FFI::Struct
84
87
  layout(
85
88
  :window, :pointer,
86
89
  :hdc, :pointer,
@@ -88,40 +91,40 @@ module SDL2
88
91
  )
89
92
  end
90
93
 
91
- class SDL_SysWMinfo_value_win < FFI::Union
94
+ class SysWMinfo_value_win < FFI::Union
92
95
  layout(
93
- :win, SDL_SysWMinfo_def_win.by_value,
96
+ :win, SysWMinfo_def_win.by_value,
94
97
  :dummy, [:uint8, 64]
95
98
  )
96
99
  end
97
100
 
98
- class SDL_SysWMinfo_win < FFI::Struct
101
+ class SysWMinfo_win < FFI::Struct
99
102
  layout(
100
- :version, SDL_version.by_value,
103
+ :version, Version.by_value,
101
104
  :subsystem, :int,
102
- :info, SDL_SysWMinfo_value_win.by_value
105
+ :info, SysWMinfo_value_win.by_value
103
106
  )
104
107
  end
105
108
 
106
109
 
107
- class SDL_SysWMinfo_def_cocoa < FFI::Struct
110
+ class SysWMinfo_def_cocoa < FFI::Struct
108
111
  layout(
109
112
  :window, :pointer
110
113
  )
111
114
  end
112
115
 
113
- class SDL_SysWMinfo_value_cocoa < FFI::Union
116
+ class SysWMinfo_value_cocoa < FFI::Union
114
117
  layout(
115
- :cocoa, SDL_SysWMinfo_def_cocoa.by_value,
118
+ :cocoa, SysWMinfo_def_cocoa.by_value,
116
119
  :dummy, [:uint8, 64]
117
120
  )
118
121
  end
119
122
 
120
- class SDL_SysWMinfo_cocoa < FFI::Struct
123
+ class SysWMinfo_cocoa < FFI::Struct
121
124
  layout(
122
- :version, SDL_version.by_value,
125
+ :version, Version.by_value,
123
126
  :subsystem, :int,
124
- :info, SDL_SysWMinfo_value_cocoa.by_value
127
+ :info, SysWMinfo_value_cocoa.by_value
125
128
  )
126
129
  end
127
130
 
@@ -131,10 +134,13 @@ module SDL2
131
134
 
132
135
  # Function
133
136
 
134
- def self.setup_syswm_symbols()
137
+ def self.setup_syswm_symbols(output_error = false)
135
138
  symbols = [
136
139
  :SDL_GetWindowWMInfo,
137
140
  ]
141
+ apis = {
142
+ :SDL_GetWindowWMInfo => :GetWindowWMInfo,
143
+ }
138
144
  args = {
139
145
  :SDL_GetWindowWMInfo => [:pointer, :pointer],
140
146
  }
@@ -143,9 +149,9 @@ module SDL2
143
149
  }
144
150
  symbols.each do |sym|
145
151
  begin
146
- attach_function sym, args[sym], retvals[sym]
152
+ attach_function apis[sym], sym, args[sym], retvals[sym]
147
153
  rescue FFI::NotFoundError => error
148
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
154
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
149
155
  end
150
156
  end
151
157
  end
data/lib/sdl2_timer.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
 
@@ -24,17 +24,28 @@ module SDL2
24
24
 
25
25
  # Function
26
26
 
27
- def self.setup_timer_symbols()
27
+ def self.setup_timer_symbols(output_error = false)
28
28
  symbols = [
29
29
  :SDL_GetTicks,
30
+ :SDL_GetTicks64,
30
31
  :SDL_GetPerformanceCounter,
31
32
  :SDL_GetPerformanceFrequency,
32
33
  :SDL_Delay,
33
34
  :SDL_AddTimer,
34
35
  :SDL_RemoveTimer,
35
36
  ]
37
+ apis = {
38
+ :SDL_GetTicks => :GetTicks,
39
+ :SDL_GetTicks64 => :GetTicks64,
40
+ :SDL_GetPerformanceCounter => :GetPerformanceCounter,
41
+ :SDL_GetPerformanceFrequency => :GetPerformanceFrequency,
42
+ :SDL_Delay => :Delay,
43
+ :SDL_AddTimer => :AddTimer,
44
+ :SDL_RemoveTimer => :RemoveTimer,
45
+ }
36
46
  args = {
37
47
  :SDL_GetTicks => [],
48
+ :SDL_GetTicks64 => [],
38
49
  :SDL_GetPerformanceCounter => [],
39
50
  :SDL_GetPerformanceFrequency => [],
40
51
  :SDL_Delay => [:uint],
@@ -43,6 +54,7 @@ module SDL2
43
54
  }
44
55
  retvals = {
45
56
  :SDL_GetTicks => :uint,
57
+ :SDL_GetTicks64 => :ulong_long,
46
58
  :SDL_GetPerformanceCounter => :ulong_long,
47
59
  :SDL_GetPerformanceFrequency => :ulong_long,
48
60
  :SDL_Delay => :void,
@@ -51,9 +63,9 @@ module SDL2
51
63
  }
52
64
  symbols.each do |sym|
53
65
  begin
54
- attach_function sym, args[sym], retvals[sym]
66
+ attach_function apis[sym], sym, args[sym], retvals[sym]
55
67
  rescue FFI::NotFoundError => error
56
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
68
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
57
69
  end
58
70
  end
59
71
  end
data/lib/sdl2_touch.rb CHANGED
@@ -6,17 +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
+ TOUCH_MOUSEID = -1
14
+ MOUSE_TOUCHID = -1
13
15
 
14
16
  # Enum
15
17
 
16
- SDL_TOUCH_DEVICE_INVALID = -1
17
- SDL_TOUCH_DEVICE_DIRECT = 0
18
- SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE = 1
19
- SDL_TOUCH_DEVICE_INDIRECT_RELATIVE = 2
18
+ TOUCH_DEVICE_INVALID = -1
19
+ TOUCH_DEVICE_DIRECT = 0
20
+ TOUCH_DEVICE_INDIRECT_ABSOLUTE = 1
21
+ TOUCH_DEVICE_INDIRECT_RELATIVE = 2
20
22
 
21
23
  # Typedef
22
24
 
@@ -26,7 +28,7 @@ module SDL2
26
28
 
27
29
  # Struct
28
30
 
29
- class SDL_Finger < FFI::Struct
31
+ class Finger < FFI::Struct
30
32
  layout(
31
33
  :id, :long_long,
32
34
  :x, :float,
@@ -38,7 +40,7 @@ module SDL2
38
40
 
39
41
  # Function
40
42
 
41
- def self.setup_touch_symbols()
43
+ def self.setup_touch_symbols(output_error = false)
42
44
  symbols = [
43
45
  :SDL_GetNumTouchDevices,
44
46
  :SDL_GetTouchDevice,
@@ -46,6 +48,13 @@ module SDL2
46
48
  :SDL_GetNumTouchFingers,
47
49
  :SDL_GetTouchFinger,
48
50
  ]
51
+ apis = {
52
+ :SDL_GetNumTouchDevices => :GetNumTouchDevices,
53
+ :SDL_GetTouchDevice => :GetTouchDevice,
54
+ :SDL_GetTouchDeviceType => :GetTouchDeviceType,
55
+ :SDL_GetNumTouchFingers => :GetNumTouchFingers,
56
+ :SDL_GetTouchFinger => :GetTouchFinger,
57
+ }
49
58
  args = {
50
59
  :SDL_GetNumTouchDevices => [],
51
60
  :SDL_GetTouchDevice => [:int],
@@ -62,9 +71,9 @@ module SDL2
62
71
  }
63
72
  symbols.each do |sym|
64
73
  begin
65
- attach_function sym, args[sym], retvals[sym]
74
+ attach_function apis[sym], sym, args[sym], retvals[sym]
66
75
  rescue FFI::NotFoundError => error
67
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
76
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
68
77
  end
69
78
  end
70
79
  end
data/lib/sdl2_ttf.rb CHANGED
@@ -7,16 +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_TTF_MAJOR_VERSION = 2
15
- SDL_TTF_MINOR_VERSION = 0
16
- SDL_TTF_PATCHLEVEL = 15
17
- TTF_MAJOR_VERSION = SDL_TTF_MAJOR_VERSION
18
- TTF_MINOR_VERSION = SDL_TTF_MINOR_VERSION
19
- TTF_PATCHLEVEL = SDL_TTF_PATCHLEVEL
14
+ TTF_MAJOR_VERSION = 2
15
+ TTF_MINOR_VERSION = 0
16
+ TTF_PATCHLEVEL = 15
20
17
  TTF_STYLE_NORMAL = 0x00
21
18
  TTF_STYLE_BOLD = 0x01
22
19
  TTF_STYLE_ITALIC = 0x02
@@ -38,15 +35,23 @@ module SDL2
38
35
 
39
36
  # Function
40
37
 
41
- def self.setup_ttf_symbols()
38
+ def self.setup_ttf_symbols(output_error = false)
42
39
  symbols = [
43
40
  :TTF_Linked_Version,
41
+ :TTF_GetFreeTypeVersion,
42
+ :TTF_GetHarfBuzzVersion,
44
43
  :TTF_ByteSwappedUNICODE,
45
44
  :TTF_Init,
46
45
  :TTF_OpenFont,
47
46
  :TTF_OpenFontIndex,
48
47
  :TTF_OpenFontRW,
49
48
  :TTF_OpenFontIndexRW,
49
+ :TTF_OpenFontDPI,
50
+ :TTF_OpenFontIndexDPI,
51
+ :TTF_OpenFontDPIRW,
52
+ :TTF_OpenFontIndexDPIRW,
53
+ :TTF_SetFontSize,
54
+ :TTF_SetFontSizeDPI,
50
55
  :TTF_GetFontStyle,
51
56
  :TTF_SetFontStyle,
52
57
  :TTF_GetFontOutline,
@@ -64,18 +69,31 @@ module SDL2
64
69
  :TTF_FontFaceFamilyName,
65
70
  :TTF_FontFaceStyleName,
66
71
  :TTF_GlyphIsProvided,
72
+ :TTF_GlyphIsProvided32,
67
73
  :TTF_GlyphMetrics,
74
+ :TTF_GlyphMetrics32,
68
75
  :TTF_SizeText,
69
76
  :TTF_SizeUTF8,
70
77
  :TTF_SizeUNICODE,
78
+ :TTF_MeasureText,
79
+ :TTF_MeasureUTF8,
80
+ :TTF_MeasureUNICODE,
71
81
  :TTF_RenderText_Solid,
72
82
  :TTF_RenderUTF8_Solid,
73
83
  :TTF_RenderUNICODE_Solid,
84
+ :TTF_RenderText_Solid_Wrapped,
85
+ :TTF_RenderUTF8_Solid_Wrapped,
86
+ :TTF_RenderUNICODE_Solid_Wrapped,
74
87
  :TTF_RenderGlyph_Solid,
88
+ :TTF_RenderGlyph32_Solid,
75
89
  :TTF_RenderText_Shaded,
76
90
  :TTF_RenderUTF8_Shaded,
77
91
  :TTF_RenderUNICODE_Shaded,
92
+ :TTF_RenderText_Shaded_Wrapped,
93
+ :TTF_RenderUTF8_Shaded_Wrapped,
94
+ :TTF_RenderUNICODE_Shaded_Wrapped,
78
95
  :TTF_RenderGlyph_Shaded,
96
+ :TTF_RenderGlyph32_Shaded,
79
97
  :TTF_RenderText_Blended,
80
98
  :TTF_RenderUTF8_Blended,
81
99
  :TTF_RenderUNICODE_Blended,
@@ -83,20 +101,111 @@ module SDL2
83
101
  :TTF_RenderUTF8_Blended_Wrapped,
84
102
  :TTF_RenderUNICODE_Blended_Wrapped,
85
103
  :TTF_RenderGlyph_Blended,
104
+ :TTF_RenderGlyph32_Blended,
105
+ :TTF_SetDirection,
106
+ :TTF_SetScript,
86
107
  :TTF_CloseFont,
87
108
  :TTF_Quit,
88
109
  :TTF_WasInit,
89
110
  :TTF_GetFontKerningSize,
90
111
  :TTF_GetFontKerningSizeGlyphs,
112
+ :TTF_GetFontKerningSizeGlyphs32,
113
+ :TTF_SetFontSDF,
114
+ :TTF_GetFontSDF,
91
115
  ]
116
+ apis = {
117
+ :TTF_Linked_Version => :TTF_Linked_Version,
118
+ :TTF_GetFreeTypeVersion => :TTF_GetFreeTypeVersion,
119
+ :TTF_GetHarfBuzzVersion => :TTF_GetHarfBuzzVersion,
120
+ :TTF_ByteSwappedUNICODE => :TTF_ByteSwappedUNICODE,
121
+ :TTF_Init => :TTF_Init,
122
+ :TTF_OpenFont => :TTF_OpenFont,
123
+ :TTF_OpenFontIndex => :TTF_OpenFontIndex,
124
+ :TTF_OpenFontRW => :TTF_OpenFontRW,
125
+ :TTF_OpenFontIndexRW => :TTF_OpenFontIndexRW,
126
+ :TTF_OpenFontDPI => :TTF_OpenFontDPI,
127
+ :TTF_OpenFontIndexDPI => :TTF_OpenFontIndexDPI,
128
+ :TTF_OpenFontDPIRW => :TTF_OpenFontDPIRW,
129
+ :TTF_OpenFontIndexDPIRW => :TTF_OpenFontIndexDPIRW,
130
+ :TTF_SetFontSize => :TTF_SetFontSize,
131
+ :TTF_SetFontSizeDPI => :TTF_SetFontSizeDPI,
132
+ :TTF_GetFontStyle => :TTF_GetFontStyle,
133
+ :TTF_SetFontStyle => :TTF_SetFontStyle,
134
+ :TTF_GetFontOutline => :TTF_GetFontOutline,
135
+ :TTF_SetFontOutline => :TTF_SetFontOutline,
136
+ :TTF_GetFontHinting => :TTF_GetFontHinting,
137
+ :TTF_SetFontHinting => :TTF_SetFontHinting,
138
+ :TTF_FontHeight => :TTF_FontHeight,
139
+ :TTF_FontAscent => :TTF_FontAscent,
140
+ :TTF_FontDescent => :TTF_FontDescent,
141
+ :TTF_FontLineSkip => :TTF_FontLineSkip,
142
+ :TTF_GetFontKerning => :TTF_GetFontKerning,
143
+ :TTF_SetFontKerning => :TTF_SetFontKerning,
144
+ :TTF_FontFaces => :TTF_FontFaces,
145
+ :TTF_FontFaceIsFixedWidth => :TTF_FontFaceIsFixedWidth,
146
+ :TTF_FontFaceFamilyName => :TTF_FontFaceFamilyName,
147
+ :TTF_FontFaceStyleName => :TTF_FontFaceStyleName,
148
+ :TTF_GlyphIsProvided => :TTF_GlyphIsProvided,
149
+ :TTF_GlyphIsProvided32 => :TTF_GlyphIsProvided32,
150
+ :TTF_GlyphMetrics => :TTF_GlyphMetrics,
151
+ :TTF_GlyphMetrics32 => :TTF_GlyphMetrics32,
152
+ :TTF_SizeText => :TTF_SizeText,
153
+ :TTF_SizeUTF8 => :TTF_SizeUTF8,
154
+ :TTF_SizeUNICODE => :TTF_SizeUNICODE,
155
+ :TTF_MeasureText => :TTF_MeasureText,
156
+ :TTF_MeasureUTF8 => :TTF_MeasureUTF8,
157
+ :TTF_MeasureUNICODE => :TTF_MeasureUNICODE,
158
+ :TTF_RenderText_Solid => :TTF_RenderText_Solid,
159
+ :TTF_RenderUTF8_Solid => :TTF_RenderUTF8_Solid,
160
+ :TTF_RenderUNICODE_Solid => :TTF_RenderUNICODE_Solid,
161
+ :TTF_RenderText_Solid_Wrapped => :TTF_RenderText_Solid_Wrapped,
162
+ :TTF_RenderUTF8_Solid_Wrapped => :TTF_RenderUTF8_Solid_Wrapped,
163
+ :TTF_RenderUNICODE_Solid_Wrapped => :TTF_RenderUNICODE_Solid_Wrapped,
164
+ :TTF_RenderGlyph_Solid => :TTF_RenderGlyph_Solid,
165
+ :TTF_RenderGlyph32_Solid => :TTF_RenderGlyph32_Solid,
166
+ :TTF_RenderText_Shaded => :TTF_RenderText_Shaded,
167
+ :TTF_RenderUTF8_Shaded => :TTF_RenderUTF8_Shaded,
168
+ :TTF_RenderUNICODE_Shaded => :TTF_RenderUNICODE_Shaded,
169
+ :TTF_RenderText_Shaded_Wrapped => :TTF_RenderText_Shaded_Wrapped,
170
+ :TTF_RenderUTF8_Shaded_Wrapped => :TTF_RenderUTF8_Shaded_Wrapped,
171
+ :TTF_RenderUNICODE_Shaded_Wrapped => :TTF_RenderUNICODE_Shaded_Wrapped,
172
+ :TTF_RenderGlyph_Shaded => :TTF_RenderGlyph_Shaded,
173
+ :TTF_RenderGlyph32_Shaded => :TTF_RenderGlyph32_Shaded,
174
+ :TTF_RenderText_Blended => :TTF_RenderText_Blended,
175
+ :TTF_RenderUTF8_Blended => :TTF_RenderUTF8_Blended,
176
+ :TTF_RenderUNICODE_Blended => :TTF_RenderUNICODE_Blended,
177
+ :TTF_RenderText_Blended_Wrapped => :TTF_RenderText_Blended_Wrapped,
178
+ :TTF_RenderUTF8_Blended_Wrapped => :TTF_RenderUTF8_Blended_Wrapped,
179
+ :TTF_RenderUNICODE_Blended_Wrapped => :TTF_RenderUNICODE_Blended_Wrapped,
180
+ :TTF_RenderGlyph_Blended => :TTF_RenderGlyph_Blended,
181
+ :TTF_RenderGlyph32_Blended => :TTF_RenderGlyph32_Blended,
182
+ :TTF_SetDirection => :TTF_SetDirection,
183
+ :TTF_SetScript => :TTF_SetScript,
184
+ :TTF_CloseFont => :TTF_CloseFont,
185
+ :TTF_Quit => :TTF_Quit,
186
+ :TTF_WasInit => :TTF_WasInit,
187
+ :TTF_GetFontKerningSize => :TTF_GetFontKerningSize,
188
+ :TTF_GetFontKerningSizeGlyphs => :TTF_GetFontKerningSizeGlyphs,
189
+ :TTF_GetFontKerningSizeGlyphs32 => :TTF_GetFontKerningSizeGlyphs32,
190
+ :TTF_SetFontSDF => :TTF_SetFontSDF,
191
+ :TTF_GetFontSDF => :TTF_GetFontSDF,
192
+ }
92
193
  args = {
93
194
  :TTF_Linked_Version => [],
195
+ :TTF_GetFreeTypeVersion => [:pointer, :pointer, :pointer],
196
+ :TTF_GetHarfBuzzVersion => [:pointer, :pointer, :pointer],
94
197
  :TTF_ByteSwappedUNICODE => [:int],
95
198
  :TTF_Init => [],
96
199
  :TTF_OpenFont => [:pointer, :int],
97
200
  :TTF_OpenFontIndex => [:pointer, :int, :long],
98
201
  :TTF_OpenFontRW => [:pointer, :int, :int],
99
202
  :TTF_OpenFontIndexRW => [:pointer, :int, :int, :long],
203
+ :TTF_OpenFontDPI => [:pointer, :int, :uint, :uint],
204
+ :TTF_OpenFontIndexDPI => [:pointer, :int, :long, :uint, :uint],
205
+ :TTF_OpenFontDPIRW => [:pointer, :int, :int, :uint, :uint],
206
+ :TTF_OpenFontIndexDPIRW => [:pointer, :int, :int, :long, :uint, :uint],
207
+ :TTF_SetFontSize => [:pointer, :int],
208
+ :TTF_SetFontSizeDPI => [:pointer, :int, :uint, :uint],
100
209
  :TTF_GetFontStyle => [:pointer],
101
210
  :TTF_SetFontStyle => [:pointer, :int],
102
211
  :TTF_GetFontOutline => [:pointer],
@@ -114,39 +223,66 @@ module SDL2
114
223
  :TTF_FontFaceFamilyName => [:pointer],
115
224
  :TTF_FontFaceStyleName => [:pointer],
116
225
  :TTF_GlyphIsProvided => [:pointer, :ushort],
226
+ :TTF_GlyphIsProvided32 => [:pointer, :uint],
117
227
  :TTF_GlyphMetrics => [:pointer, :ushort, :pointer, :pointer, :pointer, :pointer, :pointer],
228
+ :TTF_GlyphMetrics32 => [:pointer, :uint, :pointer, :pointer, :pointer, :pointer, :pointer],
118
229
  :TTF_SizeText => [:pointer, :pointer, :pointer, :pointer],
119
230
  :TTF_SizeUTF8 => [:pointer, :pointer, :pointer, :pointer],
120
231
  :TTF_SizeUNICODE => [:pointer, :pointer, :pointer, :pointer],
121
- :TTF_RenderText_Solid => [:pointer, :pointer, SDL_Color],
122
- :TTF_RenderUTF8_Solid => [:pointer, :pointer, SDL_Color],
123
- :TTF_RenderUNICODE_Solid => [:pointer, :pointer, SDL_Color],
124
- :TTF_RenderGlyph_Solid => [:pointer, :ushort, SDL_Color],
125
- :TTF_RenderText_Shaded => [:pointer, :pointer, SDL_Color, SDL_Color],
126
- :TTF_RenderUTF8_Shaded => [:pointer, :pointer, SDL_Color, SDL_Color],
127
- :TTF_RenderUNICODE_Shaded => [:pointer, :pointer, SDL_Color, SDL_Color],
128
- :TTF_RenderGlyph_Shaded => [:pointer, :ushort, SDL_Color, SDL_Color],
129
- :TTF_RenderText_Blended => [:pointer, :pointer, SDL_Color],
130
- :TTF_RenderUTF8_Blended => [:pointer, :pointer, SDL_Color],
131
- :TTF_RenderUNICODE_Blended => [:pointer, :pointer, SDL_Color],
132
- :TTF_RenderText_Blended_Wrapped => [:pointer, :pointer, SDL_Color, :uint],
133
- :TTF_RenderUTF8_Blended_Wrapped => [:pointer, :pointer, SDL_Color, :uint],
134
- :TTF_RenderUNICODE_Blended_Wrapped => [:pointer, :pointer, SDL_Color, :uint],
135
- :TTF_RenderGlyph_Blended => [:pointer, :ushort, SDL_Color],
232
+ :TTF_MeasureText => [:pointer, :pointer, :int, :pointer, :pointer],
233
+ :TTF_MeasureUTF8 => [:pointer, :pointer, :int, :pointer, :pointer],
234
+ :TTF_MeasureUNICODE => [:pointer, :pointer, :int, :pointer, :pointer],
235
+ :TTF_RenderText_Solid => [:pointer, :pointer, Color.by_value],
236
+ :TTF_RenderUTF8_Solid => [:pointer, :pointer, Color.by_value],
237
+ :TTF_RenderUNICODE_Solid => [:pointer, :pointer, Color.by_value],
238
+ :TTF_RenderText_Solid_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
239
+ :TTF_RenderUTF8_Solid_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
240
+ :TTF_RenderUNICODE_Solid_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
241
+ :TTF_RenderGlyph_Solid => [:pointer, :ushort, Color.by_value],
242
+ :TTF_RenderGlyph32_Solid => [:pointer, :uint, Color.by_value],
243
+ :TTF_RenderText_Shaded => [:pointer, :pointer, Color.by_value, Color.by_value],
244
+ :TTF_RenderUTF8_Shaded => [:pointer, :pointer, Color.by_value, Color.by_value],
245
+ :TTF_RenderUNICODE_Shaded => [:pointer, :pointer, Color.by_value, Color.by_value],
246
+ :TTF_RenderText_Shaded_Wrapped => [:pointer, :pointer, Color.by_value, Color.by_value, :uint],
247
+ :TTF_RenderUTF8_Shaded_Wrapped => [:pointer, :pointer, Color.by_value, Color.by_value, :uint],
248
+ :TTF_RenderUNICODE_Shaded_Wrapped => [:pointer, :pointer, Color.by_value, Color.by_value, :uint],
249
+ :TTF_RenderGlyph_Shaded => [:pointer, :ushort, Color.by_value, Color.by_value],
250
+ :TTF_RenderGlyph32_Shaded => [:pointer, :uint, Color.by_value, Color.by_value],
251
+ :TTF_RenderText_Blended => [:pointer, :pointer, Color.by_value],
252
+ :TTF_RenderUTF8_Blended => [:pointer, :pointer, Color.by_value],
253
+ :TTF_RenderUNICODE_Blended => [:pointer, :pointer, Color.by_value],
254
+ :TTF_RenderText_Blended_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
255
+ :TTF_RenderUTF8_Blended_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
256
+ :TTF_RenderUNICODE_Blended_Wrapped => [:pointer, :pointer, Color.by_value, :uint],
257
+ :TTF_RenderGlyph_Blended => [:pointer, :ushort, Color.by_value],
258
+ :TTF_RenderGlyph32_Blended => [:pointer, :uint, Color.by_value],
259
+ :TTF_SetDirection => [:int],
260
+ :TTF_SetScript => [:int],
136
261
  :TTF_CloseFont => [:pointer],
137
262
  :TTF_Quit => [],
138
263
  :TTF_WasInit => [],
139
264
  :TTF_GetFontKerningSize => [:pointer, :int, :int],
140
265
  :TTF_GetFontKerningSizeGlyphs => [:pointer, :ushort, :ushort],
266
+ :TTF_GetFontKerningSizeGlyphs32 => [:pointer, :uint, :uint],
267
+ :TTF_SetFontSDF => [:pointer, :int],
268
+ :TTF_GetFontSDF => [:pointer],
141
269
  }
142
270
  retvals = {
143
271
  :TTF_Linked_Version => :pointer,
272
+ :TTF_GetFreeTypeVersion => :void,
273
+ :TTF_GetHarfBuzzVersion => :void,
144
274
  :TTF_ByteSwappedUNICODE => :void,
145
275
  :TTF_Init => :int,
146
276
  :TTF_OpenFont => :pointer,
147
277
  :TTF_OpenFontIndex => :pointer,
148
278
  :TTF_OpenFontRW => :pointer,
149
279
  :TTF_OpenFontIndexRW => :pointer,
280
+ :TTF_OpenFontDPI => :pointer,
281
+ :TTF_OpenFontIndexDPI => :pointer,
282
+ :TTF_OpenFontDPIRW => :pointer,
283
+ :TTF_OpenFontIndexDPIRW => :pointer,
284
+ :TTF_SetFontSize => :int,
285
+ :TTF_SetFontSizeDPI => :int,
150
286
  :TTF_GetFontStyle => :int,
151
287
  :TTF_SetFontStyle => :void,
152
288
  :TTF_GetFontOutline => :int,
@@ -164,18 +300,31 @@ module SDL2
164
300
  :TTF_FontFaceFamilyName => :pointer,
165
301
  :TTF_FontFaceStyleName => :pointer,
166
302
  :TTF_GlyphIsProvided => :int,
303
+ :TTF_GlyphIsProvided32 => :int,
167
304
  :TTF_GlyphMetrics => :int,
305
+ :TTF_GlyphMetrics32 => :int,
168
306
  :TTF_SizeText => :int,
169
307
  :TTF_SizeUTF8 => :int,
170
308
  :TTF_SizeUNICODE => :int,
309
+ :TTF_MeasureText => :int,
310
+ :TTF_MeasureUTF8 => :int,
311
+ :TTF_MeasureUNICODE => :int,
171
312
  :TTF_RenderText_Solid => :pointer,
172
313
  :TTF_RenderUTF8_Solid => :pointer,
173
314
  :TTF_RenderUNICODE_Solid => :pointer,
315
+ :TTF_RenderText_Solid_Wrapped => :pointer,
316
+ :TTF_RenderUTF8_Solid_Wrapped => :pointer,
317
+ :TTF_RenderUNICODE_Solid_Wrapped => :pointer,
174
318
  :TTF_RenderGlyph_Solid => :pointer,
319
+ :TTF_RenderGlyph32_Solid => :pointer,
175
320
  :TTF_RenderText_Shaded => :pointer,
176
321
  :TTF_RenderUTF8_Shaded => :pointer,
177
322
  :TTF_RenderUNICODE_Shaded => :pointer,
323
+ :TTF_RenderText_Shaded_Wrapped => :pointer,
324
+ :TTF_RenderUTF8_Shaded_Wrapped => :pointer,
325
+ :TTF_RenderUNICODE_Shaded_Wrapped => :pointer,
178
326
  :TTF_RenderGlyph_Shaded => :pointer,
327
+ :TTF_RenderGlyph32_Shaded => :pointer,
179
328
  :TTF_RenderText_Blended => :pointer,
180
329
  :TTF_RenderUTF8_Blended => :pointer,
181
330
  :TTF_RenderUNICODE_Blended => :pointer,
@@ -183,17 +332,23 @@ module SDL2
183
332
  :TTF_RenderUTF8_Blended_Wrapped => :pointer,
184
333
  :TTF_RenderUNICODE_Blended_Wrapped => :pointer,
185
334
  :TTF_RenderGlyph_Blended => :pointer,
335
+ :TTF_RenderGlyph32_Blended => :pointer,
336
+ :TTF_SetDirection => :int,
337
+ :TTF_SetScript => :int,
186
338
  :TTF_CloseFont => :void,
187
339
  :TTF_Quit => :void,
188
340
  :TTF_WasInit => :int,
189
341
  :TTF_GetFontKerningSize => :int,
190
342
  :TTF_GetFontKerningSizeGlyphs => :int,
343
+ :TTF_GetFontKerningSizeGlyphs32 => :int,
344
+ :TTF_SetFontSDF => :int,
345
+ :TTF_GetFontSDF => :int,
191
346
  }
192
347
  symbols.each do |sym|
193
348
  begin
194
- attach_function sym, args[sym], retvals[sym]
349
+ attach_function apis[sym], sym, args[sym], retvals[sym]
195
350
  rescue FFI::NotFoundError => error
196
- $stderr.puts("[Warning] Failed to import #{sym} (#{error}).")
351
+ $stderr.puts("[Warning] Failed to import #{sym} (#{error}).") if output_error
197
352
  end
198
353
  end
199
354
  end