opengl-bindings2 2.0.3 → 2.0.4

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.
data/lib/glfw.rb CHANGED
@@ -1,759 +1,759 @@
1
- # -*- coding: utf-8 -*-
2
- # A GLFW wrapper (for version 3.4)
3
- require 'fiddle/import'
4
-
5
- module GLFW
6
-
7
- extend Fiddle::Importer
8
-
9
- # defines
10
- GLFW_TRUE = 1 # Available since GLFW 3.2
11
- GLFW_FALSE = 0 # Available since GLFW 3.2
12
-
13
- GLFW_RELEASE = 0
14
- GLFW_PRESS = 1
15
- GLFW_REPEAT = 2
16
-
17
- GLFW_HAT_CENTERED = 0 # Available since GLFW 3.3
18
- GLFW_HAT_UP = 1 # Available since GLFW 3.3
19
- GLFW_HAT_RIGHT = 2 # Available since GLFW 3.3
20
- GLFW_HAT_DOWN = 4 # Available since GLFW 3.3
21
- GLFW_HAT_LEFT = 8 # Available since GLFW 3.3
22
- GLFW_HAT_RIGHT_UP = (GLFW_HAT_RIGHT | GLFW_HAT_UP) # Available since GLFW 3.3
23
- GLFW_HAT_RIGHT_DOWN = (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) # Available since GLFW 3.3
24
- GLFW_HAT_LEFT_UP = (GLFW_HAT_LEFT | GLFW_HAT_UP) # Available since GLFW 3.3
25
- GLFW_HAT_LEFT_DOWN = (GLFW_HAT_LEFT | GLFW_HAT_DOWN) # Available since GLFW 3.3
26
-
27
- GLFW_KEY_UNKNOWN = -1
28
-
29
- GLFW_KEY_SPACE = 32
30
- GLFW_KEY_APOSTROPHE = 39 # '
31
- GLFW_KEY_COMMA = 44 # ,
32
- GLFW_KEY_MINUS = 45 # -
33
- GLFW_KEY_PERIOD = 46 # .
34
- GLFW_KEY_SLASH = 47 # /
35
- GLFW_KEY_0 = 48
36
- GLFW_KEY_1 = 49
37
- GLFW_KEY_2 = 50
38
- GLFW_KEY_3 = 51
39
- GLFW_KEY_4 = 52
40
- GLFW_KEY_5 = 53
41
- GLFW_KEY_6 = 54
42
- GLFW_KEY_7 = 55
43
- GLFW_KEY_8 = 56
44
- GLFW_KEY_9 = 57
45
- GLFW_KEY_SEMICOLON = 59 # ;
46
- GLFW_KEY_EQUAL = 61 # =
47
- GLFW_KEY_A = 65
48
- GLFW_KEY_B = 66
49
- GLFW_KEY_C = 67
50
- GLFW_KEY_D = 68
51
- GLFW_KEY_E = 69
52
- GLFW_KEY_F = 70
53
- GLFW_KEY_G = 71
54
- GLFW_KEY_H = 72
55
- GLFW_KEY_I = 73
56
- GLFW_KEY_J = 74
57
- GLFW_KEY_K = 75
58
- GLFW_KEY_L = 76
59
- GLFW_KEY_M = 77
60
- GLFW_KEY_N = 78
61
- GLFW_KEY_O = 79
62
- GLFW_KEY_P = 80
63
- GLFW_KEY_Q = 81
64
- GLFW_KEY_R = 82
65
- GLFW_KEY_S = 83
66
- GLFW_KEY_T = 84
67
- GLFW_KEY_U = 85
68
- GLFW_KEY_V = 86
69
- GLFW_KEY_W = 87
70
- GLFW_KEY_X = 88
71
- GLFW_KEY_Y = 89
72
- GLFW_KEY_Z = 90
73
- GLFW_KEY_LEFT_BRACKET = 91 # [
74
- GLFW_KEY_BACKSLASH = 92 # \
75
- GLFW_KEY_RIGHT_BRACKET = 93 # ]
76
- GLFW_KEY_GRAVE_ACCENT = 96 # `
77
- GLFW_KEY_WORLD_1 = 161 # non-US #1
78
- GLFW_KEY_WORLD_2 = 162 # non-US #2
79
-
80
- GLFW_KEY_ESCAPE = 256
81
- GLFW_KEY_ENTER = 257
82
- GLFW_KEY_TAB = 258
83
- GLFW_KEY_BACKSPACE = 259
84
- GLFW_KEY_INSERT = 260
85
- GLFW_KEY_DELETE = 261
86
- GLFW_KEY_RIGHT = 262
87
- GLFW_KEY_LEFT = 263
88
- GLFW_KEY_DOWN = 264
89
- GLFW_KEY_UP = 265
90
- GLFW_KEY_PAGE_UP = 266
91
- GLFW_KEY_PAGE_DOWN = 267
92
- GLFW_KEY_HOME = 268
93
- GLFW_KEY_END = 269
94
- GLFW_KEY_CAPS_LOCK = 280
95
- GLFW_KEY_SCROLL_LOCK = 281
96
- GLFW_KEY_NUM_LOCK = 282
97
- GLFW_KEY_PRINT_SCREEN = 283
98
- GLFW_KEY_PAUSE = 284
99
- GLFW_KEY_F1 = 290
100
- GLFW_KEY_F2 = 291
101
- GLFW_KEY_F3 = 292
102
- GLFW_KEY_F4 = 293
103
- GLFW_KEY_F5 = 294
104
- GLFW_KEY_F6 = 295
105
- GLFW_KEY_F7 = 296
106
- GLFW_KEY_F8 = 297
107
- GLFW_KEY_F9 = 298
108
- GLFW_KEY_F10 = 299
109
- GLFW_KEY_F11 = 300
110
- GLFW_KEY_F12 = 301
111
- GLFW_KEY_F13 = 302
112
- GLFW_KEY_F14 = 303
113
- GLFW_KEY_F15 = 304
114
- GLFW_KEY_F16 = 305
115
- GLFW_KEY_F17 = 306
116
- GLFW_KEY_F18 = 307
117
- GLFW_KEY_F19 = 308
118
- GLFW_KEY_F20 = 309
119
- GLFW_KEY_F21 = 310
120
- GLFW_KEY_F22 = 311
121
- GLFW_KEY_F23 = 312
122
- GLFW_KEY_F24 = 313
123
- GLFW_KEY_F25 = 314
124
- GLFW_KEY_KP_0 = 320
125
- GLFW_KEY_KP_1 = 321
126
- GLFW_KEY_KP_2 = 322
127
- GLFW_KEY_KP_3 = 323
128
- GLFW_KEY_KP_4 = 324
129
- GLFW_KEY_KP_5 = 325
130
- GLFW_KEY_KP_6 = 326
131
- GLFW_KEY_KP_7 = 327
132
- GLFW_KEY_KP_8 = 328
133
- GLFW_KEY_KP_9 = 329
134
- GLFW_KEY_KP_DECIMAL = 330
135
- GLFW_KEY_KP_DIVIDE = 331
136
- GLFW_KEY_KP_MULTIPLY = 332
137
- GLFW_KEY_KP_SUBTRACT = 333
138
- GLFW_KEY_KP_ADD = 334
139
- GLFW_KEY_KP_ENTER = 335
140
- GLFW_KEY_KP_EQUAL = 336
141
- GLFW_KEY_LEFT_SHIFT = 340
142
- GLFW_KEY_LEFT_CONTROL = 341
143
- GLFW_KEY_LEFT_ALT = 342
144
- GLFW_KEY_LEFT_SUPER = 343
145
- GLFW_KEY_RIGHT_SHIFT = 344
146
- GLFW_KEY_RIGHT_CONTROL = 345
147
- GLFW_KEY_RIGHT_ALT = 346
148
- GLFW_KEY_RIGHT_SUPER = 347
149
- GLFW_KEY_MENU = 348
150
- GLFW_KEY_LAST = GLFW_KEY_MENU
151
-
152
- GLFW_MOD_SHIFT = 0x0001
153
- GLFW_MOD_CONTROL = 0x0002
154
- GLFW_MOD_ALT = 0x0004
155
- GLFW_MOD_SUPER = 0x0008
156
- GLFW_MOD_CAPS_LOCK = 0x0010 # Available since GLFW 3.3
157
- GLFW_MOD_NUM_LOCK = 0x0020 # Available since GLFW 3.3
158
-
159
- GLFW_MOUSE_BUTTON_1 = 0
160
- GLFW_MOUSE_BUTTON_2 = 1
161
- GLFW_MOUSE_BUTTON_3 = 2
162
- GLFW_MOUSE_BUTTON_4 = 3
163
- GLFW_MOUSE_BUTTON_5 = 4
164
- GLFW_MOUSE_BUTTON_6 = 5
165
- GLFW_MOUSE_BUTTON_7 = 6
166
- GLFW_MOUSE_BUTTON_8 = 7
167
- GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8
168
- GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1
169
- GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2
170
- GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3
171
-
172
- GLFW_JOYSTICK_1 = 0
173
- GLFW_JOYSTICK_2 = 1
174
- GLFW_JOYSTICK_3 = 2
175
- GLFW_JOYSTICK_4 = 3
176
- GLFW_JOYSTICK_5 = 4
177
- GLFW_JOYSTICK_6 = 5
178
- GLFW_JOYSTICK_7 = 6
179
- GLFW_JOYSTICK_8 = 7
180
- GLFW_JOYSTICK_9 = 8
181
- GLFW_JOYSTICK_10 = 9
182
- GLFW_JOYSTICK_11 = 10
183
- GLFW_JOYSTICK_12 = 11
184
- GLFW_JOYSTICK_13 = 12
185
- GLFW_JOYSTICK_14 = 13
186
- GLFW_JOYSTICK_15 = 14
187
- GLFW_JOYSTICK_16 = 15
188
- GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16
189
-
190
- GLFW_GAMEPAD_BUTTON_A = 0 # Available since GLFW 3.3
191
- GLFW_GAMEPAD_BUTTON_B = 1 # Available since GLFW 3.3
192
- GLFW_GAMEPAD_BUTTON_X = 2 # Available since GLFW 3.3
193
- GLFW_GAMEPAD_BUTTON_Y = 3 # Available since GLFW 3.3
194
- GLFW_GAMEPAD_BUTTON_LEFT_BUMPER = 4 # Available since GLFW 3.3
195
- GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER = 5 # Available since GLFW 3.3
196
- GLFW_GAMEPAD_BUTTON_BACK = 6 # Available since GLFW 3.3
197
- GLFW_GAMEPAD_BUTTON_START = 7 # Available since GLFW 3.3
198
- GLFW_GAMEPAD_BUTTON_GUIDE = 8 # Available since GLFW 3.3
199
- GLFW_GAMEPAD_BUTTON_LEFT_THUMB = 9 # Available since GLFW 3.3
200
- GLFW_GAMEPAD_BUTTON_RIGHT_THUMB = 10 # Available since GLFW 3.3
201
- GLFW_GAMEPAD_BUTTON_DPAD_UP = 11 # Available since GLFW 3.3
202
- GLFW_GAMEPAD_BUTTON_DPAD_RIGHT = 12 # Available since GLFW 3.3
203
- GLFW_GAMEPAD_BUTTON_DPAD_DOWN = 13 # Available since GLFW 3.3
204
- GLFW_GAMEPAD_BUTTON_DPAD_LEFT = 14 # Available since GLFW 3.3
205
- GLFW_GAMEPAD_BUTTON_LAST = GLFW_GAMEPAD_BUTTON_DPAD_LEFT # Available since GLFW 3.3
206
-
207
- GLFW_GAMEPAD_BUTTON_CROSS = GLFW_GAMEPAD_BUTTON_A # Available since GLFW 3.3
208
- GLFW_GAMEPAD_BUTTON_CIRCLE = GLFW_GAMEPAD_BUTTON_B # Available since GLFW 3.3
209
- GLFW_GAMEPAD_BUTTON_SQUARE = GLFW_GAMEPAD_BUTTON_X # Available since GLFW 3.3
210
- GLFW_GAMEPAD_BUTTON_TRIANGLE = GLFW_GAMEPAD_BUTTON_Y # Available since GLFW 3.3
211
-
212
- GLFW_GAMEPAD_AXIS_LEFT_X = 0 # Available since GLFW 3.3
213
- GLFW_GAMEPAD_AXIS_LEFT_Y = 1 # Available since GLFW 3.3
214
- GLFW_GAMEPAD_AXIS_RIGHT_X = 2 # Available since GLFW 3.3
215
- GLFW_GAMEPAD_AXIS_RIGHT_Y = 3 # Available since GLFW 3.3
216
- GLFW_GAMEPAD_AXIS_LEFT_TRIGGER = 4 # Available since GLFW 3.3
217
- GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER = 5 # Available since GLFW 3.3
218
- GLFW_GAMEPAD_AXIS_LAST = GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER # Available since GLFW 3.3
219
-
220
- GLFW_NO_ERROR = 0 # Available since GLFW 3.3
221
- GLFW_NOT_INITIALIZED = 0x00010001
222
- GLFW_NO_CURRENT_CONTEXT = 0x00010002
223
- GLFW_INVALID_ENUM = 0x00010003
224
- GLFW_INVALID_VALUE = 0x00010004
225
- GLFW_OUT_OF_MEMORY = 0x00010005
226
- GLFW_API_UNAVAILABLE = 0x00010006
227
- GLFW_VERSION_UNAVAILABLE = 0x00010007
228
- GLFW_PLATFORM_ERROR = 0x00010008
229
- GLFW_FORMAT_UNAVAILABLE = 0x00010009
230
- GLFW_NO_WINDOW_CONTEXT = 0x0001000A # Available since GLFW 3.2
231
- GLFW_CURSOR_UNAVAILABLE = 0x0001000B # Available since GLFW 3.4
232
- GLFW_FEATURE_UNAVAILABLE = 0x0001000C # Available since GLFW 3.4
233
- GLFW_FEATURE_UNIMPLEMENTED = 0x0001000D # Available since GLFW 3.4
234
- GLFW_PLATFORM_UNAVAILABLE = 0x0001000E # Available since GLFW 3.4
235
-
236
- GLFW_FOCUSED = 0x00020001
237
- GLFW_ICONIFIED = 0x00020002
238
- GLFW_RESIZABLE = 0x00020003
239
- GLFW_VISIBLE = 0x00020004
240
- GLFW_DECORATED = 0x00020005
241
- GLFW_AUTO_ICONIFY = 0x00020006 # Available since GLFW 3.1
242
- GLFW_FLOATING = 0x00020007 # Available since GLFW 3.1
243
- GLFW_MAXIMIZED = 0x00020008 # Available since GLFW 3.2
244
- GLFW_CENTER_CURSOR = 0x00020009 # Available since GLFW 3.3
245
- GLFW_TRANSPARENT_FRAMEBUFFER = 0x0002000A # Available since GLFW 3.3
246
- GLFW_HOVERED = 0x0002000B # Available since GLFW 3.3
247
- GLFW_FOCUS_ON_SHOW = 0x0002000C # Available since GLFW 3.3
248
- GLFW_MOUSE_PASSTHROUGH = 0x0002000D # Available since GLFW 3.4
249
- GLFW_POSITION_X = 0x0002000E # Available since GLFW 3.4
250
- GLFW_POSITION_Y = 0x0002000F # Available since GLFW 3.4
251
-
252
- GLFW_RED_BITS = 0x00021001
253
- GLFW_GREEN_BITS = 0x00021002
254
- GLFW_BLUE_BITS = 0x00021003
255
- GLFW_ALPHA_BITS = 0x00021004
256
- GLFW_DEPTH_BITS = 0x00021005
257
- GLFW_STENCIL_BITS = 0x00021006
258
- GLFW_ACCUM_RED_BITS = 0x00021007
259
- GLFW_ACCUM_GREEN_BITS = 0x00021008
260
- GLFW_ACCUM_BLUE_BITS = 0x00021009
261
- GLFW_ACCUM_ALPHA_BITS = 0x0002100A
262
- GLFW_AUX_BUFFERS = 0x0002100B
263
- GLFW_STEREO = 0x0002100C
264
- GLFW_SAMPLES = 0x0002100D
265
- GLFW_SRGB_CAPABLE = 0x0002100E
266
- GLFW_REFRESH_RATE = 0x0002100F
267
- GLFW_DOUBLEBUFFER = 0x00021010
268
-
269
- GLFW_CLIENT_API = 0x00022001
270
- GLFW_CONTEXT_VERSION_MAJOR = 0x00022002
271
- GLFW_CONTEXT_VERSION_MINOR = 0x00022003
272
- GLFW_CONTEXT_REVISION = 0x00022004
273
- GLFW_CONTEXT_ROBUSTNESS = 0x00022005
274
- GLFW_OPENGL_FORWARD_COMPAT = 0x00022006
275
- GLFW_CONTEXT_DEBUG = 0x00022007 # Renamed from GLFW_OPENGL_DEBUG_CONTEXT since GLFW 3.4
276
- GLFW_OPENGL_DEBUG_CONTEXT = GLFW_CONTEXT_DEBUG # Legacy name for compatibility added since GLFW 3.4
277
- GLFW_OPENGL_PROFILE = 0x00022008
278
- GLFW_CONTEXT_RELEASE_BEHAVIOR = 0x00022009
279
- GLFW_CONTEXT_NO_ERROR = 0x0002200A
280
- GLFW_CONTEXT_CREATION_API = 0x0002200B # Available since GLFW 3.2
281
- GLFW_SCALE_TO_MONITOR = 0x0002200C # Available since GLFW 3.3
282
- GLFW_SCALE_FRAMEBUFFER = 0x0002200D # Available since GLFW 3.4
283
-
284
- GLFW_COCOA_RETINA_FRAMEBUFFER = 0x00023001 # Available since GLFW 3.3
285
- GLFW_COCOA_FRAME_NAME = 0x00023002 # Available since GLFW 3.3
286
- GLFW_COCOA_GRAPHICS_SWITCHING = 0x00023003 # Available since GLFW 3.3
287
-
288
- GLFW_X11_CLASS_NAME = 0x00024001 # Available since GLFW 3.3
289
- GLFW_X11_INSTANCE_NAME = 0x00024002 # Available since GLFW 3.3
290
- GLFW_WIN32_KEYBOARD_MENU = 0x00025001 # Available since GLFW 3.4
291
- GLFW_WIN32_SHOWDEFAULT = 0x00025002 # Available since GLFW 3.4
292
- GLFW_WAYLAND_APP_ID = 0x00026001 # Available since GLFW 3.4
293
-
294
- GLFW_NO_API = 0 # Available since GLFW 3.2
295
- GLFW_OPENGL_API = 0x00030001
296
- GLFW_OPENGL_ES_API = 0x00030002
297
-
298
- GLFW_NO_ROBUSTNESS = 0
299
- GLFW_NO_RESET_NOTIFICATION = 0x00031001
300
- GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002
301
-
302
- GLFW_OPENGL_ANY_PROFILE = 0
303
- GLFW_OPENGL_CORE_PROFILE = 0x00032001
304
- GLFW_OPENGL_COMPAT_PROFILE = 0x00032002
305
-
306
- GLFW_CURSOR = 0x00033001
307
- GLFW_STICKY_KEYS = 0x00033002
308
- GLFW_STICKY_MOUSE_BUTTONS = 0x00033003
309
- GLFW_LOCK_KEY_MODS = 0x00033004 # Available since GLFW 3.3
310
- GLFW_RAW_MOUSE_MOTION = 0x00033005 # Available since GLFW 3.3
311
-
312
- GLFW_CURSOR_NORMAL = 0x00034001
313
- GLFW_CURSOR_HIDDEN = 0x00034002
314
- GLFW_CURSOR_DISABLED = 0x00034003
315
- GLFW_CURSOR_CAPTURED = 0x00034004 # Available since GLFW 3.4
316
-
317
- GLFW_ANY_RELEASE_BEHAVIOR = 0
318
- GLFW_RELEASE_BEHAVIOR_FLUSH = 0x00035001
319
- GLFW_RELEASE_BEHAVIOR_NONE = 0x00035002
320
-
321
- GLFW_NATIVE_CONTEXT_API = 0x00036001 # Available since GLFW 3.2
322
- GLFW_EGL_CONTEXT_API = 0x00036002 # Available since GLFW 3.2
323
- GLFW_OSMESA_CONTEXT_API = 0x00036003 # Available since GLFW 3.3
324
-
325
- GLFW_ANGLE_PLATFORM_TYPE_NONE = 0x00037001 # Available since GLFW 3.4
326
- GLFW_ANGLE_PLATFORM_TYPE_OPENGL = 0x00037002 # Available since GLFW 3.4
327
- GLFW_ANGLE_PLATFORM_TYPE_OPENGLES = 0x00037003 # Available since GLFW 3.4
328
- GLFW_ANGLE_PLATFORM_TYPE_D3D9 = 0x00037004 # Available since GLFW 3.4
329
- GLFW_ANGLE_PLATFORM_TYPE_D3D11 = 0x00037005 # Available since GLFW 3.4
330
- GLFW_ANGLE_PLATFORM_TYPE_VULKAN = 0x00037007 # Available since GLFW 3.4
331
- GLFW_ANGLE_PLATFORM_TYPE_METAL = 0x00037008 # Available since GLFW 3.4
332
-
333
- GLFW_WAYLAND_PREFER_LIBDECOR = 0x00038001 # Available since GLFW 3.3.9
334
- GLFW_WAYLAND_DISABLE_LIBDECOR = 0x00038002 # Available since GLFW 3.3.9
335
-
336
- GLFW_ANY_POSITION = 0x80000000 # Available since GLFW 3.4
337
-
338
- GLFW_ARROW_CURSOR = 0x00036001
339
- GLFW_IBEAM_CURSOR = 0x00036002
340
- GLFW_CROSSHAIR_CURSOR = 0x00036003
341
- GLFW_POINTING_HAND_CURSOR = 0x00036004 # Renamed from GLFW_HAND_CURSOR since GLFW 3.4
342
- GLFW_RESIZE_EW_CURSOR = 0x00036005 # Renamed from GLFW_HRESIZE_CURSOR since GLFW 3.4
343
- GLFW_RESIZE_NS_CURSOR = 0x00036006 # Renamed from GLFW_VRESIZE_CURSOR since GLFW 3.4
344
- GLFW_RESIZE_NWSE_CURSOR = 0x00036007 # Available since GLFW 3.4
345
- GLFW_RESIZE_NESW_CURSOR = 0x00036008 # Available since GLFW 3.4
346
- GLFW_RESIZE_ALL_CURSOR = 0x00036009 # Available since GLFW 3.4
347
- GLFW_NOT_ALLOWED_CURSOR = 0x0003600A # Available since GLFW 3.4
348
-
349
- GLFW_HRESIZE_CURSOR = GLFW_RESIZE_EW_CURSOR # Legacy name for compatibility added since GLFW 3.4
350
- GLFW_VRESIZE_CURSOR = GLFW_RESIZE_NS_CURSOR # Legacy name for compatibility added since GLFW 3.4
351
- GLFW_HAND_CURSOR = GLFW_POINTING_HAND_CURSOR # Legacy name for compatibility added since GLFW 3.4
352
-
353
- GLFW_CONNECTED = 0x00040001
354
- GLFW_DISCONNECTED = 0x00040002
355
-
356
- GLFW_JOYSTICK_HAT_BUTTONS = 0x00050001 # Available since GLFW 3.3
357
- GLFW_ANGLE_PLATFORM_TYPE = 0x00050002 # Available since GLFW 3.4
358
- GLFW_PLATFORM = 0x00050003 # Available since GLFW 3.4
359
-
360
-
361
- GLFW_COCOA_CHDIR_RESOURCES = 0x00051001 # Available since GLFW 3.3
362
- GLFW_COCOA_MENUBAR = 0x00051002 # Available since GLFW 3.3
363
-
364
- GLFW_X11_XCB_VULKAN_SURFACE = 0x00052001 # Available since GLFW 3.4
365
-
366
- GLFW_WAYLAND_LIBDECOR = 0x00053001 # Available since GLFW 3.3.9
367
-
368
- GLFW_ANY_PLATFORM = 0x00060000 # Available since GLFW 3.4
369
- GLFW_PLATFORM_WIN32 = 0x00060001 # Available since GLFW 3.4
370
- GLFW_PLATFORM_COCOA = 0x00060002 # Available since GLFW 3.4
371
- GLFW_PLATFORM_WAYLAND = 0x00060003 # Available since GLFW 3.4
372
- GLFW_PLATFORM_X11 = 0x00060004 # Available since GLFW 3.4
373
- GLFW_PLATFORM_NULL = 0x00060005 # Available since GLFW 3.4
374
-
375
- GLFW_DONT_CARE = -1
376
-
377
- # typedefs
378
- @@glfw_cb_function_signature = {
379
- :GLFWerrorfun => "void GLFWerrorfun(int,const char*)",
380
- :GLFWwindowposfun => "void GLFWwindowposfun(void*,int,int)",
381
- :GLFWwindowsizefun => "void GLFWwindowsizefun(void*,int,int)",
382
- :GLFWwindowclosefun => "void GLFWwindowclosefun(void*)",
383
- :GLFWwindowrefreshfun => "void GLFWwindowrefreshfun(void*)",
384
- :GLFWwindowfocusfun => "void GLFWwindowfocusfun(void*,int)",
385
- :GLFWwindowiconifyfun => "void GLFWwindowiconifyfun(void*,int)",
386
- :GLFWwindowmaximizefun => "void GLFWwindowmaximizefun(void*,int)",
387
- :GLFWframebuffersizefun => "void GLFWframebuffersizefun(void*,int,int)",
388
- :GLFWwindowcontentscalefun => "void GLFWwindowcontentscalefun(void*,float,float)", # Available since GLFW 3.3
389
- :GLFWmousebuttonfun => "void GLFWmousebuttonfun(void*,int,int,int)",
390
- :GLFWcursorposfun => "void GLFWcursorposfun(void*,double,double)",
391
- :GLFWcursorenterfun => "void GLFWcursorenterfun(void*,int)",
392
- :GLFWscrollfun => "void GLFWscrollfun(void*,double,double)",
393
- :GLFWkeyfun => "void GLFWkeyfun(void*,int,int,int,int)",
394
- :GLFWcharfun => "void GLFWcharfun(void*,unsigned int)",
395
- :GLFWcharmodsfun => "void GLFWcharmodsfun(void*,unsigned int,int)", # Available since GLFW 3.1 / Scheduled for removal in version 4.0.
396
- :GLFWdropfun => "void GLFWdropfun(void*,int,const char**)", # Available since GLFW 3.1
397
- :GLFWmonitorfun => "void GLFWmonitorfun(void*,int)", # Available since GLFW 3.0
398
- :GLFWjoystickfun => "void GGLFWjoystickfun(int,int)", # Available since GLFW 3.2
399
- }
400
-
401
- # Creates a callback as an instance of Fiddle::Function
402
- def self.create_callback_function(sym, proc=nil, &blk)
403
- if block_given?
404
- return bind(@@glfw_cb_function_signature[sym], nil, &blk)
405
- else
406
- return bind(@@glfw_cb_function_signature[sym], nil, &proc)
407
- end
408
- end
409
-
410
- GLFWerrorfun_cb_args = [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
411
- GLFWerrorfun_cb_retval = Fiddle::TYPE_VOID
412
- GLFWwindowposfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
413
- GLFWwindowposfun_cb_retval = Fiddle::TYPE_VOID
414
- GLFWwindowsizefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
415
- GLFWwindowsizefun_cb_retval = Fiddle::TYPE_VOID
416
- GLFWwindowclosefun_cb_args = [Fiddle::TYPE_VOIDP]
417
- GLFWwindowclosefun_cb_retval = Fiddle::TYPE_VOID
418
- GLFWwindowrefreshfun_cb_args = [Fiddle::TYPE_VOIDP]
419
- GLFWwindowrefreshfun_cb_retval = Fiddle::TYPE_VOID
420
- GLFWwindowfocusfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
421
- GLFWwindowfocusfun_cb_retval = Fiddle::TYPE_VOID
422
- GLFWwindowiconifyfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
423
- GLFWwindowiconifyfun_cb_retval = Fiddle::TYPE_VOID
424
- GLFWframebuffersizefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
425
- GLFWframebuffersizefun_cb_retval = Fiddle::TYPE_VOID
426
- GLFWwindowcontentscalefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_FLOAT, Fiddle::TYPE_FLOAT] # Available since GLFW 3.3
427
- GLFWwindowcontentscalefun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.3
428
- GLFWmousebuttonfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
429
- GLFWmousebuttonfun_cb_retval = Fiddle::TYPE_VOID
430
- GLFWcursorposfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_DOUBLE, Fiddle::TYPE_DOUBLE]
431
- GLFWcursorposfun_cb_retval = Fiddle::TYPE_VOID
432
- GLFWcursorenterfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
433
- GLFWcursorenterfun_cb_retval = Fiddle::TYPE_VOID
434
- GLFWscrollfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_DOUBLE, Fiddle::TYPE_DOUBLE]
435
- GLFWscrollfun_cb_retval = Fiddle::TYPE_VOID
436
- GLFWkeyfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
437
- GLFWkeyfun_cb_retval = Fiddle::TYPE_VOID
438
- GLFWcharfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT]
439
- GLFWcharfun_cb_retval = Fiddle::TYPE_VOID
440
- GLFWcharmodsfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.1
441
- GLFWcharmodsfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
442
- GLFWdropfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP] # Available since GLFW 3.1
443
- GLFWdropfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
444
- GLFWmonitorfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT] # Available since GLFW 3.0
445
- GLFWmonitorfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.0
446
- GLFWjoystickfun_cb_args = [Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.2
447
- GLFWjoystickfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.2
448
-
449
- @@glfw_cb_closure_signature = {
450
- :GLFWerrorfun => [GLFWerrorfun_cb_retval, GLFWerrorfun_cb_args],
451
- :GLFWwindowposfun => [GLFWwindowposfun_cb_retval, GLFWwindowposfun_cb_args],
452
- :GLFWwindowsizefun => [GLFWwindowsizefun_cb_retval, GLFWwindowsizefun_cb_args],
453
- :GLFWwindowclosefun => [GLFWwindowclosefun_cb_retval, GLFWwindowclosefun_cb_args],
454
- :GLFWwindowrefreshfun => [GLFWwindowrefreshfun_cb_retval, GLFWwindowrefreshfun_cb_args],
455
- :GLFWwindowfocusfun => [GLFWwindowfocusfun_cb_retval, GLFWwindowfocusfun_cb_args],
456
- :GLFWwindowiconifyfun => [GLFWwindowiconifyfun_cb_retval, GLFWwindowiconifyfun_cb_args],
457
- :GLFWframebuffersizefun => [GLFWframebuffersizefun_cb_retval, GLFWframebuffersizefun_cb_args],
458
- :GLFWwindowcontentscalefun => [GLFWwindowcontentscalefun_cb_retval, GLFWwindowcontentscalefun_cb_args], # Available since GLFW 3.3
459
- :GLFWmousebuttonfun => [GLFWmousebuttonfun_cb_retval, GLFWmousebuttonfun_cb_args],
460
- :GLFWcursorposfun => [GLFWcursorposfun_cb_retval, GLFWcursorposfun_cb_args],
461
- :GLFWcursorenterfun => [GLFWcursorenterfun_cb_retval, GLFWcursorenterfun_cb_args],
462
- :GLFWscrollfun => [GLFWscrollfun_cb_retval, GLFWscrollfun_cb_args],
463
- :GLFWkeyfun => [GLFWkeyfun_cb_retval, GLFWkeyfun_cb_args],
464
- :GLFWcharfun => [GLFWcharfun_cb_retval, GLFWcharfun_cb_args],
465
- :GLFWcharmodsfun => [GLFWcharmodsfun_cb_retval, GLFWcharmodsfun_cb_args], # Available since GLFW 3.1
466
- :GLFWdropfun => [GLFWdropfun_cb_retval, GLFWdropfun_cb_args], # Available since GLFW 3.1
467
- :GLFWmonitorfun => [GLFWmonitorfun_cb_retval, GLFWmonitorfun_cb_args],
468
- :GLFWjoystickfun => [GLFWjoystickfun_cb_retval, GLFWjoystickfun_cb_args], # Available since GLFW 3.2
469
- }
470
-
471
- # Creates a callback as an instance of Fiddle::Closure::BlockCaller
472
- def self.create_callback_closure(sym, proc=nil, &blk)
473
- cb_retval = @@glfw_cb_closure_signature[sym][0]
474
- cb_args = @@glfw_cb_closure_signature[sym][1]
475
- if block_given?
476
- return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &blk )
477
- else
478
- return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &proc )
479
- end
480
- end
481
-
482
- # NOTE : Use 'create_callback_function' for backward compatibility.
483
- def self.create_callback(sym, proc=nil, &blk)
484
- return self.create_callback_closure( sym, proc, &blk )
485
- end
486
-
487
- # NOTE : Memory allocation callbacks addin in GLFW 3.4
488
- # (GLFWallocatefun, GLFWreallocatefun, GLFWdeallocatefun and struct GLFWallocator)
489
- # will not be supported in this bindings.
490
-
491
- # struct
492
- GLFWvidmode = struct(["int width",
493
- "int height",
494
- "int redBits",
495
- "int greenBits",
496
- "int blueBits",
497
- "int refreshRate"])
498
-
499
- GLFWgammaramp = struct(["unsigned short* red",
500
- "unsigned short* green",
501
- "unsigned short* blue",
502
- "unsigned int size"])
503
-
504
- # Available since GLFW 3.1
505
- GLFWimage = struct(["int width",
506
- "int height",
507
- "unsigned char* pixels"])
508
-
509
- # Available since GLFW 3.3
510
- GLFWgamepadstate = struct(["unsigned char buttons[15]",
511
- "float axes[6]"])
512
-
513
- @@glfw_import_done = false
514
-
515
- # Load native library.
516
- def self.load_lib(lib_path = nil, output_error = false)
517
- if lib_path == nil
518
- lib_path = case GL.get_platform
519
- when :OPENGL_PLATFORM_WINDOWS
520
- Dir.pwd + '/GLFW3.dll'
521
- when :OPENGL_PLATFORM_MACOSX
522
- 'libglfw.dylib'
523
- else
524
- 'libglfw.so.3'
525
- end
526
- end
527
-
528
- dlload(lib_path)
529
-
530
- import_symbols(output_error) unless @@glfw_import_done
531
- end
532
-
533
- @@lib_signature = [
534
- 'int glfwInit()',
535
- 'void glfwTerminate()',
536
- 'void glfwInitHint(int, int)', # Available since GLFW 3.3
537
- 'void glfwGetVersion(int*, int*, int*)',
538
- 'const char* glfwGetVersionString()',
539
- 'int glfwGetError(const char**)', # Available since GLFW 3.3
540
- 'void* glfwSetErrorCallback(void*)',
541
- 'int glfwGetPlatform()', # Available since GLFW 3.4
542
- 'int glfwPlatformSupported(int)', # Available since GLFW 3.4
543
- 'void** glfwGetMonitors(int*)',
544
- 'void* glfwGetPrimaryMonitor()',
545
- 'void glfwGetMonitorPos(void*, int*, int*)',
546
- 'void glfwGetMonitorWorkarea(void* monitor, int*, int*, int*, int*)', # Available since GLFW 3.3
547
- 'void glfwGetMonitorPhysicalSize(void*, int*, int*)',
548
- 'void glfwGetMonitorContentScale(void*, float*, float*)', # Available since GLFW 3.3
549
- 'const char* glfwGetMonitorName(void*)',
550
- 'void glfwSetMonitorUserPointer(void*, void*)', # Available since GLFW 3.3
551
- 'const void* glfwGetMonitorUserPointer(void**)', # Available since GLFW 3.3
552
- 'void* glfwSetMonitorCallback(void*)', # Available since GLFW 3.0
553
- 'const void* glfwGetVideoModes(void*, int*)',
554
- 'const void* glfwGetVideoMode(void*)', # Available since GLFW 3.0
555
- 'void glfwSetGamma(void*, float)', # Available since GLFW 3.0
556
- 'const void* glfwGetGammaRamp(void*)', # Available since GLFW 3.0
557
- 'void glfwSetGammaRamp(void*, const void*)', # Available since GLFW 3.0
558
- 'void glfwDefaultWindowHints()', # Available since GLFW 3.0
559
- 'void glfwWindowHint(int, int)', # Available since GLFW 3.0
560
- 'void glfwWindowHintString(int, const char*)', # Available since GLFW 3.3
561
- 'void* glfwCreateWindow(int, int, const char*, void*, void*)', # Available since GLFW 3.0
562
- 'void glfwDestroyWindow(void*)', # Available since GLFW 3.0
563
- 'int glfwWindowShouldClose(void*)', # Available since GLFW 3.0
564
- 'void glfwSetWindowShouldClose(void*, int)', # Available since GLFW 3.0
565
- 'const char* glfwGetWindowTitle(void*)', # Available since GLFW 3.4
566
- 'void glfwSetWindowTitle(void*, const char*)',
567
- 'void glfwSetWindowIcon(void*, int, void*)', # Available since GLFW 3.2
568
- 'void glfwGetWindowPos(void*, int*, int*)', # Available since GLFW 3.0
569
- 'void glfwSetWindowPos(void*, int, int)',
570
- 'void glfwGetWindowSize(void*, int*, int*)',
571
- 'void glfwSetWindowSizeLimits(void*, int, int, int, int)', # Available since GLFW 3.2
572
- 'void glfwSetWindowAspectRatio(void*, int, int)', # Available since GLFW 3.2
573
- 'void glfwSetWindowSize(void*, int, int)',
574
- 'void glfwGetFramebufferSize(void*, int*, int*)', # Available since GLFW 3.0
575
- 'void glfwGetWindowFrameSize(void*, int*, int*, int*, int*)', # Available since GLFW 3.1
576
- 'void glfwGetWindowContentScale(void*, float*, float*)', # Available since GLFW 3.3
577
- 'float glfwGetWindowOpacity(void*)', # Available since GLFW 3.3
578
- 'void glfwSetWindowOpacity(void*, float)', # Available since GLFW 3.3
579
- 'void glfwIconifyWindow(void*)',
580
- 'void glfwRestoreWindow(void*)',
581
- 'void glfwMaximizeWindow(void*)', # Available since GLFW 3.2
582
- 'void glfwShowWindow(void*)', # Available since GLFW 3.0
583
- 'void glfwHideWindow(void*)', # Available since GLFW 3.0
584
- 'void glfwFocusWindow(void*)', # Available since GLFW 3.2
585
- 'void glfwRequestWindowAttention(void*)', # Available since GLFW 3.3
586
- 'void* glfwGetWindowMonitor(void*)', # Available since GLFW 3.0
587
- 'void glfwSetWindowMonitor(void*, void*, int, int, int, int, int)', # Available since GLFW 3.2
588
- 'int glfwGetWindowAttrib(void*, int)', # Available since GLFW 3.0
589
- 'void glfwSetWindowAttrib(void*, int, int)', # Available since GLFW 3.3
590
- 'void glfwSetWindowUserPointer(void*, void*)', # Available since GLFW 3.0
591
- 'void* glfwGetWindowUserPointer(void*)', # Available since GLFW 3.0
592
- 'void* glfwSetWindowPosCallback(void*, void*)', # Available since GLFW 3.0
593
- 'void* glfwSetWindowSizeCallback(void*, void*)',
594
- 'void* glfwSetWindowCloseCallback(void*, void*)',
595
- 'void* glfwSetWindowRefreshCallback(void*, void*)',
596
- 'void* glfwSetWindowFocusCallback(void*, void*)', # Available since GLFW 3.0
597
- 'void* glfwSetWindowIconifyCallback(void*, void*)', # Available since GLFW 3.0
598
- 'void* glfwSetWindowMaximizeCallback(void*, void*)', # Available since GLFW 3.3
599
- 'void* glfwSetFramebufferSizeCallback(void*, void*)', # Available since GLFW 3.0
600
- 'void* glfwSetWindowContentScaleCallback(void*, void*)', # Available since GLFW 3.3
601
- 'void glfwPollEvents()',
602
- 'void glfwWaitEvents()',
603
- 'void glfwWaitEventsTimeout(double)', # Available since GLFW 3.2
604
- 'void glfwPostEmptyEvent()', # Available since GLFW 3.1
605
- 'int glfwGetInputMode(void*, int)', # Available since GLFW 3.0
606
- 'void glfwSetInputMode(void*, int, int)', # Available since GLFW 3.0
607
- 'int glfwRawMouseMotionSupported()', # Available since GLFW 3.3
608
- 'const char* glfwGetKeyName(int, int)', # Available since GLFW 3.2
609
- 'int glfwGetKeyScancode(int)', # Available since GLFW 3.3
610
- 'int glfwGetKey(void*, int)',
611
- 'int glfwGetMouseButton(void*, int)',
612
- 'void glfwGetCursorPos(void*, double*, double*)', # Available since GLFW 3.0
613
- 'void glfwSetCursorPos(void*, double, double)', # Available since GLFW 3.0
614
- 'void* glfwCreateCursor(void*, int, int)', # Available since GLFW 3.1
615
- 'void* glfwCreateStandardCursor(int)', # Available since GLFW 3.1
616
- 'void glfwDestroyCursor(void*)', # Available since GLFW 3.1
617
- 'void glfwSetCursor(void*, void*)', # Available since GLFW 3.1
618
- 'void* glfwSetKeyCallback(void*, void*)',
619
- 'void* glfwSetCharCallback(void*, void*)',
620
- 'void* glfwSetCharModsCallback(void*, void*)', # Available since GLFW 3.1 / Scheduled for removal in version 4.0.
621
- 'void* glfwSetMouseButtonCallback(void*, void*)',
622
- 'void* glfwSetCursorPosCallback(void*, void*)', # Available since GLFW 3.0
623
- 'void* glfwSetCursorEnterCallback(void*, void*)', # Available since GLFW 3.0
624
- 'void* glfwSetScrollCallback(void*, void*)', # Available since GLFW 3.0
625
- 'void* glfwSetDropCallback(void*, void*)', # Available since GLFW 3.1
626
-
627
- 'int glfwJoystickPresent(int)', # Available since GLFW 3.0
628
- 'const float* glfwGetJoystickAxes(int, int*)', # Available since GLFW 3.0
629
- 'const unsigned char* glfwGetJoystickButtons(int, int*)',
630
- 'const unsigned char* glfwGetJoystickHats(int, int*)', # Available since GLFW 3.3
631
- 'const char* glfwGetJoystickName(int)', # Available since GLFW 3.0
632
- 'const char* glfwGetJoystickGUID(int)', # Available since GLFW 3.3
633
- 'void glfwSetJoystickUserPointer(int, void*)', # Available since GLFW 3.3
634
- 'void* glfwGetJoystickUserPointer(int)', # Available since GLFW 3.3
635
- 'int glfwJoystickIsGamepad(int)', # Available since GLFW 3.3
636
- 'void* glfwSetJoystickCallback(void*)', # Available since GLFW 3.2
637
- 'int glfwUpdateGamepadMappings(const char*)', # Available since GLFW 3.3
638
- 'const char* glfwGetGamepadName(int)', # Available since GLFW 3.3
639
- 'int glfwGetGamepadState(int, void*)', # Available since GLFW 3.3
640
- 'void glfwSetClipboardString(void*, const char*)', # Available since GLFW 3.0
641
- 'const char* glfwGetClipboardString(void*)', # Available since GLFW 3.0
642
- 'double glfwGetTime()',
643
- 'void glfwSetTime(double)',
644
- 'GLFWuint64 glfwGetTimerValue()', # Available since GLFW 3.2
645
- 'GLFWuint64 glfwGetTimerFrequency()', # Available since GLFW 3.2
646
- 'void glfwMakeContextCurrent(void*)', # Available since GLFW 3.0
647
- 'void* glfwGetCurrentContext()', # Available since GLFW 3.0
648
- 'void glfwSwapBuffers(void*)',
649
- 'void glfwSwapInterval(int)',
650
- 'int glfwExtensionSupported(const char*)',
651
- 'void* glfwGetProcAddress(const char*)',
652
- # >>> Vulkan >>>
653
- 'int glfwVulkanSupported()', # Available since GLFW 3.2
654
- 'const char** glfwGetRequiredInstanceExtensions(unsigned int*)', # Available since GLFW 3.2
655
- # 'GLFWvkproc glfwGetInstanceProcAddress(void*, const char*)',
656
- # 'int glfwGetPhysicalDevicePresentationSupport(void*, void*, unsigned int)',
657
- # 'VkResult glfwCreateWindowSurface(void*, void*, const void*, void*)',
658
- # 'void glfwInitVulkanLoader(void*)',
659
- # <<< Vulkan <<<
660
- # >>> Allocator >>>
661
- # 'void glfwInitAllocator(void*)',
662
- # <<< Allocator <<<
663
- ]
664
-
665
- case GL.get_platform
666
- when :OPENGL_PLATFORM_WINDOWS
667
- @@lib_signature << 'const char* glfwGetWin32Adapter(void*)'
668
- @@lib_signature << 'const char* glfwGetWin32Monitor(void*)'
669
- @@lib_signature << 'void* glfwGetWin32Window(void*)'
670
- @@lib_signature << 'void* glfwGetWGLContext(void*)'
671
- when :OPENGL_PLATFORM_MACOSX
672
- @@lib_signature << 'unsigned int glfwGetCocoaMonitor(void*)'
673
- @@lib_signature << 'void* glfwGetCocoaWindow(void*)'
674
- @@lib_signature << 'void* glfwGetCocoaView(void*)'
675
- @@lib_signature << 'void* glfwGetNSGLContext(void*)'
676
- when :OPENGL_PLATFORM_LINUX
677
- @@lib_signature << 'void* glfwGetX11Display()'
678
- @@lib_signature << 'unsinged long glfwGetX11Adapter(void*)'
679
- @@lib_signature << 'unsinged long glfwGetX11Monitor(void*)'
680
- @@lib_signature << 'unsinged long glfwGetX11Window(void*)'
681
- @@lib_signature << 'void glfwSetX11SelectionString(const char*)'
682
- @@lib_signature << 'const char* glfwGetX11SelectionString()'
683
- @@lib_signature << 'unsinged long glfwGetGLXWindow(void*)'
684
- end
685
-
686
- def self.import_symbols(output_error = false)
687
- typealias 'GLFWuint64', 'unsigned long long' # Available since GLFW 3.2
688
-
689
- # function
690
- @@lib_signature.each do |sig|
691
- begin
692
- extern sig
693
- rescue
694
- $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
695
- end
696
- end
697
-
698
- ver_major = ' ' * 4
699
- ver_minor = ' ' * 4
700
- ver_rev = ' ' * 4
701
- glfwGetVersion(ver_major, ver_minor, ver_rev)
702
-
703
- GLFW.const_set('GLFW_VERSION_MAJOR', ver_major.unpack('L')[0])
704
- GLFW.const_set('GLFW_VERSION_MINOR', ver_minor.unpack('L')[0])
705
- GLFW.const_set('GLFW_VERSION_REVISION', ver_rev.unpack('L')[0])
706
-
707
- # Convert method names (e.g.: GLFW.glfwInit -> GLFW.Init)
708
- self.singleton_methods(false).each do |method_name|
709
- m = singleton_method(method_name)
710
- if m.name.to_s.start_with? 'glfw'
711
- modified_api = m.name.to_s[4..-1] # omit prefix "glfw"
712
- define_singleton_method(modified_api, m) # define alias
713
- end
714
- end
715
-
716
- # Convert constant names (e.g.: GLFW::GLFW_KEY_ESCAPE -> GLFW::KEY_ESCAPE)
717
- self.constants.each do |constant|
718
- cs = constant.to_s
719
- if cs[0..4] == "GLFW_"
720
- if cs[5] =~ /\d/
721
- # We have to abandon name conversion like 'GL_2D, GL_3D_COLOR, GL_4_BYTES, etc.
722
- # Because constants can't start with a digit or underscore.
723
- # [Note] This rule has been inherited from Yoshi's very original ruby-opengl (confirmed with opengl-0.32g, 2004-07-17).
724
- else
725
- # Convert by omitting the 'GLFW_' prefix like GLFW::GLFW_KEY_ESCAPE into GLFW::KEY_ESCAPE
726
- const_set(cs[5..-1], GLFW.const_get(constant))
727
- end
728
- end
729
- end
730
-
731
- @@glfw_import_done = true
732
- end
733
-
734
- end
735
-
736
- =begin
737
- Ruby-OpenGL : Yet another OpenGL wrapper for Ruby (and wrapper code generator)
738
- Copyright (c) 2013-2025 vaiorabbit <http://twitter.com/vaiorabbit>
739
-
740
- This software is provided 'as-is', without any express or implied
741
- warranty. In no event will the authors be held liable for any damages
742
- arising from the use of this software.
743
-
744
- Permission is granted to anyone to use this software for any purpose,
745
- including commercial applications, and to alter it and redistribute it
746
- freely, subject to the following restrictions:
747
-
748
- 1. The origin of this software must not be misrepresented; you must not
749
- claim that you wrote the original software. If you use this software
750
- in a product, an acknowledgment in the product documentation would be
751
- appreciated but is not required.
752
-
753
- 2. Altered source versions must be plainly marked as such, and must not be
754
- misrepresented as being the original software.
755
-
756
- 3. This notice may not be removed or altered from any source
757
- distribution.
758
- =end
759
-
1
+ # -*- coding: utf-8 -*-
2
+ # A GLFW wrapper (for version 3.4)
3
+ require 'fiddle/import'
4
+
5
+ module GLFW
6
+
7
+ extend Fiddle::Importer
8
+
9
+ # defines
10
+ GLFW_TRUE = 1 # Available since GLFW 3.2
11
+ GLFW_FALSE = 0 # Available since GLFW 3.2
12
+
13
+ GLFW_RELEASE = 0
14
+ GLFW_PRESS = 1
15
+ GLFW_REPEAT = 2
16
+
17
+ GLFW_HAT_CENTERED = 0 # Available since GLFW 3.3
18
+ GLFW_HAT_UP = 1 # Available since GLFW 3.3
19
+ GLFW_HAT_RIGHT = 2 # Available since GLFW 3.3
20
+ GLFW_HAT_DOWN = 4 # Available since GLFW 3.3
21
+ GLFW_HAT_LEFT = 8 # Available since GLFW 3.3
22
+ GLFW_HAT_RIGHT_UP = (GLFW_HAT_RIGHT | GLFW_HAT_UP) # Available since GLFW 3.3
23
+ GLFW_HAT_RIGHT_DOWN = (GLFW_HAT_RIGHT | GLFW_HAT_DOWN) # Available since GLFW 3.3
24
+ GLFW_HAT_LEFT_UP = (GLFW_HAT_LEFT | GLFW_HAT_UP) # Available since GLFW 3.3
25
+ GLFW_HAT_LEFT_DOWN = (GLFW_HAT_LEFT | GLFW_HAT_DOWN) # Available since GLFW 3.3
26
+
27
+ GLFW_KEY_UNKNOWN = -1
28
+
29
+ GLFW_KEY_SPACE = 32
30
+ GLFW_KEY_APOSTROPHE = 39 # '
31
+ GLFW_KEY_COMMA = 44 # ,
32
+ GLFW_KEY_MINUS = 45 # -
33
+ GLFW_KEY_PERIOD = 46 # .
34
+ GLFW_KEY_SLASH = 47 # /
35
+ GLFW_KEY_0 = 48
36
+ GLFW_KEY_1 = 49
37
+ GLFW_KEY_2 = 50
38
+ GLFW_KEY_3 = 51
39
+ GLFW_KEY_4 = 52
40
+ GLFW_KEY_5 = 53
41
+ GLFW_KEY_6 = 54
42
+ GLFW_KEY_7 = 55
43
+ GLFW_KEY_8 = 56
44
+ GLFW_KEY_9 = 57
45
+ GLFW_KEY_SEMICOLON = 59 # ;
46
+ GLFW_KEY_EQUAL = 61 # =
47
+ GLFW_KEY_A = 65
48
+ GLFW_KEY_B = 66
49
+ GLFW_KEY_C = 67
50
+ GLFW_KEY_D = 68
51
+ GLFW_KEY_E = 69
52
+ GLFW_KEY_F = 70
53
+ GLFW_KEY_G = 71
54
+ GLFW_KEY_H = 72
55
+ GLFW_KEY_I = 73
56
+ GLFW_KEY_J = 74
57
+ GLFW_KEY_K = 75
58
+ GLFW_KEY_L = 76
59
+ GLFW_KEY_M = 77
60
+ GLFW_KEY_N = 78
61
+ GLFW_KEY_O = 79
62
+ GLFW_KEY_P = 80
63
+ GLFW_KEY_Q = 81
64
+ GLFW_KEY_R = 82
65
+ GLFW_KEY_S = 83
66
+ GLFW_KEY_T = 84
67
+ GLFW_KEY_U = 85
68
+ GLFW_KEY_V = 86
69
+ GLFW_KEY_W = 87
70
+ GLFW_KEY_X = 88
71
+ GLFW_KEY_Y = 89
72
+ GLFW_KEY_Z = 90
73
+ GLFW_KEY_LEFT_BRACKET = 91 # [
74
+ GLFW_KEY_BACKSLASH = 92 # \
75
+ GLFW_KEY_RIGHT_BRACKET = 93 # ]
76
+ GLFW_KEY_GRAVE_ACCENT = 96 # `
77
+ GLFW_KEY_WORLD_1 = 161 # non-US #1
78
+ GLFW_KEY_WORLD_2 = 162 # non-US #2
79
+
80
+ GLFW_KEY_ESCAPE = 256
81
+ GLFW_KEY_ENTER = 257
82
+ GLFW_KEY_TAB = 258
83
+ GLFW_KEY_BACKSPACE = 259
84
+ GLFW_KEY_INSERT = 260
85
+ GLFW_KEY_DELETE = 261
86
+ GLFW_KEY_RIGHT = 262
87
+ GLFW_KEY_LEFT = 263
88
+ GLFW_KEY_DOWN = 264
89
+ GLFW_KEY_UP = 265
90
+ GLFW_KEY_PAGE_UP = 266
91
+ GLFW_KEY_PAGE_DOWN = 267
92
+ GLFW_KEY_HOME = 268
93
+ GLFW_KEY_END = 269
94
+ GLFW_KEY_CAPS_LOCK = 280
95
+ GLFW_KEY_SCROLL_LOCK = 281
96
+ GLFW_KEY_NUM_LOCK = 282
97
+ GLFW_KEY_PRINT_SCREEN = 283
98
+ GLFW_KEY_PAUSE = 284
99
+ GLFW_KEY_F1 = 290
100
+ GLFW_KEY_F2 = 291
101
+ GLFW_KEY_F3 = 292
102
+ GLFW_KEY_F4 = 293
103
+ GLFW_KEY_F5 = 294
104
+ GLFW_KEY_F6 = 295
105
+ GLFW_KEY_F7 = 296
106
+ GLFW_KEY_F8 = 297
107
+ GLFW_KEY_F9 = 298
108
+ GLFW_KEY_F10 = 299
109
+ GLFW_KEY_F11 = 300
110
+ GLFW_KEY_F12 = 301
111
+ GLFW_KEY_F13 = 302
112
+ GLFW_KEY_F14 = 303
113
+ GLFW_KEY_F15 = 304
114
+ GLFW_KEY_F16 = 305
115
+ GLFW_KEY_F17 = 306
116
+ GLFW_KEY_F18 = 307
117
+ GLFW_KEY_F19 = 308
118
+ GLFW_KEY_F20 = 309
119
+ GLFW_KEY_F21 = 310
120
+ GLFW_KEY_F22 = 311
121
+ GLFW_KEY_F23 = 312
122
+ GLFW_KEY_F24 = 313
123
+ GLFW_KEY_F25 = 314
124
+ GLFW_KEY_KP_0 = 320
125
+ GLFW_KEY_KP_1 = 321
126
+ GLFW_KEY_KP_2 = 322
127
+ GLFW_KEY_KP_3 = 323
128
+ GLFW_KEY_KP_4 = 324
129
+ GLFW_KEY_KP_5 = 325
130
+ GLFW_KEY_KP_6 = 326
131
+ GLFW_KEY_KP_7 = 327
132
+ GLFW_KEY_KP_8 = 328
133
+ GLFW_KEY_KP_9 = 329
134
+ GLFW_KEY_KP_DECIMAL = 330
135
+ GLFW_KEY_KP_DIVIDE = 331
136
+ GLFW_KEY_KP_MULTIPLY = 332
137
+ GLFW_KEY_KP_SUBTRACT = 333
138
+ GLFW_KEY_KP_ADD = 334
139
+ GLFW_KEY_KP_ENTER = 335
140
+ GLFW_KEY_KP_EQUAL = 336
141
+ GLFW_KEY_LEFT_SHIFT = 340
142
+ GLFW_KEY_LEFT_CONTROL = 341
143
+ GLFW_KEY_LEFT_ALT = 342
144
+ GLFW_KEY_LEFT_SUPER = 343
145
+ GLFW_KEY_RIGHT_SHIFT = 344
146
+ GLFW_KEY_RIGHT_CONTROL = 345
147
+ GLFW_KEY_RIGHT_ALT = 346
148
+ GLFW_KEY_RIGHT_SUPER = 347
149
+ GLFW_KEY_MENU = 348
150
+ GLFW_KEY_LAST = GLFW_KEY_MENU
151
+
152
+ GLFW_MOD_SHIFT = 0x0001
153
+ GLFW_MOD_CONTROL = 0x0002
154
+ GLFW_MOD_ALT = 0x0004
155
+ GLFW_MOD_SUPER = 0x0008
156
+ GLFW_MOD_CAPS_LOCK = 0x0010 # Available since GLFW 3.3
157
+ GLFW_MOD_NUM_LOCK = 0x0020 # Available since GLFW 3.3
158
+
159
+ GLFW_MOUSE_BUTTON_1 = 0
160
+ GLFW_MOUSE_BUTTON_2 = 1
161
+ GLFW_MOUSE_BUTTON_3 = 2
162
+ GLFW_MOUSE_BUTTON_4 = 3
163
+ GLFW_MOUSE_BUTTON_5 = 4
164
+ GLFW_MOUSE_BUTTON_6 = 5
165
+ GLFW_MOUSE_BUTTON_7 = 6
166
+ GLFW_MOUSE_BUTTON_8 = 7
167
+ GLFW_MOUSE_BUTTON_LAST = GLFW_MOUSE_BUTTON_8
168
+ GLFW_MOUSE_BUTTON_LEFT = GLFW_MOUSE_BUTTON_1
169
+ GLFW_MOUSE_BUTTON_RIGHT = GLFW_MOUSE_BUTTON_2
170
+ GLFW_MOUSE_BUTTON_MIDDLE = GLFW_MOUSE_BUTTON_3
171
+
172
+ GLFW_JOYSTICK_1 = 0
173
+ GLFW_JOYSTICK_2 = 1
174
+ GLFW_JOYSTICK_3 = 2
175
+ GLFW_JOYSTICK_4 = 3
176
+ GLFW_JOYSTICK_5 = 4
177
+ GLFW_JOYSTICK_6 = 5
178
+ GLFW_JOYSTICK_7 = 6
179
+ GLFW_JOYSTICK_8 = 7
180
+ GLFW_JOYSTICK_9 = 8
181
+ GLFW_JOYSTICK_10 = 9
182
+ GLFW_JOYSTICK_11 = 10
183
+ GLFW_JOYSTICK_12 = 11
184
+ GLFW_JOYSTICK_13 = 12
185
+ GLFW_JOYSTICK_14 = 13
186
+ GLFW_JOYSTICK_15 = 14
187
+ GLFW_JOYSTICK_16 = 15
188
+ GLFW_JOYSTICK_LAST = GLFW_JOYSTICK_16
189
+
190
+ GLFW_GAMEPAD_BUTTON_A = 0 # Available since GLFW 3.3
191
+ GLFW_GAMEPAD_BUTTON_B = 1 # Available since GLFW 3.3
192
+ GLFW_GAMEPAD_BUTTON_X = 2 # Available since GLFW 3.3
193
+ GLFW_GAMEPAD_BUTTON_Y = 3 # Available since GLFW 3.3
194
+ GLFW_GAMEPAD_BUTTON_LEFT_BUMPER = 4 # Available since GLFW 3.3
195
+ GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER = 5 # Available since GLFW 3.3
196
+ GLFW_GAMEPAD_BUTTON_BACK = 6 # Available since GLFW 3.3
197
+ GLFW_GAMEPAD_BUTTON_START = 7 # Available since GLFW 3.3
198
+ GLFW_GAMEPAD_BUTTON_GUIDE = 8 # Available since GLFW 3.3
199
+ GLFW_GAMEPAD_BUTTON_LEFT_THUMB = 9 # Available since GLFW 3.3
200
+ GLFW_GAMEPAD_BUTTON_RIGHT_THUMB = 10 # Available since GLFW 3.3
201
+ GLFW_GAMEPAD_BUTTON_DPAD_UP = 11 # Available since GLFW 3.3
202
+ GLFW_GAMEPAD_BUTTON_DPAD_RIGHT = 12 # Available since GLFW 3.3
203
+ GLFW_GAMEPAD_BUTTON_DPAD_DOWN = 13 # Available since GLFW 3.3
204
+ GLFW_GAMEPAD_BUTTON_DPAD_LEFT = 14 # Available since GLFW 3.3
205
+ GLFW_GAMEPAD_BUTTON_LAST = GLFW_GAMEPAD_BUTTON_DPAD_LEFT # Available since GLFW 3.3
206
+
207
+ GLFW_GAMEPAD_BUTTON_CROSS = GLFW_GAMEPAD_BUTTON_A # Available since GLFW 3.3
208
+ GLFW_GAMEPAD_BUTTON_CIRCLE = GLFW_GAMEPAD_BUTTON_B # Available since GLFW 3.3
209
+ GLFW_GAMEPAD_BUTTON_SQUARE = GLFW_GAMEPAD_BUTTON_X # Available since GLFW 3.3
210
+ GLFW_GAMEPAD_BUTTON_TRIANGLE = GLFW_GAMEPAD_BUTTON_Y # Available since GLFW 3.3
211
+
212
+ GLFW_GAMEPAD_AXIS_LEFT_X = 0 # Available since GLFW 3.3
213
+ GLFW_GAMEPAD_AXIS_LEFT_Y = 1 # Available since GLFW 3.3
214
+ GLFW_GAMEPAD_AXIS_RIGHT_X = 2 # Available since GLFW 3.3
215
+ GLFW_GAMEPAD_AXIS_RIGHT_Y = 3 # Available since GLFW 3.3
216
+ GLFW_GAMEPAD_AXIS_LEFT_TRIGGER = 4 # Available since GLFW 3.3
217
+ GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER = 5 # Available since GLFW 3.3
218
+ GLFW_GAMEPAD_AXIS_LAST = GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER # Available since GLFW 3.3
219
+
220
+ GLFW_NO_ERROR = 0 # Available since GLFW 3.3
221
+ GLFW_NOT_INITIALIZED = 0x00010001
222
+ GLFW_NO_CURRENT_CONTEXT = 0x00010002
223
+ GLFW_INVALID_ENUM = 0x00010003
224
+ GLFW_INVALID_VALUE = 0x00010004
225
+ GLFW_OUT_OF_MEMORY = 0x00010005
226
+ GLFW_API_UNAVAILABLE = 0x00010006
227
+ GLFW_VERSION_UNAVAILABLE = 0x00010007
228
+ GLFW_PLATFORM_ERROR = 0x00010008
229
+ GLFW_FORMAT_UNAVAILABLE = 0x00010009
230
+ GLFW_NO_WINDOW_CONTEXT = 0x0001000A # Available since GLFW 3.2
231
+ GLFW_CURSOR_UNAVAILABLE = 0x0001000B # Available since GLFW 3.4
232
+ GLFW_FEATURE_UNAVAILABLE = 0x0001000C # Available since GLFW 3.4
233
+ GLFW_FEATURE_UNIMPLEMENTED = 0x0001000D # Available since GLFW 3.4
234
+ GLFW_PLATFORM_UNAVAILABLE = 0x0001000E # Available since GLFW 3.4
235
+
236
+ GLFW_FOCUSED = 0x00020001
237
+ GLFW_ICONIFIED = 0x00020002
238
+ GLFW_RESIZABLE = 0x00020003
239
+ GLFW_VISIBLE = 0x00020004
240
+ GLFW_DECORATED = 0x00020005
241
+ GLFW_AUTO_ICONIFY = 0x00020006 # Available since GLFW 3.1
242
+ GLFW_FLOATING = 0x00020007 # Available since GLFW 3.1
243
+ GLFW_MAXIMIZED = 0x00020008 # Available since GLFW 3.2
244
+ GLFW_CENTER_CURSOR = 0x00020009 # Available since GLFW 3.3
245
+ GLFW_TRANSPARENT_FRAMEBUFFER = 0x0002000A # Available since GLFW 3.3
246
+ GLFW_HOVERED = 0x0002000B # Available since GLFW 3.3
247
+ GLFW_FOCUS_ON_SHOW = 0x0002000C # Available since GLFW 3.3
248
+ GLFW_MOUSE_PASSTHROUGH = 0x0002000D # Available since GLFW 3.4
249
+ GLFW_POSITION_X = 0x0002000E # Available since GLFW 3.4
250
+ GLFW_POSITION_Y = 0x0002000F # Available since GLFW 3.4
251
+
252
+ GLFW_RED_BITS = 0x00021001
253
+ GLFW_GREEN_BITS = 0x00021002
254
+ GLFW_BLUE_BITS = 0x00021003
255
+ GLFW_ALPHA_BITS = 0x00021004
256
+ GLFW_DEPTH_BITS = 0x00021005
257
+ GLFW_STENCIL_BITS = 0x00021006
258
+ GLFW_ACCUM_RED_BITS = 0x00021007
259
+ GLFW_ACCUM_GREEN_BITS = 0x00021008
260
+ GLFW_ACCUM_BLUE_BITS = 0x00021009
261
+ GLFW_ACCUM_ALPHA_BITS = 0x0002100A
262
+ GLFW_AUX_BUFFERS = 0x0002100B
263
+ GLFW_STEREO = 0x0002100C
264
+ GLFW_SAMPLES = 0x0002100D
265
+ GLFW_SRGB_CAPABLE = 0x0002100E
266
+ GLFW_REFRESH_RATE = 0x0002100F
267
+ GLFW_DOUBLEBUFFER = 0x00021010
268
+
269
+ GLFW_CLIENT_API = 0x00022001
270
+ GLFW_CONTEXT_VERSION_MAJOR = 0x00022002
271
+ GLFW_CONTEXT_VERSION_MINOR = 0x00022003
272
+ GLFW_CONTEXT_REVISION = 0x00022004
273
+ GLFW_CONTEXT_ROBUSTNESS = 0x00022005
274
+ GLFW_OPENGL_FORWARD_COMPAT = 0x00022006
275
+ GLFW_CONTEXT_DEBUG = 0x00022007 # Renamed from GLFW_OPENGL_DEBUG_CONTEXT since GLFW 3.4
276
+ GLFW_OPENGL_DEBUG_CONTEXT = GLFW_CONTEXT_DEBUG # Legacy name for compatibility added since GLFW 3.4
277
+ GLFW_OPENGL_PROFILE = 0x00022008
278
+ GLFW_CONTEXT_RELEASE_BEHAVIOR = 0x00022009
279
+ GLFW_CONTEXT_NO_ERROR = 0x0002200A
280
+ GLFW_CONTEXT_CREATION_API = 0x0002200B # Available since GLFW 3.2
281
+ GLFW_SCALE_TO_MONITOR = 0x0002200C # Available since GLFW 3.3
282
+ GLFW_SCALE_FRAMEBUFFER = 0x0002200D # Available since GLFW 3.4
283
+
284
+ GLFW_COCOA_RETINA_FRAMEBUFFER = 0x00023001 # Available since GLFW 3.3
285
+ GLFW_COCOA_FRAME_NAME = 0x00023002 # Available since GLFW 3.3
286
+ GLFW_COCOA_GRAPHICS_SWITCHING = 0x00023003 # Available since GLFW 3.3
287
+
288
+ GLFW_X11_CLASS_NAME = 0x00024001 # Available since GLFW 3.3
289
+ GLFW_X11_INSTANCE_NAME = 0x00024002 # Available since GLFW 3.3
290
+ GLFW_WIN32_KEYBOARD_MENU = 0x00025001 # Available since GLFW 3.4
291
+ GLFW_WIN32_SHOWDEFAULT = 0x00025002 # Available since GLFW 3.4
292
+ GLFW_WAYLAND_APP_ID = 0x00026001 # Available since GLFW 3.4
293
+
294
+ GLFW_NO_API = 0 # Available since GLFW 3.2
295
+ GLFW_OPENGL_API = 0x00030001
296
+ GLFW_OPENGL_ES_API = 0x00030002
297
+
298
+ GLFW_NO_ROBUSTNESS = 0
299
+ GLFW_NO_RESET_NOTIFICATION = 0x00031001
300
+ GLFW_LOSE_CONTEXT_ON_RESET = 0x00031002
301
+
302
+ GLFW_OPENGL_ANY_PROFILE = 0
303
+ GLFW_OPENGL_CORE_PROFILE = 0x00032001
304
+ GLFW_OPENGL_COMPAT_PROFILE = 0x00032002
305
+
306
+ GLFW_CURSOR = 0x00033001
307
+ GLFW_STICKY_KEYS = 0x00033002
308
+ GLFW_STICKY_MOUSE_BUTTONS = 0x00033003
309
+ GLFW_LOCK_KEY_MODS = 0x00033004 # Available since GLFW 3.3
310
+ GLFW_RAW_MOUSE_MOTION = 0x00033005 # Available since GLFW 3.3
311
+
312
+ GLFW_CURSOR_NORMAL = 0x00034001
313
+ GLFW_CURSOR_HIDDEN = 0x00034002
314
+ GLFW_CURSOR_DISABLED = 0x00034003
315
+ GLFW_CURSOR_CAPTURED = 0x00034004 # Available since GLFW 3.4
316
+
317
+ GLFW_ANY_RELEASE_BEHAVIOR = 0
318
+ GLFW_RELEASE_BEHAVIOR_FLUSH = 0x00035001
319
+ GLFW_RELEASE_BEHAVIOR_NONE = 0x00035002
320
+
321
+ GLFW_NATIVE_CONTEXT_API = 0x00036001 # Available since GLFW 3.2
322
+ GLFW_EGL_CONTEXT_API = 0x00036002 # Available since GLFW 3.2
323
+ GLFW_OSMESA_CONTEXT_API = 0x00036003 # Available since GLFW 3.3
324
+
325
+ GLFW_ANGLE_PLATFORM_TYPE_NONE = 0x00037001 # Available since GLFW 3.4
326
+ GLFW_ANGLE_PLATFORM_TYPE_OPENGL = 0x00037002 # Available since GLFW 3.4
327
+ GLFW_ANGLE_PLATFORM_TYPE_OPENGLES = 0x00037003 # Available since GLFW 3.4
328
+ GLFW_ANGLE_PLATFORM_TYPE_D3D9 = 0x00037004 # Available since GLFW 3.4
329
+ GLFW_ANGLE_PLATFORM_TYPE_D3D11 = 0x00037005 # Available since GLFW 3.4
330
+ GLFW_ANGLE_PLATFORM_TYPE_VULKAN = 0x00037007 # Available since GLFW 3.4
331
+ GLFW_ANGLE_PLATFORM_TYPE_METAL = 0x00037008 # Available since GLFW 3.4
332
+
333
+ GLFW_WAYLAND_PREFER_LIBDECOR = 0x00038001 # Available since GLFW 3.3.9
334
+ GLFW_WAYLAND_DISABLE_LIBDECOR = 0x00038002 # Available since GLFW 3.3.9
335
+
336
+ GLFW_ANY_POSITION = 0x80000000 # Available since GLFW 3.4
337
+
338
+ GLFW_ARROW_CURSOR = 0x00036001
339
+ GLFW_IBEAM_CURSOR = 0x00036002
340
+ GLFW_CROSSHAIR_CURSOR = 0x00036003
341
+ GLFW_POINTING_HAND_CURSOR = 0x00036004 # Renamed from GLFW_HAND_CURSOR since GLFW 3.4
342
+ GLFW_RESIZE_EW_CURSOR = 0x00036005 # Renamed from GLFW_HRESIZE_CURSOR since GLFW 3.4
343
+ GLFW_RESIZE_NS_CURSOR = 0x00036006 # Renamed from GLFW_VRESIZE_CURSOR since GLFW 3.4
344
+ GLFW_RESIZE_NWSE_CURSOR = 0x00036007 # Available since GLFW 3.4
345
+ GLFW_RESIZE_NESW_CURSOR = 0x00036008 # Available since GLFW 3.4
346
+ GLFW_RESIZE_ALL_CURSOR = 0x00036009 # Available since GLFW 3.4
347
+ GLFW_NOT_ALLOWED_CURSOR = 0x0003600A # Available since GLFW 3.4
348
+
349
+ GLFW_HRESIZE_CURSOR = GLFW_RESIZE_EW_CURSOR # Legacy name for compatibility added since GLFW 3.4
350
+ GLFW_VRESIZE_CURSOR = GLFW_RESIZE_NS_CURSOR # Legacy name for compatibility added since GLFW 3.4
351
+ GLFW_HAND_CURSOR = GLFW_POINTING_HAND_CURSOR # Legacy name for compatibility added since GLFW 3.4
352
+
353
+ GLFW_CONNECTED = 0x00040001
354
+ GLFW_DISCONNECTED = 0x00040002
355
+
356
+ GLFW_JOYSTICK_HAT_BUTTONS = 0x00050001 # Available since GLFW 3.3
357
+ GLFW_ANGLE_PLATFORM_TYPE = 0x00050002 # Available since GLFW 3.4
358
+ GLFW_PLATFORM = 0x00050003 # Available since GLFW 3.4
359
+
360
+
361
+ GLFW_COCOA_CHDIR_RESOURCES = 0x00051001 # Available since GLFW 3.3
362
+ GLFW_COCOA_MENUBAR = 0x00051002 # Available since GLFW 3.3
363
+
364
+ GLFW_X11_XCB_VULKAN_SURFACE = 0x00052001 # Available since GLFW 3.4
365
+
366
+ GLFW_WAYLAND_LIBDECOR = 0x00053001 # Available since GLFW 3.3.9
367
+
368
+ GLFW_ANY_PLATFORM = 0x00060000 # Available since GLFW 3.4
369
+ GLFW_PLATFORM_WIN32 = 0x00060001 # Available since GLFW 3.4
370
+ GLFW_PLATFORM_COCOA = 0x00060002 # Available since GLFW 3.4
371
+ GLFW_PLATFORM_WAYLAND = 0x00060003 # Available since GLFW 3.4
372
+ GLFW_PLATFORM_X11 = 0x00060004 # Available since GLFW 3.4
373
+ GLFW_PLATFORM_NULL = 0x00060005 # Available since GLFW 3.4
374
+
375
+ GLFW_DONT_CARE = -1
376
+
377
+ # typedefs
378
+ @@glfw_cb_function_signature = {
379
+ :GLFWerrorfun => "void GLFWerrorfun(int,const char*)",
380
+ :GLFWwindowposfun => "void GLFWwindowposfun(void*,int,int)",
381
+ :GLFWwindowsizefun => "void GLFWwindowsizefun(void*,int,int)",
382
+ :GLFWwindowclosefun => "void GLFWwindowclosefun(void*)",
383
+ :GLFWwindowrefreshfun => "void GLFWwindowrefreshfun(void*)",
384
+ :GLFWwindowfocusfun => "void GLFWwindowfocusfun(void*,int)",
385
+ :GLFWwindowiconifyfun => "void GLFWwindowiconifyfun(void*,int)",
386
+ :GLFWwindowmaximizefun => "void GLFWwindowmaximizefun(void*,int)",
387
+ :GLFWframebuffersizefun => "void GLFWframebuffersizefun(void*,int,int)",
388
+ :GLFWwindowcontentscalefun => "void GLFWwindowcontentscalefun(void*,float,float)", # Available since GLFW 3.3
389
+ :GLFWmousebuttonfun => "void GLFWmousebuttonfun(void*,int,int,int)",
390
+ :GLFWcursorposfun => "void GLFWcursorposfun(void*,double,double)",
391
+ :GLFWcursorenterfun => "void GLFWcursorenterfun(void*,int)",
392
+ :GLFWscrollfun => "void GLFWscrollfun(void*,double,double)",
393
+ :GLFWkeyfun => "void GLFWkeyfun(void*,int,int,int,int)",
394
+ :GLFWcharfun => "void GLFWcharfun(void*,unsigned int)",
395
+ :GLFWcharmodsfun => "void GLFWcharmodsfun(void*,unsigned int,int)", # Available since GLFW 3.1 / Scheduled for removal in version 4.0.
396
+ :GLFWdropfun => "void GLFWdropfun(void*,int,const char**)", # Available since GLFW 3.1
397
+ :GLFWmonitorfun => "void GLFWmonitorfun(void*,int)", # Available since GLFW 3.0
398
+ :GLFWjoystickfun => "void GGLFWjoystickfun(int,int)", # Available since GLFW 3.2
399
+ }
400
+
401
+ # Creates a callback as an instance of Fiddle::Function
402
+ def self.create_callback_function(sym, proc=nil, &blk)
403
+ if block_given?
404
+ return bind(@@glfw_cb_function_signature[sym], nil, &blk)
405
+ else
406
+ return bind(@@glfw_cb_function_signature[sym], nil, &proc)
407
+ end
408
+ end
409
+
410
+ GLFWerrorfun_cb_args = [Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP]
411
+ GLFWerrorfun_cb_retval = Fiddle::TYPE_VOID
412
+ GLFWwindowposfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
413
+ GLFWwindowposfun_cb_retval = Fiddle::TYPE_VOID
414
+ GLFWwindowsizefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
415
+ GLFWwindowsizefun_cb_retval = Fiddle::TYPE_VOID
416
+ GLFWwindowclosefun_cb_args = [Fiddle::TYPE_VOIDP]
417
+ GLFWwindowclosefun_cb_retval = Fiddle::TYPE_VOID
418
+ GLFWwindowrefreshfun_cb_args = [Fiddle::TYPE_VOIDP]
419
+ GLFWwindowrefreshfun_cb_retval = Fiddle::TYPE_VOID
420
+ GLFWwindowfocusfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
421
+ GLFWwindowfocusfun_cb_retval = Fiddle::TYPE_VOID
422
+ GLFWwindowiconifyfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
423
+ GLFWwindowiconifyfun_cb_retval = Fiddle::TYPE_VOID
424
+ GLFWframebuffersizefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
425
+ GLFWframebuffersizefun_cb_retval = Fiddle::TYPE_VOID
426
+ GLFWwindowcontentscalefun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_FLOAT, Fiddle::TYPE_FLOAT] # Available since GLFW 3.3
427
+ GLFWwindowcontentscalefun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.3
428
+ GLFWmousebuttonfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
429
+ GLFWmousebuttonfun_cb_retval = Fiddle::TYPE_VOID
430
+ GLFWcursorposfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_DOUBLE, Fiddle::TYPE_DOUBLE]
431
+ GLFWcursorposfun_cb_retval = Fiddle::TYPE_VOID
432
+ GLFWcursorenterfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT]
433
+ GLFWcursorenterfun_cb_retval = Fiddle::TYPE_VOID
434
+ GLFWscrollfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_DOUBLE, Fiddle::TYPE_DOUBLE]
435
+ GLFWscrollfun_cb_retval = Fiddle::TYPE_VOID
436
+ GLFWkeyfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT, Fiddle::TYPE_INT]
437
+ GLFWkeyfun_cb_retval = Fiddle::TYPE_VOID
438
+ GLFWcharfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT]
439
+ GLFWcharfun_cb_retval = Fiddle::TYPE_VOID
440
+ GLFWcharmodsfun_cb_args = [Fiddle::TYPE_VOIDP, -Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.1
441
+ GLFWcharmodsfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
442
+ GLFWdropfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT, Fiddle::TYPE_VOIDP] # Available since GLFW 3.1
443
+ GLFWdropfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.1
444
+ GLFWmonitorfun_cb_args = [Fiddle::TYPE_VOIDP, Fiddle::TYPE_INT] # Available since GLFW 3.0
445
+ GLFWmonitorfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.0
446
+ GLFWjoystickfun_cb_args = [Fiddle::TYPE_INT, Fiddle::TYPE_INT] # Available since GLFW 3.2
447
+ GLFWjoystickfun_cb_retval = Fiddle::TYPE_VOID # Available since GLFW 3.2
448
+
449
+ @@glfw_cb_closure_signature = {
450
+ :GLFWerrorfun => [GLFWerrorfun_cb_retval, GLFWerrorfun_cb_args],
451
+ :GLFWwindowposfun => [GLFWwindowposfun_cb_retval, GLFWwindowposfun_cb_args],
452
+ :GLFWwindowsizefun => [GLFWwindowsizefun_cb_retval, GLFWwindowsizefun_cb_args],
453
+ :GLFWwindowclosefun => [GLFWwindowclosefun_cb_retval, GLFWwindowclosefun_cb_args],
454
+ :GLFWwindowrefreshfun => [GLFWwindowrefreshfun_cb_retval, GLFWwindowrefreshfun_cb_args],
455
+ :GLFWwindowfocusfun => [GLFWwindowfocusfun_cb_retval, GLFWwindowfocusfun_cb_args],
456
+ :GLFWwindowiconifyfun => [GLFWwindowiconifyfun_cb_retval, GLFWwindowiconifyfun_cb_args],
457
+ :GLFWframebuffersizefun => [GLFWframebuffersizefun_cb_retval, GLFWframebuffersizefun_cb_args],
458
+ :GLFWwindowcontentscalefun => [GLFWwindowcontentscalefun_cb_retval, GLFWwindowcontentscalefun_cb_args], # Available since GLFW 3.3
459
+ :GLFWmousebuttonfun => [GLFWmousebuttonfun_cb_retval, GLFWmousebuttonfun_cb_args],
460
+ :GLFWcursorposfun => [GLFWcursorposfun_cb_retval, GLFWcursorposfun_cb_args],
461
+ :GLFWcursorenterfun => [GLFWcursorenterfun_cb_retval, GLFWcursorenterfun_cb_args],
462
+ :GLFWscrollfun => [GLFWscrollfun_cb_retval, GLFWscrollfun_cb_args],
463
+ :GLFWkeyfun => [GLFWkeyfun_cb_retval, GLFWkeyfun_cb_args],
464
+ :GLFWcharfun => [GLFWcharfun_cb_retval, GLFWcharfun_cb_args],
465
+ :GLFWcharmodsfun => [GLFWcharmodsfun_cb_retval, GLFWcharmodsfun_cb_args], # Available since GLFW 3.1
466
+ :GLFWdropfun => [GLFWdropfun_cb_retval, GLFWdropfun_cb_args], # Available since GLFW 3.1
467
+ :GLFWmonitorfun => [GLFWmonitorfun_cb_retval, GLFWmonitorfun_cb_args],
468
+ :GLFWjoystickfun => [GLFWjoystickfun_cb_retval, GLFWjoystickfun_cb_args], # Available since GLFW 3.2
469
+ }
470
+
471
+ # Creates a callback as an instance of Fiddle::Closure::BlockCaller
472
+ def self.create_callback_closure(sym, proc=nil, &blk)
473
+ cb_retval = @@glfw_cb_closure_signature[sym][0]
474
+ cb_args = @@glfw_cb_closure_signature[sym][1]
475
+ if block_given?
476
+ return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &blk )
477
+ else
478
+ return Fiddle::Closure::BlockCaller.new( cb_retval, cb_args, Fiddle::Function::DEFAULT, &proc )
479
+ end
480
+ end
481
+
482
+ # NOTE : Use 'create_callback_function' for backward compatibility.
483
+ def self.create_callback(sym, proc=nil, &blk)
484
+ return self.create_callback_closure( sym, proc, &blk )
485
+ end
486
+
487
+ # NOTE : Memory allocation callbacks addin in GLFW 3.4
488
+ # (GLFWallocatefun, GLFWreallocatefun, GLFWdeallocatefun and struct GLFWallocator)
489
+ # will not be supported in this bindings.
490
+
491
+ # struct
492
+ GLFWvidmode = struct(["int width",
493
+ "int height",
494
+ "int redBits",
495
+ "int greenBits",
496
+ "int blueBits",
497
+ "int refreshRate"])
498
+
499
+ GLFWgammaramp = struct(["unsigned short* red",
500
+ "unsigned short* green",
501
+ "unsigned short* blue",
502
+ "unsigned int size"])
503
+
504
+ # Available since GLFW 3.1
505
+ GLFWimage = struct(["int width",
506
+ "int height",
507
+ "unsigned char* pixels"])
508
+
509
+ # Available since GLFW 3.3
510
+ GLFWgamepadstate = struct(["unsigned char buttons[15]",
511
+ "float axes[6]"])
512
+
513
+ @@glfw_import_done = false
514
+
515
+ # Load native library.
516
+ def self.load_lib(lib_path = nil, output_error = false)
517
+ if lib_path == nil
518
+ lib_path = case GL.get_platform
519
+ when :OPENGL_PLATFORM_WINDOWS
520
+ Dir.pwd + '/GLFW3.dll'
521
+ when :OPENGL_PLATFORM_MACOSX
522
+ 'libglfw.dylib'
523
+ else
524
+ 'libglfw.so.3'
525
+ end
526
+ end
527
+
528
+ dlload(lib_path)
529
+
530
+ import_symbols(output_error) unless @@glfw_import_done
531
+ end
532
+
533
+ @@lib_signature = [
534
+ 'int glfwInit()',
535
+ 'void glfwTerminate()',
536
+ 'void glfwInitHint(int, int)', # Available since GLFW 3.3
537
+ 'void glfwGetVersion(int*, int*, int*)',
538
+ 'const char* glfwGetVersionString()',
539
+ 'int glfwGetError(const char**)', # Available since GLFW 3.3
540
+ 'void* glfwSetErrorCallback(void*)',
541
+ 'int glfwGetPlatform()', # Available since GLFW 3.4
542
+ 'int glfwPlatformSupported(int)', # Available since GLFW 3.4
543
+ 'void** glfwGetMonitors(int*)',
544
+ 'void* glfwGetPrimaryMonitor()',
545
+ 'void glfwGetMonitorPos(void*, int*, int*)',
546
+ 'void glfwGetMonitorWorkarea(void* monitor, int*, int*, int*, int*)', # Available since GLFW 3.3
547
+ 'void glfwGetMonitorPhysicalSize(void*, int*, int*)',
548
+ 'void glfwGetMonitorContentScale(void*, float*, float*)', # Available since GLFW 3.3
549
+ 'const char* glfwGetMonitorName(void*)',
550
+ 'void glfwSetMonitorUserPointer(void*, void*)', # Available since GLFW 3.3
551
+ 'const void* glfwGetMonitorUserPointer(void**)', # Available since GLFW 3.3
552
+ 'void* glfwSetMonitorCallback(void*)', # Available since GLFW 3.0
553
+ 'const void* glfwGetVideoModes(void*, int*)',
554
+ 'const void* glfwGetVideoMode(void*)', # Available since GLFW 3.0
555
+ 'void glfwSetGamma(void*, float)', # Available since GLFW 3.0
556
+ 'const void* glfwGetGammaRamp(void*)', # Available since GLFW 3.0
557
+ 'void glfwSetGammaRamp(void*, const void*)', # Available since GLFW 3.0
558
+ 'void glfwDefaultWindowHints()', # Available since GLFW 3.0
559
+ 'void glfwWindowHint(int, int)', # Available since GLFW 3.0
560
+ 'void glfwWindowHintString(int, const char*)', # Available since GLFW 3.3
561
+ 'void* glfwCreateWindow(int, int, const char*, void*, void*)', # Available since GLFW 3.0
562
+ 'void glfwDestroyWindow(void*)', # Available since GLFW 3.0
563
+ 'int glfwWindowShouldClose(void*)', # Available since GLFW 3.0
564
+ 'void glfwSetWindowShouldClose(void*, int)', # Available since GLFW 3.0
565
+ 'const char* glfwGetWindowTitle(void*)', # Available since GLFW 3.4
566
+ 'void glfwSetWindowTitle(void*, const char*)',
567
+ 'void glfwSetWindowIcon(void*, int, void*)', # Available since GLFW 3.2
568
+ 'void glfwGetWindowPos(void*, int*, int*)', # Available since GLFW 3.0
569
+ 'void glfwSetWindowPos(void*, int, int)',
570
+ 'void glfwGetWindowSize(void*, int*, int*)',
571
+ 'void glfwSetWindowSizeLimits(void*, int, int, int, int)', # Available since GLFW 3.2
572
+ 'void glfwSetWindowAspectRatio(void*, int, int)', # Available since GLFW 3.2
573
+ 'void glfwSetWindowSize(void*, int, int)',
574
+ 'void glfwGetFramebufferSize(void*, int*, int*)', # Available since GLFW 3.0
575
+ 'void glfwGetWindowFrameSize(void*, int*, int*, int*, int*)', # Available since GLFW 3.1
576
+ 'void glfwGetWindowContentScale(void*, float*, float*)', # Available since GLFW 3.3
577
+ 'float glfwGetWindowOpacity(void*)', # Available since GLFW 3.3
578
+ 'void glfwSetWindowOpacity(void*, float)', # Available since GLFW 3.3
579
+ 'void glfwIconifyWindow(void*)',
580
+ 'void glfwRestoreWindow(void*)',
581
+ 'void glfwMaximizeWindow(void*)', # Available since GLFW 3.2
582
+ 'void glfwShowWindow(void*)', # Available since GLFW 3.0
583
+ 'void glfwHideWindow(void*)', # Available since GLFW 3.0
584
+ 'void glfwFocusWindow(void*)', # Available since GLFW 3.2
585
+ 'void glfwRequestWindowAttention(void*)', # Available since GLFW 3.3
586
+ 'void* glfwGetWindowMonitor(void*)', # Available since GLFW 3.0
587
+ 'void glfwSetWindowMonitor(void*, void*, int, int, int, int, int)', # Available since GLFW 3.2
588
+ 'int glfwGetWindowAttrib(void*, int)', # Available since GLFW 3.0
589
+ 'void glfwSetWindowAttrib(void*, int, int)', # Available since GLFW 3.3
590
+ 'void glfwSetWindowUserPointer(void*, void*)', # Available since GLFW 3.0
591
+ 'void* glfwGetWindowUserPointer(void*)', # Available since GLFW 3.0
592
+ 'void* glfwSetWindowPosCallback(void*, void*)', # Available since GLFW 3.0
593
+ 'void* glfwSetWindowSizeCallback(void*, void*)',
594
+ 'void* glfwSetWindowCloseCallback(void*, void*)',
595
+ 'void* glfwSetWindowRefreshCallback(void*, void*)',
596
+ 'void* glfwSetWindowFocusCallback(void*, void*)', # Available since GLFW 3.0
597
+ 'void* glfwSetWindowIconifyCallback(void*, void*)', # Available since GLFW 3.0
598
+ 'void* glfwSetWindowMaximizeCallback(void*, void*)', # Available since GLFW 3.3
599
+ 'void* glfwSetFramebufferSizeCallback(void*, void*)', # Available since GLFW 3.0
600
+ 'void* glfwSetWindowContentScaleCallback(void*, void*)', # Available since GLFW 3.3
601
+ 'void glfwPollEvents()',
602
+ 'void glfwWaitEvents()',
603
+ 'void glfwWaitEventsTimeout(double)', # Available since GLFW 3.2
604
+ 'void glfwPostEmptyEvent()', # Available since GLFW 3.1
605
+ 'int glfwGetInputMode(void*, int)', # Available since GLFW 3.0
606
+ 'void glfwSetInputMode(void*, int, int)', # Available since GLFW 3.0
607
+ 'int glfwRawMouseMotionSupported()', # Available since GLFW 3.3
608
+ 'const char* glfwGetKeyName(int, int)', # Available since GLFW 3.2
609
+ 'int glfwGetKeyScancode(int)', # Available since GLFW 3.3
610
+ 'int glfwGetKey(void*, int)',
611
+ 'int glfwGetMouseButton(void*, int)',
612
+ 'void glfwGetCursorPos(void*, double*, double*)', # Available since GLFW 3.0
613
+ 'void glfwSetCursorPos(void*, double, double)', # Available since GLFW 3.0
614
+ 'void* glfwCreateCursor(void*, int, int)', # Available since GLFW 3.1
615
+ 'void* glfwCreateStandardCursor(int)', # Available since GLFW 3.1
616
+ 'void glfwDestroyCursor(void*)', # Available since GLFW 3.1
617
+ 'void glfwSetCursor(void*, void*)', # Available since GLFW 3.1
618
+ 'void* glfwSetKeyCallback(void*, void*)',
619
+ 'void* glfwSetCharCallback(void*, void*)',
620
+ 'void* glfwSetCharModsCallback(void*, void*)', # Available since GLFW 3.1 / Scheduled for removal in version 4.0.
621
+ 'void* glfwSetMouseButtonCallback(void*, void*)',
622
+ 'void* glfwSetCursorPosCallback(void*, void*)', # Available since GLFW 3.0
623
+ 'void* glfwSetCursorEnterCallback(void*, void*)', # Available since GLFW 3.0
624
+ 'void* glfwSetScrollCallback(void*, void*)', # Available since GLFW 3.0
625
+ 'void* glfwSetDropCallback(void*, void*)', # Available since GLFW 3.1
626
+
627
+ 'int glfwJoystickPresent(int)', # Available since GLFW 3.0
628
+ 'const float* glfwGetJoystickAxes(int, int*)', # Available since GLFW 3.0
629
+ 'const unsigned char* glfwGetJoystickButtons(int, int*)',
630
+ 'const unsigned char* glfwGetJoystickHats(int, int*)', # Available since GLFW 3.3
631
+ 'const char* glfwGetJoystickName(int)', # Available since GLFW 3.0
632
+ 'const char* glfwGetJoystickGUID(int)', # Available since GLFW 3.3
633
+ 'void glfwSetJoystickUserPointer(int, void*)', # Available since GLFW 3.3
634
+ 'void* glfwGetJoystickUserPointer(int)', # Available since GLFW 3.3
635
+ 'int glfwJoystickIsGamepad(int)', # Available since GLFW 3.3
636
+ 'void* glfwSetJoystickCallback(void*)', # Available since GLFW 3.2
637
+ 'int glfwUpdateGamepadMappings(const char*)', # Available since GLFW 3.3
638
+ 'const char* glfwGetGamepadName(int)', # Available since GLFW 3.3
639
+ 'int glfwGetGamepadState(int, void*)', # Available since GLFW 3.3
640
+ 'void glfwSetClipboardString(void*, const char*)', # Available since GLFW 3.0
641
+ 'const char* glfwGetClipboardString(void*)', # Available since GLFW 3.0
642
+ 'double glfwGetTime()',
643
+ 'void glfwSetTime(double)',
644
+ 'GLFWuint64 glfwGetTimerValue()', # Available since GLFW 3.2
645
+ 'GLFWuint64 glfwGetTimerFrequency()', # Available since GLFW 3.2
646
+ 'void glfwMakeContextCurrent(void*)', # Available since GLFW 3.0
647
+ 'void* glfwGetCurrentContext()', # Available since GLFW 3.0
648
+ 'void glfwSwapBuffers(void*)',
649
+ 'void glfwSwapInterval(int)',
650
+ 'int glfwExtensionSupported(const char*)',
651
+ 'void* glfwGetProcAddress(const char*)',
652
+ # >>> Vulkan >>>
653
+ 'int glfwVulkanSupported()', # Available since GLFW 3.2
654
+ 'const char** glfwGetRequiredInstanceExtensions(unsigned int*)', # Available since GLFW 3.2
655
+ # 'GLFWvkproc glfwGetInstanceProcAddress(void*, const char*)',
656
+ # 'int glfwGetPhysicalDevicePresentationSupport(void*, void*, unsigned int)',
657
+ # 'VkResult glfwCreateWindowSurface(void*, void*, const void*, void*)',
658
+ # 'void glfwInitVulkanLoader(void*)',
659
+ # <<< Vulkan <<<
660
+ # >>> Allocator >>>
661
+ # 'void glfwInitAllocator(void*)',
662
+ # <<< Allocator <<<
663
+ ]
664
+
665
+ case GL.get_platform
666
+ when :OPENGL_PLATFORM_WINDOWS
667
+ @@lib_signature << 'const char* glfwGetWin32Adapter(void*)'
668
+ @@lib_signature << 'const char* glfwGetWin32Monitor(void*)'
669
+ @@lib_signature << 'void* glfwGetWin32Window(void*)'
670
+ @@lib_signature << 'void* glfwGetWGLContext(void*)'
671
+ when :OPENGL_PLATFORM_MACOSX
672
+ @@lib_signature << 'unsigned int glfwGetCocoaMonitor(void*)'
673
+ @@lib_signature << 'void* glfwGetCocoaWindow(void*)'
674
+ @@lib_signature << 'void* glfwGetCocoaView(void*)'
675
+ @@lib_signature << 'void* glfwGetNSGLContext(void*)'
676
+ when :OPENGL_PLATFORM_LINUX
677
+ @@lib_signature << 'void* glfwGetX11Display()'
678
+ @@lib_signature << 'unsinged long glfwGetX11Adapter(void*)'
679
+ @@lib_signature << 'unsinged long glfwGetX11Monitor(void*)'
680
+ @@lib_signature << 'unsinged long glfwGetX11Window(void*)'
681
+ @@lib_signature << 'void glfwSetX11SelectionString(const char*)'
682
+ @@lib_signature << 'const char* glfwGetX11SelectionString()'
683
+ @@lib_signature << 'unsinged long glfwGetGLXWindow(void*)'
684
+ end
685
+
686
+ def self.import_symbols(output_error = false)
687
+ typealias 'GLFWuint64', 'unsigned long long' # Available since GLFW 3.2
688
+
689
+ # function
690
+ @@lib_signature.each do |sig|
691
+ begin
692
+ extern sig
693
+ rescue
694
+ $stderr.puts("[Warning] Failed to import #{sig}.") if output_error
695
+ end
696
+ end
697
+
698
+ ver_major = ' ' * 4
699
+ ver_minor = ' ' * 4
700
+ ver_rev = ' ' * 4
701
+ glfwGetVersion(ver_major, ver_minor, ver_rev)
702
+
703
+ GLFW.const_set('GLFW_VERSION_MAJOR', ver_major.unpack('L')[0])
704
+ GLFW.const_set('GLFW_VERSION_MINOR', ver_minor.unpack('L')[0])
705
+ GLFW.const_set('GLFW_VERSION_REVISION', ver_rev.unpack('L')[0])
706
+
707
+ # Convert method names (e.g.: GLFW.glfwInit -> GLFW.Init)
708
+ self.singleton_methods(false).each do |method_name|
709
+ m = singleton_method(method_name)
710
+ if m.name.to_s.start_with? 'glfw'
711
+ modified_api = m.name.to_s[4..-1] # omit prefix "glfw"
712
+ define_singleton_method(modified_api, m) # define alias
713
+ end
714
+ end
715
+
716
+ # Convert constant names (e.g.: GLFW::GLFW_KEY_ESCAPE -> GLFW::KEY_ESCAPE)
717
+ self.constants.each do |constant|
718
+ cs = constant.to_s
719
+ if cs[0..4] == "GLFW_"
720
+ if cs[5] =~ /\d/
721
+ # We have to abandon name conversion like 'GL_2D, GL_3D_COLOR, GL_4_BYTES, etc.
722
+ # Because constants can't start with a digit or underscore.
723
+ # [Note] This rule has been inherited from Yoshi's very original ruby-opengl (confirmed with opengl-0.32g, 2004-07-17).
724
+ else
725
+ # Convert by omitting the 'GLFW_' prefix like GLFW::GLFW_KEY_ESCAPE into GLFW::KEY_ESCAPE
726
+ const_set(cs[5..-1], GLFW.const_get(constant))
727
+ end
728
+ end
729
+ end
730
+
731
+ @@glfw_import_done = true
732
+ end
733
+
734
+ end
735
+
736
+ =begin
737
+ Ruby-OpenGL : Yet another OpenGL wrapper for Ruby (and wrapper code generator)
738
+ Copyright (c) 2013-2025 vaiorabbit <http://twitter.com/vaiorabbit>
739
+
740
+ This software is provided 'as-is', without any express or implied
741
+ warranty. In no event will the authors be held liable for any damages
742
+ arising from the use of this software.
743
+
744
+ Permission is granted to anyone to use this software for any purpose,
745
+ including commercial applications, and to alter it and redistribute it
746
+ freely, subject to the following restrictions:
747
+
748
+ 1. The origin of this software must not be misrepresented; you must not
749
+ claim that you wrote the original software. If you use this software
750
+ in a product, an acknowledgment in the product documentation would be
751
+ appreciated but is not required.
752
+
753
+ 2. Altered source versions must be plainly marked as such, and must not be
754
+ misrepresented as being the original software.
755
+
756
+ 3. This notice may not be removed or altered from any source
757
+ distribution.
758
+ =end
759
+