SDLRuby 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -22
  3. data/LICENSE.txt +21 -21
  4. data/README.md +31 -31
  5. data/Rakefile +12 -12
  6. data/SDLRuby.gemspec +38 -0
  7. data/examples/alert.rb +8 -0
  8. data/examples/window.rb +7 -0
  9. data/lib/SDLRuby/event/accessor.rb +2 -2
  10. data/lib/SDLRuby/event.rb +101 -101
  11. data/lib/SDLRuby/image/include/SDL_image.h.rb +61 -61
  12. data/lib/SDLRuby/mixer/include/SDL_mixer.h.rb +95 -95
  13. data/lib/SDLRuby/rw_ops/rw_object.rb +34 -34
  14. data/lib/SDLRuby/rw_ops.rb +91 -91
  15. data/lib/SDLRuby/sdl/include/SDL.h.rb +44 -44
  16. data/lib/SDLRuby/sdl/include/SDL_audio.h.rb +160 -160
  17. data/lib/SDLRuby/sdl/include/SDL_blendmode.h.rb +30 -30
  18. data/lib/SDLRuby/sdl/include/SDL_clipboard.h.rb +10 -10
  19. data/lib/SDLRuby/sdl/include/SDL_config.h.rb +13 -13
  20. data/lib/SDLRuby/sdl/include/SDL_cpuinfo.h.rb +27 -27
  21. data/lib/SDLRuby/sdl/include/SDL_endian.h.rb +12 -12
  22. data/lib/SDLRuby/sdl/include/SDL_error.h.rb +28 -28
  23. data/lib/SDLRuby/sdl/include/SDL_events.h.rb +472 -472
  24. data/lib/SDLRuby/sdl/include/SDL_filesystem.h.rb +6 -6
  25. data/lib/SDLRuby/sdl/include/SDL_gamecontroller.h.rb +147 -147
  26. data/lib/SDLRuby/sdl/include/SDL_gesture.h.rb +12 -12
  27. data/lib/SDLRuby/sdl/include/SDL_guid.h.rb +13 -13
  28. data/lib/SDLRuby/sdl/include/SDL_hints.h.rb +199 -199
  29. data/lib/SDLRuby/sdl/include/SDL_joystick.h.rb +131 -131
  30. data/lib/SDLRuby/sdl/include/SDL_keyboard.h.rb +35 -35
  31. data/lib/SDLRuby/sdl/include/SDL_keycode.h.rb +292 -292
  32. data/lib/SDLRuby/sdl/include/SDL_locale.h.rb +13 -13
  33. data/lib/SDLRuby/sdl/include/SDL_main.h.rb +3 -3
  34. data/lib/SDLRuby/sdl/include/SDL_messagebox.h.rb +58 -58
  35. data/lib/SDLRuby/sdl/include/SDL_misc.h.rb +5 -5
  36. data/lib/SDLRuby/sdl/include/SDL_mouse.h.rb +57 -57
  37. data/lib/SDLRuby/sdl/include/SDL_pixels.h.rb +285 -285
  38. data/lib/SDLRuby/sdl/include/SDL_platform.h.rb +3 -3
  39. data/lib/SDLRuby/sdl/include/SDL_power.h.rb +6 -6
  40. data/lib/SDLRuby/sdl/include/SDL_rect.h.rb +46 -46
  41. data/lib/SDLRuby/sdl/include/SDL_render.h.rb +131 -131
  42. data/lib/SDLRuby/sdl/include/SDL_revision.h.rb +2 -2
  43. data/lib/SDLRuby/sdl/include/SDL_rwops.h.rb +78 -78
  44. data/lib/SDLRuby/sdl/include/SDL_scancode.h.rb +252 -252
  45. data/lib/SDLRuby/sdl/include/SDL_sensor.h.rb +25 -25
  46. data/lib/SDLRuby/sdl/include/SDL_shape.h.rb +40 -40
  47. data/lib/SDLRuby/sdl/include/SDL_stdinc.h.rb +62 -62
  48. data/lib/SDLRuby/sdl/include/SDL_surface.h.rb +100 -100
  49. data/lib/SDLRuby/sdl/include/SDL_system.h.rb +6 -6
  50. data/lib/SDLRuby/sdl/include/SDL_syswm.h.rb +10 -10
  51. data/lib/SDLRuby/sdl/include/SDL_timer.h.rb +21 -21
  52. data/lib/SDLRuby/sdl/include/SDL_touch.h.rb +15 -15
  53. data/lib/SDLRuby/sdl/include/SDL_types.h.rb +3 -3
  54. data/lib/SDLRuby/sdl/include/SDL_version.h.rb +14 -14
  55. data/lib/SDLRuby/sdl/include/SDL_video.h.rb +264 -264
  56. data/lib/SDLRuby/sdl.rb +218 -218
  57. data/lib/SDLRuby/ttf/include/SDL_ttf.h.rb +54 -54
  58. data/lib/SDLRuby/version.rb +5 -5
  59. data/lib/SDLRuby/window/surfacer.rb +37 -37
  60. data/lib/SDLRuby.rb +32 -16
  61. data/sig/SDLRuby.rbs +4 -4
  62. data/sig/lib/SDLRuby/event/accessor.rbs +157 -157
  63. data/sig/lib/SDLRuby/event/type.rbs +67 -67
  64. data/sig/lib/SDLRuby/event.rbs +47 -47
  65. data/sig/lib/SDLRuby/keyboard.rbs +25 -25
  66. data/sig/lib/SDLRuby/mouse.rbs +35 -35
  67. data/sig/lib/SDLRuby/sdl.rbs +655 -655
  68. data/sig/lib/SDLRuby/timer.rbs +7 -7
  69. metadata +6 -3
data/lib/SDLRuby/sdl.rb CHANGED
@@ -1,218 +1,218 @@
1
- require "fiddle/import"
2
-
3
- module SDLRuby
4
- module SDL
5
- extend Fiddle::Importer
6
-
7
- dlload "SDL2"
8
-
9
- SDL_DESTROY_RENDERER = import_symbol("SDL_DestroyRenderer").to_int
10
- SDL_DESTROY_TEXTURE = import_symbol("SDL_DestroyTexture").to_int
11
-
12
- # SDL_freeはSDL_SetMemoryFunctionsで設定された関数を使用する。
13
- # SDL側のメモリーを開放する場合はFiddle::PointerへSDL_FREEを設定してよい。
14
- #
15
- SDL_FREE = import_symbol("SDL_free").to_int
16
- SDL_FREE_CURSOR = import_symbol("SDL_FreeCursor").to_int
17
- SDL_FREE_FORMAT = import_symbol("SDL_FreeFormat").to_int
18
- SDL_FREE_PALETTE = import_symbol("SDL_FreePalette").to_int
19
- SDL_FREE_RW = import_symbol("SDL_FreeRW").to_int
20
- SDL_FREE_SURFACE = import_symbol("SDL_FreeSurface").to_int
21
-
22
- def self.tmp_value(*a, &)
23
- raise ArgumentError if a.empty?
24
-
25
- a.map { |ty|
26
- st = create_value(ty)
27
- st.to_ptr.free = Fiddle::RUBY_FREE
28
- st
29
- } => vals
30
-
31
- v = vals.one? ? vals.first : vals
32
- block_given? ? yield(*v) : v
33
- end
34
-
35
- require_relative 'sdl/sdl'
36
- require_relative 'sdl_error'
37
-
38
- require_relative 'audio'
39
- require_relative 'cursor'
40
- require_relative 'display'
41
- require_relative 'event'
42
- require_relative 'hint'
43
- require_relative 'keyboard'
44
- require_relative 'mouse'
45
- require_relative 'palette'
46
- require_relative 'pixel_formatter'
47
- require_relative 'rect'
48
- require_relative 'renderer'
49
- require_relative 'rw_ops'
50
- require_relative 'surface'
51
- require_relative 'text_input'
52
- require_relative 'texture'
53
- require_relative 'timer'
54
- require_relative 'window'
55
-
56
- class << self
57
- # sdl
58
- #
59
- def init(flags = nil)
60
- err = SDL.SDL_Init(flags || SDL_INIT_EVERYTHING)
61
- raise SDLError if err < 0
62
- end
63
-
64
- # Description:
65
- #
66
- # This method checks the initialization status of SDL subsystems based on
67
- # the provided flags. You can specify the SDL subsystems you want to check
68
- # by combining the SDL_INIT_* flags using bitwise OR.
69
- #
70
- # Parameters:
71
- #
72
- # flags (optional): An integer or a combination of SDL_INIT_* flags
73
- # representing the SDL subsystems to check. Default is nil.
74
- #
75
- # Return Value:
76
- #
77
- # If all the specified SDL subsystems in flags are initialized,
78
- # the method returns true.
79
- # If any of the specified SDL subsystems are not initialized,
80
- # it returns false.
81
- # If flags is given as nil or 0,
82
- # the method returns true if any of the SDL subsystems are initialized.
83
- #
84
- def init?(flags = nil)
85
- if flags && flags != 0
86
- SDL.SDL_WasInit(flags) == flags
87
- else
88
- SDL.SDL_WasInit(0) != 0
89
- end
90
- end
91
-
92
- def quit = SDL.SDL_Quit
93
-
94
- # clipboard
95
- #
96
- def clipboard_text
97
- ptr = SDL.SDL_GetClipboardText
98
- raise SDLError if ptr.null?
99
-
100
- ptr.free = SDL_FREE
101
- ptr.to_s.force_encoding("UTF-8")
102
- end
103
-
104
- def clipboard_text? = SDL.SDL_HasClipboardText == 1
105
-
106
- def clipboard_text=(s)
107
- err = SDL.SDL_SetClipboardText(s.to_s.encode("UTF-8"))
108
- raise SDLError if err < 0
109
- end
110
-
111
- # cpu info
112
- #
113
- def cpu_cache_line_size = SDL.SDL_GetCPUCacheLineSize
114
-
115
- def cpu_count = SDL.SDL_GetCPUCount
116
-
117
- def system_ram = SDL.SDL_GetSystemRAM
118
-
119
- # error
120
- #
121
- def last_error_message = SDL.SDL_GetError.to_s
122
-
123
- def last_error_message=(s)
124
- SDL.SDL_SetError(s.to_s.gsub(/%/, "%%"))
125
- end
126
-
127
- # filesystem
128
- #
129
- def base_path
130
- ptr = SDL.SDL_GetBasePath
131
- raise SDLError if ptr.null?
132
-
133
- ptr.free = SDL_FREE
134
- ptr.to_s
135
- end
136
-
137
- # locale
138
- #
139
- def locales
140
- ptr = SDL.SDL_GetPreferredLocales
141
- return [] if ptr.null?
142
-
143
- ptr.free = SDL_FREE
144
- size = SDL_Locale.size
145
- (0..).inject([]) do |memo, i|
146
- st = SDL_Locale.new(ptr + i * size)
147
- break memo if st.language.null?
148
- memo << [st.language.to_s,
149
- (c = st.country).null? ? nil : c.to_s]
150
- end
151
- end
152
-
153
- # message box
154
- #
155
- def alert(message, title = nil, flags: nil, window: nil)
156
- err = SDL.SDL_ShowSimpleMessageBox(flags,
157
- title.to_s.encode("UTF-8"),
158
- message.to_s.encode("UTF-8"),
159
- window)
160
- raise SDLError if err < 0
161
- end
162
-
163
- def error_alert(message, title = "Error")
164
- alert(message, title, flags: SDL_MESSAGEBOX_ERROR)
165
- end
166
-
167
- def warn_alert(message, title = "Warning")
168
- alert(message, title, flags: SDL_MESSAGEBOX_WARNING)
169
- end
170
-
171
- def info_alert(message, title = "Information")
172
- alert(message, title, flags: SDL_MESSAGEBOX_INFORMATION)
173
- end
174
-
175
- # misc
176
- #
177
- def open_url(url)
178
- raise SDLError if SDL.SDL_OpenURL(url) < 0
179
- end
180
-
181
- # platform
182
- #
183
- def platform = SDL.SDL_GetPlatform.to_s
184
-
185
- # timer
186
- #
187
- def ticks = Timer.ticks
188
-
189
- # version
190
- #
191
- def revision = SDL.SDL_GetRevision.to_s
192
-
193
- def version
194
- st = SDL_version.malloc(Fiddle::RUBY_FREE)
195
- SDL.SDL_GetVersion(st)
196
- st.to_a.join(".")
197
- end
198
-
199
- # video
200
- #
201
- def video_driver
202
- (ptr = SDL.SDL_GetCurrentVideoDriver).null? ? nil : ptr.to_s
203
- end
204
-
205
- def screen_saver=(b)
206
- b ? SDL.SDL_EnableScreenSaver : SDL.SDL_DisableScreenSaver
207
- end
208
-
209
- def screen_saver? = SDL.SDL_IsScreenSaverEnabled != 0
210
-
211
- def video_drivers
212
- SDL.SDL_GetNumVideoDrivers.times.map do |i|
213
- (ptr = SDL.SDL_GetVideoDriver(i)).null? ? nil : ptr.to_s
214
- end
215
- end
216
- end
217
- end
218
- end
1
+ require "fiddle/import"
2
+
3
+ module SDLRuby
4
+ module SDL
5
+ extend Fiddle::Importer
6
+
7
+ dlload "SDL2"
8
+
9
+ SDL_DESTROY_RENDERER = import_symbol("SDL_DestroyRenderer").to_int
10
+ SDL_DESTROY_TEXTURE = import_symbol("SDL_DestroyTexture").to_int
11
+
12
+ # SDL_freeはSDL_SetMemoryFunctionsで設定された関数を使用する。
13
+ # SDL側のメモリーを開放する場合はFiddle::PointerへSDL_FREEを設定してよい。
14
+ #
15
+ SDL_FREE = import_symbol("SDL_free").to_int
16
+ SDL_FREE_CURSOR = import_symbol("SDL_FreeCursor").to_int
17
+ SDL_FREE_FORMAT = import_symbol("SDL_FreeFormat").to_int
18
+ SDL_FREE_PALETTE = import_symbol("SDL_FreePalette").to_int
19
+ SDL_FREE_RW = import_symbol("SDL_FreeRW").to_int
20
+ SDL_FREE_SURFACE = import_symbol("SDL_FreeSurface").to_int
21
+
22
+ def self.tmp_value(*a, &)
23
+ raise ArgumentError if a.empty?
24
+
25
+ a.map { |ty|
26
+ st = create_value(ty)
27
+ st.to_ptr.free = Fiddle::RUBY_FREE
28
+ st
29
+ } => vals
30
+
31
+ v = vals.one? ? vals.first : vals
32
+ block_given? ? yield(*v) : v
33
+ end
34
+
35
+ require_relative 'sdl/sdl'
36
+ require_relative 'sdl_error'
37
+
38
+ require_relative 'audio'
39
+ require_relative 'cursor'
40
+ require_relative 'display'
41
+ require_relative 'event'
42
+ require_relative 'hint'
43
+ require_relative 'keyboard'
44
+ require_relative 'mouse'
45
+ require_relative 'palette'
46
+ require_relative 'pixel_formatter'
47
+ require_relative 'rect'
48
+ require_relative 'renderer'
49
+ require_relative 'rw_ops'
50
+ require_relative 'surface'
51
+ require_relative 'text_input'
52
+ require_relative 'texture'
53
+ require_relative 'timer'
54
+ require_relative 'window'
55
+
56
+ class << self
57
+ # sdl
58
+ #
59
+ def init(flags = nil)
60
+ err = SDL.SDL_Init(flags || SDL_INIT_EVERYTHING)
61
+ raise SDLError if err < 0
62
+ end
63
+
64
+ # Description:
65
+ #
66
+ # This method checks the initialization status of SDL subsystems based on
67
+ # the provided flags. You can specify the SDL subsystems you want to check
68
+ # by combining the SDL_INIT_* flags using bitwise OR.
69
+ #
70
+ # Parameters:
71
+ #
72
+ # flags (optional): An integer or a combination of SDL_INIT_* flags
73
+ # representing the SDL subsystems to check. Default is nil.
74
+ #
75
+ # Return Value:
76
+ #
77
+ # If all the specified SDL subsystems in flags are initialized,
78
+ # the method returns true.
79
+ # If any of the specified SDL subsystems are not initialized,
80
+ # it returns false.
81
+ # If flags is given as nil or 0,
82
+ # the method returns true if any of the SDL subsystems are initialized.
83
+ #
84
+ def init?(flags = nil)
85
+ if flags && flags != 0
86
+ SDL.SDL_WasInit(flags) == flags
87
+ else
88
+ SDL.SDL_WasInit(0) != 0
89
+ end
90
+ end
91
+
92
+ def quit = SDL.SDL_Quit
93
+
94
+ # clipboard
95
+ #
96
+ def clipboard_text
97
+ ptr = SDL.SDL_GetClipboardText
98
+ raise SDLError if ptr.null?
99
+
100
+ ptr.free = SDL_FREE
101
+ ptr.to_s.force_encoding("UTF-8")
102
+ end
103
+
104
+ def clipboard_text? = SDL.SDL_HasClipboardText == 1
105
+
106
+ def clipboard_text=(s)
107
+ err = SDL.SDL_SetClipboardText(s.to_s.encode("UTF-8"))
108
+ raise SDLError if err < 0
109
+ end
110
+
111
+ # cpu info
112
+ #
113
+ def cpu_cache_line_size = SDL.SDL_GetCPUCacheLineSize
114
+
115
+ def cpu_count = SDL.SDL_GetCPUCount
116
+
117
+ def system_ram = SDL.SDL_GetSystemRAM
118
+
119
+ # error
120
+ #
121
+ def last_error_message = SDL.SDL_GetError.to_s
122
+
123
+ def last_error_message=(s)
124
+ SDL.SDL_SetError(s.to_s.gsub(/%/, "%%"))
125
+ end
126
+
127
+ # filesystem
128
+ #
129
+ def base_path
130
+ ptr = SDL.SDL_GetBasePath
131
+ raise SDLError if ptr.null?
132
+
133
+ ptr.free = SDL_FREE
134
+ ptr.to_s
135
+ end
136
+
137
+ # locale
138
+ #
139
+ def locales
140
+ ptr = SDL.SDL_GetPreferredLocales
141
+ return [] if ptr.null?
142
+
143
+ ptr.free = SDL_FREE
144
+ size = SDL_Locale.size
145
+ (0..).inject([]) do |memo, i|
146
+ st = SDL_Locale.new(ptr + i * size)
147
+ break memo if st.language.null?
148
+ memo << [st.language.to_s,
149
+ (c = st.country).null? ? nil : c.to_s]
150
+ end
151
+ end
152
+
153
+ # message box
154
+ #
155
+ def alert(message, title = nil, flags: nil, window: nil)
156
+ err = SDL.SDL_ShowSimpleMessageBox(flags.to_i,
157
+ title.to_s.encode("UTF-8"),
158
+ message.to_s.encode("UTF-8"),
159
+ window)
160
+ raise SDLError if err < 0
161
+ end
162
+
163
+ def error_alert(message, title = "Error")
164
+ alert(message, title, flags: SDL_MESSAGEBOX_ERROR)
165
+ end
166
+
167
+ def warn_alert(message, title = "Warning")
168
+ alert(message, title, flags: SDL_MESSAGEBOX_WARNING)
169
+ end
170
+
171
+ def info_alert(message, title = "Information")
172
+ alert(message, title, flags: SDL_MESSAGEBOX_INFORMATION)
173
+ end
174
+
175
+ # misc
176
+ #
177
+ def open_url(url)
178
+ raise SDLError if SDL.SDL_OpenURL(url) < 0
179
+ end
180
+
181
+ # platform
182
+ #
183
+ def platform = SDL.SDL_GetPlatform.to_s
184
+
185
+ # timer
186
+ #
187
+ def ticks = Timer.ticks
188
+
189
+ # version
190
+ #
191
+ def revision = SDL.SDL_GetRevision.to_s
192
+
193
+ def version
194
+ st = SDL_version.malloc(Fiddle::RUBY_FREE)
195
+ SDL.SDL_GetVersion(st)
196
+ st.to_a.join(".")
197
+ end
198
+
199
+ # video
200
+ #
201
+ def video_driver
202
+ (ptr = SDL.SDL_GetCurrentVideoDriver).null? ? nil : ptr.to_s
203
+ end
204
+
205
+ def screen_saver=(b)
206
+ b ? SDL.SDL_EnableScreenSaver : SDL.SDL_DisableScreenSaver
207
+ end
208
+
209
+ def screen_saver? = SDL.SDL_IsScreenSaverEnabled != 0
210
+
211
+ def video_drivers
212
+ SDL.SDL_GetNumVideoDrivers.times.map do |i|
213
+ (ptr = SDL.SDL_GetVideoDriver(i)).null? ? nil : ptr.to_s
214
+ end
215
+ end
216
+ end
217
+ end
218
+ end
@@ -1,54 +1,54 @@
1
- module SDLRuby::TTF
2
- typealias "TTF_Font", "struct _TTF_Font"
3
- typealias "TTF_Direction", "int"
4
- extern "const SDL_version * TTF_Linked_Version(void)"
5
- extern "void TTF_GetFreeTypeVersion(int *major, int *minor, int *patch)"
6
- extern "void TTF_GetHarfBuzzVersion(int *major, int *minor, int *patch)"
7
- extern "void TTF_ByteSwappedUNICODE(SDL_bool swapped)"
8
- extern "int TTF_Init(void)"
9
- extern "TTF_Font * TTF_OpenFont(const char *file, int ptsize)"
10
- extern "TTF_Font * TTF_OpenFontIndex(const char *file, int ptsize, long index)"
11
- extern "TTF_Font * TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize)"
12
- extern "TTF_Font * TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index)"
13
- extern "TTF_Font * TTF_OpenFontDPI(const char *file, int ptsize, unsigned int hdpi, unsigned int vdpi)"
14
- extern "TTF_Font * TTF_OpenFontIndexDPI(const char *file, int ptsize, long index, unsigned int hdpi, unsigned int vdpi)"
15
- extern "TTF_Font * TTF_OpenFontDPIRW(SDL_RWops *src, int freesrc, int ptsize, unsigned int hdpi, unsigned int vdpi)"
16
- extern "TTF_Font * TTF_OpenFontIndexDPIRW(SDL_RWops *src, int freesrc, int ptsize, long index, unsigned int hdpi, unsigned int vdpi)"
17
- extern "int TTF_SetFontSize(TTF_Font *font, int ptsize)"
18
- extern "int TTF_SetFontSizeDPI(TTF_Font *font, int ptsize, unsigned int hdpi, unsigned int vdpi)"
19
- extern "int TTF_GetFontStyle(const TTF_Font *font)"
20
- extern "void TTF_SetFontStyle(TTF_Font *font, int style)"
21
- extern "int TTF_GetFontOutline(const TTF_Font *font)"
22
- extern "void TTF_SetFontOutline(TTF_Font *font, int outline)"
23
- extern "int TTF_GetFontHinting(const TTF_Font *font)"
24
- extern "void TTF_SetFontHinting(TTF_Font *font, int hinting)"
25
- extern "int TTF_GetFontWrappedAlign(const TTF_Font *font)"
26
- extern "void TTF_SetFontWrappedAlign(TTF_Font *font, int align)"
27
- extern "int TTF_FontHeight(const TTF_Font *font)"
28
- extern "int TTF_FontAscent(const TTF_Font *font)"
29
- extern "int TTF_FontDescent(const TTF_Font *font)"
30
- extern "int TTF_FontLineSkip(const TTF_Font *font)"
31
- extern "int TTF_GetFontKerning(const TTF_Font *font)"
32
- extern "void TTF_SetFontKerning(TTF_Font *font, int allowed)"
33
- extern "long TTF_FontFaces(const TTF_Font *font)"
34
- extern "int TTF_FontFaceIsFixedWidth(const TTF_Font *font)"
35
- extern "const char * TTF_FontFaceFamilyName(const TTF_Font *font)"
36
- extern "const char * TTF_FontFaceStyleName(const TTF_Font *font)"
37
- extern "int TTF_GlyphIsProvided32(TTF_Font *font, Uint32 ch)"
38
- extern "int TTF_GlyphMetrics32(TTF_Font *font, Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance)"
39
- extern "int TTF_SizeUTF8(TTF_Font *font, const char *text, int *w, int *h)"
40
- extern "int TTF_MeasureUTF8(TTF_Font *font, const char *text, int measure_width, int *extent, int *count)"
41
- extern "SDL_Surface * TTF_RenderUTF8_Solid(TTF_Font *font, const char *text, SDL_Color fg)"
42
- extern "SDL_Surface * TTF_RenderUTF8_Solid_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, Uint32 wrapLength)"
43
- extern "SDL_Surface * TTF_RenderUTF8_Shaded(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg)"
44
- extern "SDL_Surface * TTF_RenderUTF8_Shaded_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength)"
45
- extern "SDL_Surface * TTF_RenderUTF8_Blended(TTF_Font *font, const char *text, SDL_Color fg)"
46
- extern "SDL_Surface * TTF_RenderUTF8_Blended_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, Uint32 wrapLength)"
47
- extern "SDL_Surface * TTF_RenderUTF8_LCD(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg)"
48
- extern "SDL_Surface * TTF_RenderUTF8_LCD_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength)"
49
- extern "void TTF_CloseFont(TTF_Font *font)"
50
- extern "void TTF_Quit(void)"
51
- extern "int TTF_WasInit(void)"
52
- extern "int TTF_SetFontDirection(TTF_Font *font, TTF_Direction direction)"
53
- extern "int TTF_SetFontScriptName(TTF_Font *font, const char *script)"
54
- end
1
+ module SDLRuby::TTF
2
+ typealias "TTF_Font", "struct _TTF_Font"
3
+ typealias "TTF_Direction", "int"
4
+ extern "const SDL_version * TTF_Linked_Version(void)"
5
+ extern "void TTF_GetFreeTypeVersion(int *major, int *minor, int *patch)"
6
+ extern "void TTF_GetHarfBuzzVersion(int *major, int *minor, int *patch)"
7
+ extern "void TTF_ByteSwappedUNICODE(SDL_bool swapped)"
8
+ extern "int TTF_Init(void)"
9
+ extern "TTF_Font * TTF_OpenFont(const char *file, int ptsize)"
10
+ extern "TTF_Font * TTF_OpenFontIndex(const char *file, int ptsize, long index)"
11
+ extern "TTF_Font * TTF_OpenFontRW(SDL_RWops *src, int freesrc, int ptsize)"
12
+ extern "TTF_Font * TTF_OpenFontIndexRW(SDL_RWops *src, int freesrc, int ptsize, long index)"
13
+ extern "TTF_Font * TTF_OpenFontDPI(const char *file, int ptsize, unsigned int hdpi, unsigned int vdpi)"
14
+ extern "TTF_Font * TTF_OpenFontIndexDPI(const char *file, int ptsize, long index, unsigned int hdpi, unsigned int vdpi)"
15
+ extern "TTF_Font * TTF_OpenFontDPIRW(SDL_RWops *src, int freesrc, int ptsize, unsigned int hdpi, unsigned int vdpi)"
16
+ extern "TTF_Font * TTF_OpenFontIndexDPIRW(SDL_RWops *src, int freesrc, int ptsize, long index, unsigned int hdpi, unsigned int vdpi)"
17
+ extern "int TTF_SetFontSize(TTF_Font *font, int ptsize)"
18
+ extern "int TTF_SetFontSizeDPI(TTF_Font *font, int ptsize, unsigned int hdpi, unsigned int vdpi)"
19
+ extern "int TTF_GetFontStyle(const TTF_Font *font)"
20
+ extern "void TTF_SetFontStyle(TTF_Font *font, int style)"
21
+ extern "int TTF_GetFontOutline(const TTF_Font *font)"
22
+ extern "void TTF_SetFontOutline(TTF_Font *font, int outline)"
23
+ extern "int TTF_GetFontHinting(const TTF_Font *font)"
24
+ extern "void TTF_SetFontHinting(TTF_Font *font, int hinting)"
25
+ extern "int TTF_GetFontWrappedAlign(const TTF_Font *font)"
26
+ extern "void TTF_SetFontWrappedAlign(TTF_Font *font, int align)"
27
+ extern "int TTF_FontHeight(const TTF_Font *font)"
28
+ extern "int TTF_FontAscent(const TTF_Font *font)"
29
+ extern "int TTF_FontDescent(const TTF_Font *font)"
30
+ extern "int TTF_FontLineSkip(const TTF_Font *font)"
31
+ extern "int TTF_GetFontKerning(const TTF_Font *font)"
32
+ extern "void TTF_SetFontKerning(TTF_Font *font, int allowed)"
33
+ extern "long TTF_FontFaces(const TTF_Font *font)"
34
+ extern "int TTF_FontFaceIsFixedWidth(const TTF_Font *font)"
35
+ extern "const char * TTF_FontFaceFamilyName(const TTF_Font *font)"
36
+ extern "const char * TTF_FontFaceStyleName(const TTF_Font *font)"
37
+ extern "int TTF_GlyphIsProvided32(TTF_Font *font, Uint32 ch)"
38
+ extern "int TTF_GlyphMetrics32(TTF_Font *font, Uint32 ch, int *minx, int *maxx, int *miny, int *maxy, int *advance)"
39
+ extern "int TTF_SizeUTF8(TTF_Font *font, const char *text, int *w, int *h)"
40
+ extern "int TTF_MeasureUTF8(TTF_Font *font, const char *text, int measure_width, int *extent, int *count)"
41
+ extern "SDL_Surface * TTF_RenderUTF8_Solid(TTF_Font *font, const char *text, SDL_Color fg)"
42
+ extern "SDL_Surface * TTF_RenderUTF8_Solid_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, Uint32 wrapLength)"
43
+ extern "SDL_Surface * TTF_RenderUTF8_Shaded(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg)"
44
+ extern "SDL_Surface * TTF_RenderUTF8_Shaded_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength)"
45
+ extern "SDL_Surface * TTF_RenderUTF8_Blended(TTF_Font *font, const char *text, SDL_Color fg)"
46
+ extern "SDL_Surface * TTF_RenderUTF8_Blended_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, Uint32 wrapLength)"
47
+ extern "SDL_Surface * TTF_RenderUTF8_LCD(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg)"
48
+ extern "SDL_Surface * TTF_RenderUTF8_LCD_Wrapped(TTF_Font *font, const char *text, SDL_Color fg, SDL_Color bg, Uint32 wrapLength)"
49
+ extern "void TTF_CloseFont(TTF_Font *font)"
50
+ extern "void TTF_Quit(void)"
51
+ extern "int TTF_WasInit(void)"
52
+ extern "int TTF_SetFontDirection(TTF_Font *font, TTF_Direction direction)"
53
+ extern "int TTF_SetFontScriptName(TTF_Font *font, const char *script)"
54
+ end
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: true
2
-
3
- module SDLRuby
4
- VERSION = "0.3.1"
5
- end
1
+ # frozen_string_literal: true
2
+
3
+ module SDLRuby
4
+ VERSION = "0.4.0"
5
+ end
@@ -1,37 +1,37 @@
1
- module SDLRuby
2
- class Window
3
- module Surfacer
4
- include SDL
5
-
6
- def destroy_surface
7
- err = SDL.SDL_DestroyWindowSurface(self)
8
- raise SDLError if err < 0
9
- end
10
-
11
- def surface
12
- ptr = SDL.SDL_GetWindowSurface(self)
13
- raise SDLError if ptr.null?
14
-
15
- # ウィンドウからのサーフェスにはSDL_DONTFREEフラグが設定されている。
16
- # このためにSDL_FreeSurfaceではリファレンスカウンターを減じる事ができない。
17
- # これはRubyのGC管理では問題になる(メモリーリークする)。
18
- # そのためSDL_DONTFREEフラグを解除する!
19
- #
20
- st = SDL_Surface.new(ptr)
21
- st.flags &= ~SDL_DONTFREE
22
-
23
- Surface.new(ptr, add_ref: true)
24
- end
25
-
26
- # ウィンドウのサーフェスがvalidかどうか確認していない。
27
- # リサイズなどで壊れていてもtrueを戻す。
28
- #
29
- def surface? = SDL.SDL_HasWindowSurface(self) == 1
30
-
31
- def update_surface
32
- err = SDL.SDL_UpdateWindowSurface(self)
33
- raise SDLError if err < 0
34
- end
35
- end
36
- end
37
- end
1
+ module SDLRuby
2
+ class Window
3
+ module Surfacer
4
+ include SDL
5
+
6
+ def destroy_surface
7
+ err = SDL.SDL_DestroyWindowSurface(self)
8
+ raise SDLError if err < 0
9
+ end
10
+
11
+ def surface
12
+ ptr = SDL.SDL_GetWindowSurface(self)
13
+ raise SDLError if ptr.null?
14
+
15
+ # ウィンドウからのサーフェスにはSDL_DONTFREEフラグが設定されている。
16
+ # このためにSDL_FreeSurfaceではリファレンスカウンターを減じる事ができない。
17
+ # これはRubyのGC管理では問題になる(メモリーリークする)。
18
+ # そのためSDL_DONTFREEフラグを解除する!
19
+ #
20
+ st = SDL_Surface.new(ptr)
21
+ st.flags &= ~SDL_DONTFREE
22
+
23
+ Surface.new(ptr, add_ref: true)
24
+ end
25
+
26
+ # ウィンドウのサーフェスがvalidかどうか確認していない。
27
+ # リサイズなどで壊れていてもtrueを戻す。
28
+ #
29
+ def surface? = SDL.SDL_HasWindowSurface(self) == 1
30
+
31
+ def update_surface
32
+ err = SDL.SDL_UpdateWindowSurface(self)
33
+ raise SDLError if err < 0
34
+ end
35
+ end
36
+ end
37
+ end