glfw3.c 3.4.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 (68) hide show
  1. package/GLFW/CMakeLists.txt +368 -0
  2. package/GLFW/cocoa_init.m +694 -0
  3. package/GLFW/cocoa_joystick.h +49 -0
  4. package/GLFW/cocoa_joystick.m +485 -0
  5. package/GLFW/cocoa_monitor.m +643 -0
  6. package/GLFW/cocoa_platform.h +302 -0
  7. package/GLFW/cocoa_time.c +57 -0
  8. package/GLFW/cocoa_time.h +35 -0
  9. package/GLFW/cocoa_window.m +2072 -0
  10. package/GLFW/context.c +765 -0
  11. package/GLFW/egl_context.c +911 -0
  12. package/GLFW/glfw.rc.in +30 -0
  13. package/GLFW/glfw3.c +109 -0
  14. package/GLFW/glfw3.h +6564 -0
  15. package/GLFW/glfw3native.h +663 -0
  16. package/GLFW/glx_context.c +719 -0
  17. package/GLFW/init.c +528 -0
  18. package/GLFW/input.c +1505 -0
  19. package/GLFW/internal.h +1022 -0
  20. package/GLFW/linux_joystick.c +436 -0
  21. package/GLFW/linux_joystick.h +64 -0
  22. package/GLFW/mappings.h +1001 -0
  23. package/GLFW/mappings.h.in +82 -0
  24. package/GLFW/monitor.c +548 -0
  25. package/GLFW/nsgl_context.m +384 -0
  26. package/GLFW/null_init.c +264 -0
  27. package/GLFW/null_joystick.c +56 -0
  28. package/GLFW/null_joystick.h +32 -0
  29. package/GLFW/null_monitor.c +160 -0
  30. package/GLFW/null_platform.h +271 -0
  31. package/GLFW/null_window.c +719 -0
  32. package/GLFW/osmesa_context.c +383 -0
  33. package/GLFW/platform.c +214 -0
  34. package/GLFW/platform.h +212 -0
  35. package/GLFW/posix_module.c +53 -0
  36. package/GLFW/posix_poll.c +83 -0
  37. package/GLFW/posix_poll.h +30 -0
  38. package/GLFW/posix_thread.c +107 -0
  39. package/GLFW/posix_thread.h +49 -0
  40. package/GLFW/posix_time.c +65 -0
  41. package/GLFW/posix_time.h +41 -0
  42. package/GLFW/vulkan.c +328 -0
  43. package/GLFW/wgl_context.c +798 -0
  44. package/GLFW/win32_init.c +731 -0
  45. package/GLFW/win32_joystick.c +767 -0
  46. package/GLFW/win32_joystick.h +51 -0
  47. package/GLFW/win32_module.c +51 -0
  48. package/GLFW/win32_monitor.c +569 -0
  49. package/GLFW/win32_platform.h +631 -0
  50. package/GLFW/win32_thread.c +100 -0
  51. package/GLFW/win32_thread.h +53 -0
  52. package/GLFW/win32_time.c +54 -0
  53. package/GLFW/win32_time.h +43 -0
  54. package/GLFW/win32_window.c +2592 -0
  55. package/GLFW/window.c +1172 -0
  56. package/GLFW/wl_init.c +1003 -0
  57. package/GLFW/wl_monitor.c +274 -0
  58. package/GLFW/wl_platform.h +691 -0
  59. package/GLFW/wl_window.c +3308 -0
  60. package/GLFW/x11_init.c +1656 -0
  61. package/GLFW/x11_monitor.c +641 -0
  62. package/GLFW/x11_platform.h +1004 -0
  63. package/GLFW/x11_window.c +3357 -0
  64. package/GLFW/xkb_unicode.c +943 -0
  65. package/GLFW/xkb_unicode.h +30 -0
  66. package/LICENSE +22 -0
  67. package/README.md +236 -0
  68. package/package.json +32 -0
@@ -0,0 +1,663 @@
1
+ /*************************************************************************
2
+ * GLFW 3.4 - www.glfw.org
3
+ * A library for OpenGL, window and input
4
+ *------------------------------------------------------------------------
5
+ * Copyright (c) 2002-2006 Marcus Geelnard
6
+ * Copyright (c) 2006-2018 Camilla Löwy <elmindreda@glfw.org>
7
+ *
8
+ * This software is provided 'as-is', without any express or implied
9
+ * warranty. In no event will the authors be held liable for any damages
10
+ * arising from the use of this software.
11
+ *
12
+ * Permission is granted to anyone to use this software for any purpose,
13
+ * including commercial applications, and to alter it and redistribute it
14
+ * freely, subject to the following restrictions:
15
+ *
16
+ * 1. The origin of this software must not be misrepresented; you must not
17
+ * claim that you wrote the original software. If you use this software
18
+ * in a product, an acknowledgment in the product documentation would
19
+ * be appreciated but is not required.
20
+ *
21
+ * 2. Altered source versions must be plainly marked as such, and must not
22
+ * be misrepresented as being the original software.
23
+ *
24
+ * 3. This notice may not be removed or altered from any source
25
+ * distribution.
26
+ *
27
+ *************************************************************************/
28
+
29
+ #ifndef _glfw3_native_h_
30
+ #define _glfw3_native_h_
31
+
32
+ #ifdef __cplusplus
33
+ extern "C" {
34
+ #endif
35
+
36
+
37
+ /*************************************************************************
38
+ * Doxygen documentation
39
+ *************************************************************************/
40
+
41
+ /*! @file glfw3native.h
42
+ * @brief The header of the native access functions.
43
+ *
44
+ * This is the header file of the native access functions. See @ref native for
45
+ * more information.
46
+ */
47
+ /*! @defgroup native Native access
48
+ * @brief Functions related to accessing native handles.
49
+ *
50
+ * **By using the native access functions you assert that you know what you're
51
+ * doing and how to fix problems caused by using them. If you don't, you
52
+ * shouldn't be using them.**
53
+ *
54
+ * Before the inclusion of @ref glfw3native.h, you may define zero or more
55
+ * window system API macro and zero or more context creation API macros.
56
+ *
57
+ * The chosen backends must match those the library was compiled for. Failure
58
+ * to do this will cause a link-time error.
59
+ *
60
+ * The available window API macros are:
61
+ * * `GLFW_EXPOSE_NATIVE_WIN32`
62
+ * * `GLFW_EXPOSE_NATIVE_COCOA`
63
+ * * `GLFW_EXPOSE_NATIVE_X11`
64
+ * * `GLFW_EXPOSE_NATIVE_WAYLAND`
65
+ *
66
+ * The available context API macros are:
67
+ * * `GLFW_EXPOSE_NATIVE_WGL`
68
+ * * `GLFW_EXPOSE_NATIVE_NSGL`
69
+ * * `GLFW_EXPOSE_NATIVE_GLX`
70
+ * * `GLFW_EXPOSE_NATIVE_EGL`
71
+ * * `GLFW_EXPOSE_NATIVE_OSMESA`
72
+ *
73
+ * These macros select which of the native access functions that are declared
74
+ * and which platform-specific headers to include. It is then up your (by
75
+ * definition platform-specific) code to handle which of these should be
76
+ * defined.
77
+ *
78
+ * If you do not want the platform-specific headers to be included, define
79
+ * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header.
80
+ *
81
+ * @code
82
+ * #define GLFW_EXPOSE_NATIVE_WIN32
83
+ * #define GLFW_EXPOSE_NATIVE_WGL
84
+ * #define GLFW_NATIVE_INCLUDE_NONE
85
+ * #include <GLFW/glfw3native.h>
86
+ * @endcode
87
+ */
88
+
89
+
90
+ /*************************************************************************
91
+ * System headers and types
92
+ *************************************************************************/
93
+
94
+ #if !defined(GLFW_NATIVE_INCLUDE_NONE)
95
+
96
+ #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)
97
+ /* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
98
+ * example to allow applications to correctly declare a GL_KHR_debug callback)
99
+ * but windows.h assumes no one will define APIENTRY before it does
100
+ */
101
+ #if defined(GLFW_APIENTRY_DEFINED)
102
+ #undef APIENTRY
103
+ #undef GLFW_APIENTRY_DEFINED
104
+ #endif
105
+ #include <windows.h>
106
+ #endif
107
+
108
+ #if defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)
109
+ #if defined(__OBJC__)
110
+ #import <Cocoa/Cocoa.h>
111
+ #else
112
+ #include <ApplicationServices/ApplicationServices.h>
113
+ #include <objc/objc.h>
114
+ #endif
115
+ #endif
116
+
117
+ #if defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)
118
+ #include <X11/Xlib.h>
119
+ #include <X11/extensions/Xrandr.h>
120
+ #endif
121
+
122
+ #if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
123
+ #include <wayland-client.h>
124
+ #endif
125
+
126
+ #if defined(GLFW_EXPOSE_NATIVE_WGL)
127
+ /* WGL is declared by windows.h */
128
+ #endif
129
+ #if defined(GLFW_EXPOSE_NATIVE_NSGL)
130
+ /* NSGL is declared by Cocoa.h */
131
+ #endif
132
+ #if defined(GLFW_EXPOSE_NATIVE_GLX)
133
+ /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by
134
+ * default it also acts as an OpenGL header
135
+ * However, glx.h will include gl.h, which will define it unconditionally
136
+ */
137
+ #if defined(GLFW_GLAPIENTRY_DEFINED)
138
+ #undef GLAPIENTRY
139
+ #undef GLFW_GLAPIENTRY_DEFINED
140
+ #endif
141
+ #include <GL/glx.h>
142
+ #endif
143
+ #if defined(GLFW_EXPOSE_NATIVE_EGL)
144
+ #include <EGL/egl.h>
145
+ #endif
146
+ #if defined(GLFW_EXPOSE_NATIVE_OSMESA)
147
+ /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by
148
+ * default it also acts as an OpenGL header
149
+ * However, osmesa.h will include gl.h, which will define it unconditionally
150
+ */
151
+ #if defined(GLFW_GLAPIENTRY_DEFINED)
152
+ #undef GLAPIENTRY
153
+ #undef GLFW_GLAPIENTRY_DEFINED
154
+ #endif
155
+ #include <GL/osmesa.h>
156
+ #endif
157
+
158
+ #endif /*GLFW_NATIVE_INCLUDE_NONE*/
159
+
160
+
161
+ /*************************************************************************
162
+ * Functions
163
+ *************************************************************************/
164
+
165
+ #if defined(GLFW_EXPOSE_NATIVE_WIN32)
166
+ /*! @brief Returns the adapter device name of the specified monitor.
167
+ *
168
+ * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)
169
+ * of the specified monitor, or `NULL` if an [error](@ref error_handling)
170
+ * occurred.
171
+ *
172
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
173
+ * GLFW_PLATFORM_UNAVAILABLE.
174
+ *
175
+ * @thread_safety This function may be called from any thread. Access is not
176
+ * synchronized.
177
+ *
178
+ * @since Added in version 3.1.
179
+ *
180
+ * @ingroup native
181
+ */
182
+ GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
183
+
184
+ /*! @brief Returns the display device name of the specified monitor.
185
+ *
186
+ * @return The UTF-8 encoded display device name (for example
187
+ * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an
188
+ * [error](@ref error_handling) occurred.
189
+ *
190
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
191
+ * GLFW_PLATFORM_UNAVAILABLE.
192
+ *
193
+ * @thread_safety This function may be called from any thread. Access is not
194
+ * synchronized.
195
+ *
196
+ * @since Added in version 3.1.
197
+ *
198
+ * @ingroup native
199
+ */
200
+ GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
201
+
202
+ /*! @brief Returns the `HWND` of the specified window.
203
+ *
204
+ * @return The `HWND` of the specified window, or `NULL` if an
205
+ * [error](@ref error_handling) occurred.
206
+ *
207
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
208
+ * GLFW_PLATFORM_UNAVAILABLE.
209
+ *
210
+ * @remark The `HDC` associated with the window can be queried with the
211
+ * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
212
+ * function.
213
+ * @code
214
+ * HDC dc = GetDC(glfwGetWin32Window(window));
215
+ * @endcode
216
+ * This DC is private and does not need to be released.
217
+ *
218
+ * @thread_safety This function may be called from any thread. Access is not
219
+ * synchronized.
220
+ *
221
+ * @since Added in version 3.0.
222
+ *
223
+ * @ingroup native
224
+ */
225
+ GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
226
+ #endif
227
+
228
+ #if defined(GLFW_EXPOSE_NATIVE_WGL)
229
+ /*! @brief Returns the `HGLRC` of the specified window.
230
+ *
231
+ * @return The `HGLRC` of the specified window, or `NULL` if an
232
+ * [error](@ref error_handling) occurred.
233
+ *
234
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
235
+ * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_NO_WINDOW_CONTEXT.
236
+ *
237
+ * @remark The `HDC` associated with the window can be queried with the
238
+ * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
239
+ * function.
240
+ * @code
241
+ * HDC dc = GetDC(glfwGetWin32Window(window));
242
+ * @endcode
243
+ * This DC is private and does not need to be released.
244
+ *
245
+ * @thread_safety This function may be called from any thread. Access is not
246
+ * synchronized.
247
+ *
248
+ * @since Added in version 3.0.
249
+ *
250
+ * @ingroup native
251
+ */
252
+ GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
253
+ #endif
254
+
255
+ #if defined(GLFW_EXPOSE_NATIVE_COCOA)
256
+ /*! @brief Returns the `CGDirectDisplayID` of the specified monitor.
257
+ *
258
+ * @return The `CGDirectDisplayID` of the specified monitor, or
259
+ * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.
260
+ *
261
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
262
+ * GLFW_PLATFORM_UNAVAILABLE.
263
+ *
264
+ * @thread_safety This function may be called from any thread. Access is not
265
+ * synchronized.
266
+ *
267
+ * @since Added in version 3.1.
268
+ *
269
+ * @ingroup native
270
+ */
271
+ GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
272
+
273
+ /*! @brief Returns the `NSWindow` of the specified window.
274
+ *
275
+ * @return The `NSWindow` of the specified window, or `nil` if an
276
+ * [error](@ref error_handling) occurred.
277
+ *
278
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
279
+ * GLFW_PLATFORM_UNAVAILABLE.
280
+ *
281
+ * @thread_safety This function may be called from any thread. Access is not
282
+ * synchronized.
283
+ *
284
+ * @since Added in version 3.0.
285
+ *
286
+ * @ingroup native
287
+ */
288
+ GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
289
+
290
+ /*! @brief Returns the `NSView` of the specified window.
291
+ *
292
+ * @return The `NSView` of the specified window, or `nil` if an
293
+ * [error](@ref error_handling) occurred.
294
+ *
295
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
296
+ * GLFW_PLATFORM_UNAVAILABLE.
297
+ *
298
+ * @thread_safety This function may be called from any thread. Access is not
299
+ * synchronized.
300
+ *
301
+ * @since Added in version 3.4.
302
+ *
303
+ * @ingroup native
304
+ */
305
+ GLFWAPI id glfwGetCocoaView(GLFWwindow* window);
306
+ #endif
307
+
308
+ #if defined(GLFW_EXPOSE_NATIVE_NSGL)
309
+ /*! @brief Returns the `NSOpenGLContext` of the specified window.
310
+ *
311
+ * @return The `NSOpenGLContext` of the specified window, or `nil` if an
312
+ * [error](@ref error_handling) occurred.
313
+ *
314
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
315
+ * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_NO_WINDOW_CONTEXT.
316
+ *
317
+ * @thread_safety This function may be called from any thread. Access is not
318
+ * synchronized.
319
+ *
320
+ * @since Added in version 3.0.
321
+ *
322
+ * @ingroup native
323
+ */
324
+ GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
325
+ #endif
326
+
327
+ #if defined(GLFW_EXPOSE_NATIVE_X11)
328
+ /*! @brief Returns the `Display` used by GLFW.
329
+ *
330
+ * @return The `Display` used by GLFW, or `NULL` if an
331
+ * [error](@ref error_handling) occurred.
332
+ *
333
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
334
+ * GLFW_PLATFORM_UNAVAILABLE.
335
+ *
336
+ * @thread_safety This function may be called from any thread. Access is not
337
+ * synchronized.
338
+ *
339
+ * @since Added in version 3.0.
340
+ *
341
+ * @ingroup native
342
+ */
343
+ GLFWAPI Display* glfwGetX11Display(void);
344
+
345
+ /*! @brief Returns the `RRCrtc` of the specified monitor.
346
+ *
347
+ * @return The `RRCrtc` of the specified monitor, or `None` if an
348
+ * [error](@ref error_handling) occurred.
349
+ *
350
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
351
+ * GLFW_PLATFORM_UNAVAILABLE.
352
+ *
353
+ * @thread_safety This function may be called from any thread. Access is not
354
+ * synchronized.
355
+ *
356
+ * @since Added in version 3.1.
357
+ *
358
+ * @ingroup native
359
+ */
360
+ GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
361
+
362
+ /*! @brief Returns the `RROutput` of the specified monitor.
363
+ *
364
+ * @return The `RROutput` of the specified monitor, or `None` if an
365
+ * [error](@ref error_handling) occurred.
366
+ *
367
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
368
+ * GLFW_PLATFORM_UNAVAILABLE.
369
+ *
370
+ * @thread_safety This function may be called from any thread. Access is not
371
+ * synchronized.
372
+ *
373
+ * @since Added in version 3.1.
374
+ *
375
+ * @ingroup native
376
+ */
377
+ GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
378
+
379
+ /*! @brief Returns the `Window` of the specified window.
380
+ *
381
+ * @return The `Window` of the specified window, or `None` if an
382
+ * [error](@ref error_handling) occurred.
383
+ *
384
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
385
+ * GLFW_PLATFORM_UNAVAILABLE.
386
+ *
387
+ * @thread_safety This function may be called from any thread. Access is not
388
+ * synchronized.
389
+ *
390
+ * @since Added in version 3.0.
391
+ *
392
+ * @ingroup native
393
+ */
394
+ GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
395
+
396
+ /*! @brief Sets the current primary selection to the specified string.
397
+ *
398
+ * @param[in] string A UTF-8 encoded string.
399
+ *
400
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
401
+ * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
402
+ *
403
+ * @pointer_lifetime The specified string is copied before this function
404
+ * returns.
405
+ *
406
+ * @thread_safety This function must only be called from the main thread.
407
+ *
408
+ * @sa @ref clipboard
409
+ * @sa glfwGetX11SelectionString
410
+ * @sa glfwSetClipboardString
411
+ *
412
+ * @since Added in version 3.3.
413
+ *
414
+ * @ingroup native
415
+ */
416
+ GLFWAPI void glfwSetX11SelectionString(const char* string);
417
+
418
+ /*! @brief Returns the contents of the current primary selection as a string.
419
+ *
420
+ * If the selection is empty or if its contents cannot be converted, `NULL`
421
+ * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated.
422
+ *
423
+ * @return The contents of the selection as a UTF-8 encoded string, or `NULL`
424
+ * if an [error](@ref error_handling) occurred.
425
+ *
426
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
427
+ * GLFW_PLATFORM_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR.
428
+ *
429
+ * @pointer_lifetime The returned string is allocated and freed by GLFW. You
430
+ * should not free it yourself. It is valid until the next call to @ref
431
+ * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the
432
+ * library is terminated.
433
+ *
434
+ * @thread_safety This function must only be called from the main thread.
435
+ *
436
+ * @sa @ref clipboard
437
+ * @sa glfwSetX11SelectionString
438
+ * @sa glfwGetClipboardString
439
+ *
440
+ * @since Added in version 3.3.
441
+ *
442
+ * @ingroup native
443
+ */
444
+ GLFWAPI const char* glfwGetX11SelectionString(void);
445
+ #endif
446
+
447
+ #if defined(GLFW_EXPOSE_NATIVE_GLX)
448
+ /*! @brief Returns the `GLXContext` of the specified window.
449
+ *
450
+ * @return The `GLXContext` of the specified window, or `NULL` if an
451
+ * [error](@ref error_handling) occurred.
452
+ *
453
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
454
+ * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_UNAVAILABLE.
455
+ *
456
+ * @thread_safety This function may be called from any thread. Access is not
457
+ * synchronized.
458
+ *
459
+ * @since Added in version 3.0.
460
+ *
461
+ * @ingroup native
462
+ */
463
+ GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
464
+
465
+ /*! @brief Returns the `GLXWindow` of the specified window.
466
+ *
467
+ * @return The `GLXWindow` of the specified window, or `None` if an
468
+ * [error](@ref error_handling) occurred.
469
+ *
470
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref
471
+ * GLFW_NO_WINDOW_CONTEXT and @ref GLFW_PLATFORM_UNAVAILABLE.
472
+ *
473
+ * @thread_safety This function may be called from any thread. Access is not
474
+ * synchronized.
475
+ *
476
+ * @since Added in version 3.2.
477
+ *
478
+ * @ingroup native
479
+ */
480
+ GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
481
+ #endif
482
+
483
+ #if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
484
+ /*! @brief Returns the `struct wl_display*` used by GLFW.
485
+ *
486
+ * @return The `struct wl_display*` used by GLFW, or `NULL` if an
487
+ * [error](@ref error_handling) occurred.
488
+ *
489
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
490
+ * GLFW_PLATFORM_UNAVAILABLE.
491
+ *
492
+ * @thread_safety This function may be called from any thread. Access is not
493
+ * synchronized.
494
+ *
495
+ * @since Added in version 3.2.
496
+ *
497
+ * @ingroup native
498
+ */
499
+ GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
500
+
501
+ /*! @brief Returns the `struct wl_output*` of the specified monitor.
502
+ *
503
+ * @return The `struct wl_output*` of the specified monitor, or `NULL` if an
504
+ * [error](@ref error_handling) occurred.
505
+ *
506
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
507
+ * GLFW_PLATFORM_UNAVAILABLE.
508
+ *
509
+ * @thread_safety This function may be called from any thread. Access is not
510
+ * synchronized.
511
+ *
512
+ * @since Added in version 3.2.
513
+ *
514
+ * @ingroup native
515
+ */
516
+ GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
517
+
518
+ /*! @brief Returns the main `struct wl_surface*` of the specified window.
519
+ *
520
+ * @return The main `struct wl_surface*` of the specified window, or `NULL` if
521
+ * an [error](@ref error_handling) occurred.
522
+ *
523
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
524
+ * GLFW_PLATFORM_UNAVAILABLE.
525
+ *
526
+ * @thread_safety This function may be called from any thread. Access is not
527
+ * synchronized.
528
+ *
529
+ * @since Added in version 3.2.
530
+ *
531
+ * @ingroup native
532
+ */
533
+ GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
534
+ #endif
535
+
536
+ #if defined(GLFW_EXPOSE_NATIVE_EGL)
537
+ /*! @brief Returns the `EGLDisplay` used by GLFW.
538
+ *
539
+ * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an
540
+ * [error](@ref error_handling) occurred.
541
+ *
542
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
543
+ *
544
+ * @remark Because EGL is initialized on demand, this function will return
545
+ * `EGL_NO_DISPLAY` until the first context has been created via EGL.
546
+ *
547
+ * @thread_safety This function may be called from any thread. Access is not
548
+ * synchronized.
549
+ *
550
+ * @since Added in version 3.0.
551
+ *
552
+ * @ingroup native
553
+ */
554
+ GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
555
+
556
+ /*! @brief Returns the `EGLContext` of the specified window.
557
+ *
558
+ * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an
559
+ * [error](@ref error_handling) occurred.
560
+ *
561
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
562
+ * GLFW_NO_WINDOW_CONTEXT.
563
+ *
564
+ * @thread_safety This function may be called from any thread. Access is not
565
+ * synchronized.
566
+ *
567
+ * @since Added in version 3.0.
568
+ *
569
+ * @ingroup native
570
+ */
571
+ GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
572
+
573
+ /*! @brief Returns the `EGLSurface` of the specified window.
574
+ *
575
+ * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an
576
+ * [error](@ref error_handling) occurred.
577
+ *
578
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
579
+ * GLFW_NO_WINDOW_CONTEXT.
580
+ *
581
+ * @thread_safety This function may be called from any thread. Access is not
582
+ * synchronized.
583
+ *
584
+ * @since Added in version 3.0.
585
+ *
586
+ * @ingroup native
587
+ */
588
+ GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
589
+ #endif
590
+
591
+ #if defined(GLFW_EXPOSE_NATIVE_OSMESA)
592
+ /*! @brief Retrieves the color buffer associated with the specified window.
593
+ *
594
+ * @param[in] window The window whose color buffer to retrieve.
595
+ * @param[out] width Where to store the width of the color buffer, or `NULL`.
596
+ * @param[out] height Where to store the height of the color buffer, or `NULL`.
597
+ * @param[out] format Where to store the OSMesa pixel format of the color
598
+ * buffer, or `NULL`.
599
+ * @param[out] buffer Where to store the address of the color buffer, or
600
+ * `NULL`.
601
+ * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
602
+ * [error](@ref error_handling) occurred.
603
+ *
604
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
605
+ * GLFW_NO_WINDOW_CONTEXT.
606
+ *
607
+ * @thread_safety This function may be called from any thread. Access is not
608
+ * synchronized.
609
+ *
610
+ * @since Added in version 3.3.
611
+ *
612
+ * @ingroup native
613
+ */
614
+ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
615
+
616
+ /*! @brief Retrieves the depth buffer associated with the specified window.
617
+ *
618
+ * @param[in] window The window whose depth buffer to retrieve.
619
+ * @param[out] width Where to store the width of the depth buffer, or `NULL`.
620
+ * @param[out] height Where to store the height of the depth buffer, or `NULL`.
621
+ * @param[out] bytesPerValue Where to store the number of bytes per depth
622
+ * buffer element, or `NULL`.
623
+ * @param[out] buffer Where to store the address of the depth buffer, or
624
+ * `NULL`.
625
+ * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
626
+ * [error](@ref error_handling) occurred.
627
+ *
628
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
629
+ * GLFW_NO_WINDOW_CONTEXT.
630
+ *
631
+ * @thread_safety This function may be called from any thread. Access is not
632
+ * synchronized.
633
+ *
634
+ * @since Added in version 3.3.
635
+ *
636
+ * @ingroup native
637
+ */
638
+ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
639
+
640
+ /*! @brief Returns the `OSMesaContext` of the specified window.
641
+ *
642
+ * @return The `OSMesaContext` of the specified window, or `NULL` if an
643
+ * [error](@ref error_handling) occurred.
644
+ *
645
+ * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
646
+ * GLFW_NO_WINDOW_CONTEXT.
647
+ *
648
+ * @thread_safety This function may be called from any thread. Access is not
649
+ * synchronized.
650
+ *
651
+ * @since Added in version 3.3.
652
+ *
653
+ * @ingroup native
654
+ */
655
+ GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
656
+ #endif
657
+
658
+ #ifdef __cplusplus
659
+ }
660
+ #endif
661
+
662
+ #endif /* _glfw3_native_h_ */
663
+