glfw 1.0.3 → 3.3.2.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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +161 -0
  3. data/.yardopts +6 -0
  4. data/Gemfile +2 -4
  5. data/README.md +29 -33
  6. data/Rakefile +6 -4
  7. data/ext/glfw/common.c +159 -0
  8. data/ext/glfw/cursor.c +34 -30
  9. data/ext/glfw/extconf.rb +7 -17
  10. data/ext/glfw/glfw.c +122 -377
  11. data/ext/glfw/glfw.h +46 -41
  12. data/ext/glfw/image.c +96 -64
  13. data/ext/glfw/joystick.c +169 -0
  14. data/ext/glfw/monitor.c +231 -155
  15. data/ext/glfw/stb_image.h +7656 -0
  16. data/ext/glfw/window.c +708 -576
  17. data/glfw.gemspec +10 -9
  18. data/lib/glfw.rb +4 -14
  19. data/lib/glfw/constants.rb +365 -0
  20. data/lib/glfw/stubs.rb +234 -0
  21. data/lib/glfw/stubs/cursor.rb +21 -0
  22. data/lib/glfw/stubs/gamepad_state.rb +30 -0
  23. data/lib/glfw/stubs/image.rb +39 -0
  24. data/lib/glfw/stubs/joystick.rb +125 -0
  25. data/lib/glfw/stubs/monitor.rb +115 -0
  26. data/lib/glfw/stubs/video_mode.rb +32 -0
  27. data/lib/glfw/stubs/window.rb +626 -0
  28. data/lib/glfw/version.rb +8 -1
  29. metadata +31 -35
  30. data/.travis.yml +0 -5
  31. data/Makefile +0 -267
  32. data/ext/glfw/common.h +0 -46
  33. data/ext/glfw/cursor.h +0 -14
  34. data/ext/glfw/glfw3.h +0 -4248
  35. data/ext/glfw/glfw3native.h +0 -456
  36. data/ext/glfw/image.h +0 -14
  37. data/ext/glfw/ming32/WINDOWS USERS PLACE libglf3.a HERE.txt b/data/ext/glfw/ming32/WINDOWS USERS PLACE libglf3.a → HERE.txt +0 -0
  38. data/ext/glfw/ming64/WINDOWS USERS PLACE libglf3.a HERE.txt b/data/ext/glfw/ming64/WINDOWS USERS PLACE libglf3.a → HERE.txt +0 -0
  39. data/ext/glfw/monitor.h +0 -29
  40. data/ext/glfw/video_mode.c +0 -60
  41. data/ext/glfw/video_mode.h +0 -21
  42. data/ext/glfw/vulkan.c +0 -48
  43. data/ext/glfw/vulkan.h +0 -16
  44. data/ext/glfw/window.h +0 -87
@@ -1,7 +1,5 @@
1
1
 
2
- lib = File.expand_path("../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "glfw/version"
2
+ require_relative 'lib/glfw/version'
5
3
 
6
4
  Gem::Specification.new do |spec|
7
5
  spec.name = "glfw"
@@ -10,9 +8,9 @@ Gem::Specification.new do |spec|
10
8
  spec.email = ["efreed09@gmail.com"]
11
9
 
12
10
  spec.summary = %q{GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan development on the desktop. It provides a simple API for creating windows, contexts and surfaces, receiving input and events.}
13
- spec.description = %q{This is a high-performance Ruby C-extension for the excellent GLFW 3.2 library.}
14
- spec.homepage = "https://github.com/ForeverZer0/glfw"
15
- spec.license = "MIT"
11
+ spec.description = %q{This is a high-performance Ruby C-extension for the excellent GLFW3 library.}
12
+ spec.homepage = 'https://github.com/ForeverZer0/glfw'
13
+ spec.license = 'MIT'
16
14
 
17
15
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
18
16
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
@@ -22,8 +20,11 @@ Gem::Specification.new do |spec|
22
20
  spec.extensions = ["ext/glfw/extconf.rb"]
23
21
 
24
22
  spec.required_ruby_version = '>= 2.0.0'
23
+ spec.requirements << 'libglfw, v.3.3'
24
+ spec.metadata['msys2_mingw_dependencies'] = 'glfw'
25
+ spec.rdoc_options << '--exclude' << 'ext/*'
25
26
 
26
- spec.add_development_dependency "bundler", "~> 1.16"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rake-compiler", '~> 0'
27
+ spec.add_development_dependency 'yard', '~> 0.9'
28
+ spec.add_development_dependency 'rake', '~> 13.0'
29
+ spec.add_development_dependency 'rake-compiler', '~> 1.1'
29
30
  end
@@ -1,14 +1,4 @@
1
- require_relative "glfw/version"
2
- require_relative "glfw/glfw"
3
-
4
- # GLFW::Window.new(800, 600, "Hello World!") do |window|
5
-
6
- # window.make_current
7
-
8
- # until window.closing?
9
- # GLFW.poll_events
10
- # window.swap_buffers
11
- # end
12
- # end
13
-
14
- # GLFW.terminate
1
+ require_relative 'glfw/version'
2
+ require_relative 'glfw/stubs'
3
+ require_relative 'glfw/constants'
4
+ require_relative 'glfw/glfw'
@@ -0,0 +1,365 @@
1
+
2
+ module GLFW
3
+
4
+ class Cursor
5
+
6
+ ##
7
+ # Standard "arror" cursor shape.
8
+ SHAPE_ARROW = 0x00036001
9
+
10
+ ##
11
+ # I-beam cursor shape, commonly used for text editing.
12
+ SHAPE_IBEAM = 0x00036002
13
+
14
+ ##
15
+ # Cross-hair cursor shape
16
+ SHAPE_CROSSHAIR = 0x00036003
17
+
18
+ ##
19
+ # Hand cursor shape, common for clickable links, move, drag, etc.
20
+ SHAPE_HAND = 0x00036004
21
+
22
+ ##
23
+ # Horizontal-resize cursor shape.
24
+ SHAPE_HRESIZE = 0x00036005
25
+
26
+ ##
27
+ # Vertical-resize cursor shape.
28
+ SHAPE_VRESIZE = 0x00036006
29
+ end
30
+
31
+ class Window
32
+
33
+ # @!group Cursor Mode
34
+
35
+ ##
36
+ # The cursor is visible and behaves normally.
37
+ CURSOR_NORMAL = 0x00034001
38
+
39
+ ##
40
+ # The cursor is invisible when it is over the content area of the window but does not restrict the cursor from leaving.
41
+ CURSOR_HIDDEN = 0x00034002
42
+
43
+ ##
44
+ # The application window hides and grabs the cursor, providing virtual and unlimited cursor movement, useful for implementing 3D camera controls.
45
+ CURSOR_DISABLED = 0x00034003
46
+
47
+ end
48
+
49
+ class GamepadState
50
+
51
+ # @!group Gamepad Axes
52
+
53
+ AXIS_LEFT_X = 0
54
+ AXIS_LEFT_Y = 1
55
+ AXIS_RIGHT_X = 2
56
+ AXIS_RIGHT_Y = 3
57
+ AXIS_LEFT_TRIGGER = 4
58
+ AXIS_RIGHT_TRIGGER = 5
59
+
60
+ # @!group Gamepad Buttons
61
+
62
+ BUTTON_A = 0
63
+ BUTTON_B = 1
64
+ BUTTON_X = 2
65
+ BUTTON_Y = 3
66
+ BUTTON_LEFT_BUMPER = 4
67
+ BUTTON_RIGHT_BUMPER = 5
68
+ BUTTON_BACK = 6
69
+ BUTTON_START = 7
70
+ BUTTON_GUIDE = 8
71
+ BUTTON_LEFT_THUMB = 9
72
+ BUTTON_RIGHT_THUMB = 10
73
+ BUTTON_DPAD_UP = 11
74
+ BUTTON_DPAD_RIGHT = 12
75
+ BUTTON_DPAD_DOWN = 13
76
+ BUTTON_DPAD_LEFT = 14
77
+ BUTTON_CROSS = BUTTON_A
78
+ BUTTON_CIRCLE = BUTTON_B
79
+ BUTTON_SQUARE = BUTTON_X
80
+ BUTTON_TRIANGLE = BUTTON_Y
81
+ end
82
+
83
+ # @!group Input States
84
+
85
+ RELEASE = 0
86
+ PRESS = 1
87
+ REPEAT = 2
88
+
89
+ # @!group Printable Keys
90
+
91
+ KEY_SPACE = 32
92
+ KEY_APOSTROPHE = 39
93
+ KEY_COMMA = 44
94
+ KEY_MINUS = 45
95
+ KEY_PERIOD = 46
96
+ KEY_SLASH = 47
97
+ KEY_0 = 48
98
+ KEY_1 = 49
99
+ KEY_2 = 50
100
+ KEY_3 = 51
101
+ KEY_4 = 52
102
+ KEY_5 = 53
103
+ KEY_6 = 54
104
+ KEY_7 = 55
105
+ KEY_8 = 56
106
+ KEY_9 = 57
107
+ KEY_SEMICOLON = 59
108
+ KEY_EQUAL = 61
109
+ KEY_A = 65
110
+ KEY_B = 66
111
+ KEY_C = 67
112
+ KEY_D = 68
113
+ KEY_E = 69
114
+ KEY_F = 70
115
+ KEY_G = 71
116
+ KEY_H = 72
117
+ KEY_I = 73
118
+ KEY_J = 74
119
+ KEY_K = 75
120
+ KEY_L = 76
121
+ KEY_M = 77
122
+ KEY_N = 78
123
+ KEY_O = 79
124
+ KEY_P = 80
125
+ KEY_Q = 81
126
+ KEY_R = 82
127
+ KEY_S = 83
128
+ KEY_T = 84
129
+ KEY_U = 85
130
+ KEY_V = 86
131
+ KEY_W = 87
132
+ KEY_X = 88
133
+ KEY_Y = 89
134
+ KEY_Z = 90
135
+ KEY_LEFT_BRACKET = 91
136
+ KEY_BACKSLASH = 92
137
+ KEY_RIGHT_BRACKET = 93
138
+ KEY_GRAVE_ACCENT = 96
139
+ KEY_WORLD_1 = 161
140
+ KEY_WORLD_2 = 162
141
+
142
+ # @!group Non-printable Keys
143
+
144
+ # An unknown/invalid key
145
+ KEY_UNKNOWN = -1
146
+ KEY_ESCAPE = 256
147
+ KEY_ENTER = 257
148
+ KEY_TAB = 258
149
+ KEY_BACKSPACE = 259
150
+ KEY_INSERT = 260
151
+ KEY_DELETE = 261
152
+ KEY_RIGHT = 262
153
+ KEY_LEFT = 263
154
+ KEY_DOWN = 264
155
+ KEY_UP = 265
156
+ KEY_PAGE_UP = 266
157
+ KEY_PAGE_DOWN = 267
158
+ KEY_HOME = 268
159
+ KEY_END = 269
160
+ KEY_CAPS_LOCK = 280
161
+ KEY_SCROLL_LOCK = 281
162
+ KEY_NUM_LOCK = 282
163
+ KEY_PRINT_SCREEN = 283
164
+ KEY_PAUSE = 284
165
+ KEY_F1 = 290
166
+ KEY_F2 = 291
167
+ KEY_F3 = 292
168
+ KEY_F4 = 293
169
+ KEY_F5 = 294
170
+ KEY_F6 = 295
171
+ KEY_F7 = 296
172
+ KEY_F8 = 297
173
+ KEY_F9 = 298
174
+ KEY_F10 = 299
175
+ KEY_F11 = 300
176
+ KEY_F12 = 301
177
+ KEY_F13 = 302
178
+ KEY_F14 = 303
179
+ KEY_F15 = 304
180
+ KEY_F16 = 305
181
+ KEY_F17 = 306
182
+ KEY_F18 = 307
183
+ KEY_F19 = 308
184
+ KEY_F20 = 309
185
+ KEY_F21 = 310
186
+ KEY_F22 = 311
187
+ KEY_F23 = 312
188
+ KEY_F24 = 313
189
+ KEY_F25 = 314
190
+ KEY_KP_0 = 320
191
+ KEY_KP_1 = 321
192
+ KEY_KP_2 = 322
193
+ KEY_KP_3 = 323
194
+ KEY_KP_4 = 324
195
+ KEY_KP_5 = 325
196
+ KEY_KP_6 = 326
197
+ KEY_KP_7 = 327
198
+ KEY_KP_8 = 328
199
+ KEY_KP_9 = 329
200
+ KEY_KP_DECIMAL = 330
201
+ KEY_KP_DIVIDE = 331
202
+ KEY_KP_MULTIPLY = 332
203
+ KEY_KP_SUBTRACT = 333
204
+ KEY_KP_ADD = 334
205
+ KEY_KP_ENTER = 335
206
+ KEY_KP_EQUAL = 336
207
+ KEY_LEFT_SHIFT = 340
208
+ KEY_LEFT_CONTROL = 341
209
+ KEY_LEFT_ALT = 342
210
+ KEY_LEFT_SUPER = 343
211
+ KEY_RIGHT_SHIFT = 344
212
+ KEY_RIGHT_CONTROL = 345
213
+ KEY_RIGHT_ALT = 346
214
+ KEY_RIGHT_SUPER = 347
215
+ KEY_MENU = 348
216
+
217
+ # @!group Modifier Keys
218
+
219
+ MOD_SHIFT = 0x0001
220
+ MOD_CONTROL = 0x0002
221
+ MOD_ALT = 0x0004
222
+ MOD_SUPER = 0x0008
223
+ MOD_CAPS_LOCK = 0x0010
224
+ MOD_NUM_LOCK = 0x0020
225
+
226
+ # @!group Joystick Hats
227
+
228
+ HAT_CENTERED = 0
229
+ HAT_UP = 1
230
+ HAT_RIGHT = 2
231
+ HAT_DOWN = 4
232
+ HAT_LEFT = 8
233
+ HAT_RIGHT_UP = HAT_RIGHT | HAT_UP
234
+ HAT_RIGHT_DOWN = HAT_RIGHT | HAT_DOWN
235
+ HAT_LEFT_UP = HAT_LEFT | HAT_UP
236
+ HAT_LEFT_DOWN = HAT_LEFT | HAT_DOWN
237
+
238
+ # @!group Mouse Buttons
239
+
240
+ MOUSE_BUTTON_1 = 0
241
+ MOUSE_BUTTON_2 = 1
242
+ MOUSE_BUTTON_3 = 2
243
+ MOUSE_BUTTON_4 = 3
244
+ MOUSE_BUTTON_5 = 4
245
+ MOUSE_BUTTON_6 = 5
246
+ MOUSE_BUTTON_7 = 6
247
+ MOUSE_BUTTON_8 = 7
248
+ MOUSE_BUTTON_LAST = MOUSE_BUTTON_8
249
+ MOUSE_BUTTON_LEFT = MOUSE_BUTTON_1
250
+ MOUSE_BUTTON_RIGHT = MOUSE_BUTTON_2
251
+ MOUSE_BUTTON_MIDDLE = MOUSE_BUTTON_3
252
+
253
+ # @!group Joystick Identifiers
254
+
255
+ JOYSTICK_1 = 0
256
+ JOYSTICK_2 = 1
257
+ JOYSTICK_3 = 2
258
+ JOYSTICK_4 = 3
259
+ JOYSTICK_5 = 4
260
+ JOYSTICK_6 = 5
261
+ JOYSTICK_7 = 6
262
+ JOYSTICK_8 = 7
263
+ JOYSTICK_9 = 8
264
+ JOYSTICK_10 = 9
265
+ JOYSTICK_11 = 10
266
+ JOYSTICK_12 = 11
267
+ JOYSTICK_13 = 12
268
+ JOYSTICK_14 = 13
269
+ JOYSTICK_15 = 14
270
+ JOYSTICK_16 = 15
271
+
272
+ # @!group Error Codes
273
+
274
+ ERR_NOT_INITIALIZED = 0x00010001
275
+ ERR_NO_CURRENT_CONTEXT = 0x00010002
276
+ ERR_INVALID_ENUM = 0x00010003
277
+ ERR_INVALID_VALUE = 0x00010004
278
+ ERR_OUT_OF_MEMORY = 0x00010005
279
+ ERR_API_UNAVAILABLE = 0x00010006
280
+ ERR_VERSION_UNAVAILABLE = 0x00010007
281
+ ERR_PLATFORM_ERROR = 0x00010008
282
+ ERR_FORMAT_UNAVAILABLE = 0x00010009
283
+ ERR_NO_WINDOW_CONTEXT = 0x0001000A
284
+
285
+ # @!group Window Hints
286
+
287
+ HINT_RESIZABLE = 0x00020003
288
+ HINT_VISIBLE = 0x00020004
289
+ HINT_DECORATED = 0x00020005
290
+ HINT_AUTO_ICONIFY = 0x00020006
291
+ HINT_FLOATING = 0x00020007
292
+ HINT_MAXIMIZED = 0x00020008
293
+ HINT_CENTER_CURSOR = 0x00020009
294
+ HINT_TRANSPARENT_FRAMEBUFFER = 0x0002000A
295
+ HINT_FOCUS_ON_SHOW = 0x0002000C
296
+ HINT_SCALE_TO_MONITOR = 0x0002200C
297
+ HINT_RED_BITS = 0x00021001
298
+ HINT_GREEN_BITS = 0x00021002
299
+ HINT_BLUE_BITS = 0x00021003
300
+ HINT_ALPHA_BITS = 0x00021004
301
+ HINT_DEPTH_BITS = 0x00021005
302
+ HINT_STENCIL_BITS = 0x00021006
303
+ HINT_ACCUM_RED_BITS = 0x00021007
304
+ HINT_ACCUM_GREEN_BITS = 0x00021008
305
+ HINT_ACCUM_BLUE_BITS = 0x00021009
306
+ HINT_ACCUM_ALPHA_BITS = 0x0002100A
307
+ HINT_AUX_BUFFERS = 0x0002100B
308
+ HINT_SAMPLES = 0x0002100D
309
+ HINT_REFRESH_RATE = 0x0002100F
310
+ HINT_STEREO = 0x0002100C
311
+ HINT_SRGB_CAPABLE = 0x0002100E
312
+ HINT_DOUBLEBUFFER = 0x00021010
313
+ HINT_CLIENT_API = 0x00022001
314
+ HINT_CONTEXT_VERSION_MAJOR = 0x00022002
315
+ HINT_CONTEXT_VERSION_MINOR = 0x00022003
316
+ HINT_CONTEXT_REVISION = 0x00022004
317
+ HINT_CONTEXT_ROBUSTNESS = 0x00022005
318
+ HINT_CONTEXT_RELEASE_BEHAVIOR = 0x00022009
319
+ HINT_OPENGL_FORWARD_COMPAT = 0x00022006
320
+ HINT_OPENGL_DEBUG_CONTEXT = 0x00022007
321
+ HINT_OPENGL_PROFILE = 0x00022008
322
+ HINT_COCOA_RETINA_FRAMEBUFFER = 0x00023001
323
+ HINT_COCOA_FRAME_NAME = 0x00023002
324
+ HINT_COCOA_GRAPHICS_SWITCHING = 0x00023003
325
+ HINT_X11_CLASS_NAME = 0x00024001
326
+ HINT_X11_INSTANCE_NAME = 0x00024002
327
+ HINT_CONTEXT_NO_ERROR = 0x0002200A
328
+ HINT_CONTEXT_CREATION_API = 0x0002200B
329
+
330
+ # @!group Values for HINT_RELEASE_BEHAVIOR
331
+
332
+ RELEASE_BEHAVIOR_ANY = 0
333
+ RELEASE_BEHAVIOR_FLUSH = 0x00035001
334
+ RELEASE_BEHAVIOR_NONE = 0x00035002
335
+
336
+ # @!group Values for HINT_CONTEXT_CREATION_API
337
+
338
+ CONTEXT_API_NATIVE = 0x00036001
339
+ CONTEXT_API_EGL = 0x00036002
340
+ CONTEXT_API_OSMESA = 0x00036003
341
+
342
+ # @!group Values for HINT_CLIENT_API
343
+
344
+ API_NONE = 0
345
+ API_OPENGL = 0x00030001
346
+ API_OPENGL_ES = 0x00030002
347
+
348
+ # @!group Values for HINT_OPENGL_PROFILE
349
+
350
+ PROFILE_OPENGL_ANY = 0
351
+ PROFILE_OPENGL_CORE = 0x00032001
352
+ PROFILE_OPENGL_COMPAT = 0x00032002
353
+
354
+ # @!group Value for HINT_CONTEXT_ROBUSTNESS
355
+
356
+ ROBUSTNESS_NONE = 0
357
+ ROBUSTNESS_NO_RESET_NOTIFICATION = 0x00031001
358
+ ROBUSTNESS_LOSE_CONTEXT_ON_RESET = 0x00031002
359
+
360
+ # @!group Library initialization hints
361
+
362
+ JOYSTICK_HAT_BUTTONS = 0x00050001
363
+ COCOA_CHDIR_RESOURCES = 0x00051001
364
+ COCOA_MENUBAR = 0x00051002
365
+ end
@@ -0,0 +1,234 @@
1
+
2
+ require_relative 'stubs/window'
3
+ require_relative 'stubs/image'
4
+ require_relative 'stubs/gamepad_state'
5
+ require_relative 'stubs/cursor'
6
+ require_relative 'stubs/joystick'
7
+ require_relative 'stubs/monitor'
8
+ require_relative 'stubs/video_mode'
9
+
10
+ module GLFW
11
+
12
+ class << self
13
+
14
+ ##
15
+ # Initializes the GLFW library. This method must be called before attempting to use any other feature, or
16
+ # after a call to {terminate} was made.
17
+ #
18
+ # @overload init
19
+ # When called without a block, returns a value indicating if library initialized successfully.
20
+ # @return [Boolean] `true` if library initialized successfully, otherwise `false`.
21
+ # @note Calling this method while library is already initialized is a no-op and returns `true` immediately.
22
+ # @overload init(&block)
23
+ # When called with a block, yields and automatically calls {terminate} when the block exits.
24
+ # @return [void]
25
+ #
26
+ # @see terminate
27
+ # @see
28
+ def init
29
+ end
30
+
31
+ ##
32
+ # Destroys the all windows, their contexts, cursors, etc., restoring the library to an uninitialized state.
33
+ #
34
+ # @return [void]
35
+ # @see init
36
+ def terminate
37
+ end
38
+
39
+ ##
40
+ # Sets hints that affect how the library behaves until termination.
41
+ #
42
+ # @param hint [Integer] A value indicating the hint to change.
43
+ # @param value [Integer,Boolean,String] The desired value to set for this hint.
44
+ #
45
+ # @return [void]
46
+ # @see JOYSTICK_HAT_BUTTONS
47
+ # @see COCOA_CHDIR_RESOURCES
48
+ # @see COCOA_MENUBAR
49
+ def init_hint(hint, value)
50
+ end
51
+
52
+ ##
53
+ # Returns whether the specified API extension is supported by the current OpenGL or OpenGL ES context. It searches
54
+ # both for client API extension and context creation API extensions.
55
+ #
56
+ # A context must be current on the calling thread.
57
+ #
58
+ # @param extenion_name [String] The name of an extension to query.
59
+ # @return [Boolean] `true` if extension is supported, otherwise `false`.
60
+ def supported?(extension_name)
61
+ end
62
+
63
+ ##
64
+ # This function sets the swap interval for the current OpenGL or OpenGL ES context, i.e. the number of
65
+ # screen updates to wait from the time {Window.swap_buffers} was called before swapping the buffers and
66
+ # returning. This is sometimes called vertical synchronization, vertical retrace synchronization or just vsync.
67
+ #
68
+ # @param interval [Integer] The minimum number of screen updates to wait for until the buffers are swapped by {Window.swap_buffers}
69
+ #
70
+ # @return [void]
71
+ def swap_interval(interval)
72
+ end
73
+
74
+ ##
75
+ # Processes only those events that are already in the event queue and then returns immediately.
76
+ # Processing events will cause the window and input callbacks associated with those events to be called.
77
+ # @return [void]
78
+ def poll_events
79
+ end
80
+
81
+ ##
82
+ # puts the calling thread to sleep until at least one event is available in the event queue.
83
+ # Once one or more events are available, it behaves exactly like {poll_events}.
84
+ # @return [void]
85
+ def wait_events
86
+ end
87
+
88
+ ##
89
+ # Posts an empty event from the current thread to the event queue, causing {wait_vents} or {events_timeout} to return.
90
+ # @return [void]
91
+ def post_empty_event
92
+ end
93
+
94
+ ##
95
+ # Puts the calling thread to sleep until at least one event is available in the event queue, or until the specified
96
+ # timeout is reached. If one or more events are available, it behaves exactly like {poll_events}.
97
+ #
98
+ # @param timeout [Float] The maximum amount of time, in seconds, to wait.
99
+ # @return [void]
100
+ def event_timeout(timeout)
101
+ end
102
+
103
+ ##
104
+ # Returns a function pointer for the specified OpenGL function, as a [Fiddle::Pointer](https://ruby-doc.org/stdlib-2.5.3/libdoc/fiddle/rdoc/Fiddle/Pointer.html).
105
+ #
106
+ # @param name [String] The name of an OpenGL function.
107
+ #
108
+ # @return [Fiddle::Pointer] a function pointer.
109
+ def proc_address(name)
110
+ end
111
+
112
+ ##
113
+ # Convenience method for importing OpenGL functions using Fiddle (standard library since Ruby 1.9)
114
+ #
115
+ # @param name [String] The name of an OpenGL function.
116
+ # @param args [Array<Integer>] An array describing the argument prototypes, same as when creating a [Fiddle::Function](https://ruby-doc.org/stdlib-2.5.3/libdoc/fiddle/rdoc/Fiddle/Function.html#method-c-new).
117
+ # @param return_type [Integer] A value describing the argument prototypes, same as when creating a [Fiddle::Function](https://ruby-doc.org/stdlib-2.5.3/libdoc/fiddle/rdoc/Fiddle/Function.html#method-c-new).
118
+ #
119
+ # @return [Fiddle::Function]
120
+ # @see https://ruby-doc.org/stdlib-2.5.3/libdoc/fiddle/rdoc/Fiddle/Function.html
121
+ def import(name, args, return_type)
122
+ end
123
+
124
+ ##
125
+ # Returns the name of the specified printable key, encoded as UTF-8. This is typically the character that key
126
+ # would produce without any modifier keys, intended for displaying key bindings to the user. For dead keys, it
127
+ # is typically the diacritic it would add to a character.
128
+ #
129
+ # @param key [Integer] The key to query.
130
+ # @param scancode [Integer] The scancode of the key to query.
131
+ #
132
+ # @note When `scancode` is specified, the `key` argument is ignored.
133
+ #
134
+ # @return [String?] The UTF-8 encoded, layout-specific name of the key, or `nil`.
135
+ def key_name(key, scancode = 0)
136
+ end
137
+
138
+ ##
139
+ # returns the platform-specific scancode of the specified key.
140
+ #
141
+ # @param key [Integer] The key to query.
142
+ #
143
+ # @return [Integer] the platform-specific scancode for the key, or `-1` if an error occurred.
144
+ def scancode(key)
145
+ end
146
+
147
+ ##
148
+ # @return [String] the version of the native GLFW library, in "MAJOR.MINOR.REVISION" format.
149
+ attr_reader :version
150
+
151
+ ##
152
+ # @return [String] a version string, including information such as driver version, etc.
153
+ attr_reader :version_str
154
+
155
+ ##
156
+ # @return [Integer] the current value of the raw timer, measured in 1 / {timer_frequency) seconds.
157
+ attr_reader :timer_value
158
+
159
+ ##
160
+ # @return [Integer] the frequency, in Hz, of the raw timer.
161
+ attr_reader :timer_frequency
162
+
163
+ ##
164
+ # The current time measured by GLFW, in seconds.
165
+ # Unless the time has been set using glfwSetTime it measures time elapsed since GLFW was initialized.
166
+ #
167
+ # The resolution of the timer is system dependent, but is usually on the order of a few micro- or nanoseconds.
168
+ # It uses the highest-resolution monotonic time source on each supported platform.
169
+ #
170
+ # @return [Float] the current GLFW time, in seconds.
171
+ attr_accessor :time
172
+ end
173
+
174
+ ##
175
+ # Describes a 2-component floating point vector.
176
+ class Vec2
177
+
178
+ ##
179
+ # @return [Float] the position on the x-axis.
180
+ attr_accessor :x
181
+
182
+ ##
183
+ # @return [Float] the position on the y-axis.
184
+ attr_accessor :y
185
+
186
+ ##
187
+ # Creates a new instance of the {Vec2} class.
188
+ # @param x [Float] The position on the x-axis.
189
+ # @param y [Float] The position on the y-axis.
190
+ def initialize(x, y)
191
+ end
192
+
193
+ end
194
+
195
+ ##
196
+ # Descibes the location of an object in 2D space.
197
+ class Point
198
+
199
+ ##
200
+ # @return [Integer] the position on the x-axis.
201
+ attr_accessor :x
202
+
203
+ ##
204
+ # @return [Integer] the position on the y-axis.
205
+ attr_accessor :y
206
+
207
+ ##
208
+ # Creates a new instance of the {Point} class.
209
+ # @param x [Integer] The position on the x-axis.
210
+ # @param y [Integer] The position on the y-axis.
211
+ def initialize(x, y)
212
+ end
213
+ end
214
+
215
+ ##
216
+ # Describes the dimensions of an object in 2D space.
217
+ class Size
218
+
219
+ ##
220
+ # @return [Integer] the dimension on the x-axis.
221
+ attr_accessor :width
222
+
223
+ ##
224
+ # @return [Integer] the dimension on the y-axis.
225
+ attr_accessor :height
226
+
227
+ ##
228
+ # Creates a new instance of the {Size} class.
229
+ # @param width [Integer] The dimension on the x-axis.
230
+ # @param height [Integer] The dimension on the y-axis.
231
+ def initialize(width, height)
232
+ end
233
+ end
234
+ end