aboutsummaryrefslogtreecommitdiff
path: root/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h')
-rw-r--r--contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h594
1 files changed, 594 insertions, 0 deletions
diff --git a/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h
new file mode 100644
index 0000000..fe74c73
--- /dev/null
+++ b/contrib/glfw/glfw-3.3.5.bin.WIN64/include/GLFW/glfw3native.h
@@ -0,0 +1,594 @@
1/*************************************************************************
2 * GLFW 3.3 - 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
33extern "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
79
80/*************************************************************************
81 * System headers and types
82 *************************************************************************/
83
84#if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)
85 // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for
86 // example to allow applications to correctly declare a GL_KHR_debug callback)
87 // but windows.h assumes no one will define APIENTRY before it does
88 #if defined(GLFW_APIENTRY_DEFINED)
89 #undef APIENTRY
90 #undef GLFW_APIENTRY_DEFINED
91 #endif
92 #include <windows.h>
93#elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)
94 #if defined(__OBJC__)
95 #import <Cocoa/Cocoa.h>
96 #else
97 #include <ApplicationServices/ApplicationServices.h>
98 typedef void* id;
99 #endif
100#elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)
101 #include <X11/Xlib.h>
102 #include <X11/extensions/Xrandr.h>
103#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)
104 #include <wayland-client.h>
105#endif
106
107#if defined(GLFW_EXPOSE_NATIVE_WGL)
108 /* WGL is declared by windows.h */
109#endif
110#if defined(GLFW_EXPOSE_NATIVE_NSGL)
111 /* NSGL is declared by Cocoa.h */
112#endif
113#if defined(GLFW_EXPOSE_NATIVE_GLX)
114 #include <GL/glx.h>
115#endif
116#if defined(GLFW_EXPOSE_NATIVE_EGL)
117 #include <EGL/egl.h>
118#endif
119#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
120 #include <GL/osmesa.h>
121#endif
122
123
124/*************************************************************************
125 * Functions
126 *************************************************************************/
127
128#if defined(GLFW_EXPOSE_NATIVE_WIN32)
129/*! @brief Returns the adapter device name of the specified monitor.
130 *
131 * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`)
132 * of the specified monitor, or `NULL` if an [error](@ref error_handling)
133 * occurred.
134 *
135 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
136 *
137 * @thread_safety This function may be called from any thread. Access is not
138 * synchronized.
139 *
140 * @since Added in version 3.1.
141 *
142 * @ingroup native
143 */
144GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
145
146/*! @brief Returns the display device name of the specified monitor.
147 *
148 * @return The UTF-8 encoded display device name (for example
149 * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an
150 * [error](@ref error_handling) occurred.
151 *
152 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
153 *
154 * @thread_safety This function may be called from any thread. Access is not
155 * synchronized.
156 *
157 * @since Added in version 3.1.
158 *
159 * @ingroup native
160 */
161GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
162
163/*! @brief Returns the `HWND` of the specified window.
164 *
165 * @return The `HWND` of the specified window, or `NULL` if an
166 * [error](@ref error_handling) occurred.
167 *
168 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
169 *
170 * @remark The `HDC` associated with the window can be queried with the
171 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
172 * function.
173 * @code
174 * HDC dc = GetDC(glfwGetWin32Window(window));
175 * @endcode
176 * This DC is private and does not need to be released.
177 *
178 * @thread_safety This function may be called from any thread. Access is not
179 * synchronized.
180 *
181 * @since Added in version 3.0.
182 *
183 * @ingroup native
184 */
185GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
186#endif
187
188#if defined(GLFW_EXPOSE_NATIVE_WGL)
189/*! @brief Returns the `HGLRC` of the specified window.
190 *
191 * @return The `HGLRC` of the specified window, or `NULL` if an
192 * [error](@ref error_handling) occurred.
193 *
194 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
195 * GLFW_NOT_INITIALIZED.
196 *
197 * @remark The `HDC` associated with the window can be queried with the
198 * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc)
199 * function.
200 * @code
201 * HDC dc = GetDC(glfwGetWin32Window(window));
202 * @endcode
203 * This DC is private and does not need to be released.
204 *
205 * @thread_safety This function may be called from any thread. Access is not
206 * synchronized.
207 *
208 * @since Added in version 3.0.
209 *
210 * @ingroup native
211 */
212GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
213#endif
214
215#if defined(GLFW_EXPOSE_NATIVE_COCOA)
216/*! @brief Returns the `CGDirectDisplayID` of the specified monitor.
217 *
218 * @return The `CGDirectDisplayID` of the specified monitor, or
219 * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred.
220 *
221 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
222 *
223 * @thread_safety This function may be called from any thread. Access is not
224 * synchronized.
225 *
226 * @since Added in version 3.1.
227 *
228 * @ingroup native
229 */
230GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
231
232/*! @brief Returns the `NSWindow` of the specified window.
233 *
234 * @return The `NSWindow` of the specified window, or `nil` if an
235 * [error](@ref error_handling) occurred.
236 *
237 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
238 *
239 * @thread_safety This function may be called from any thread. Access is not
240 * synchronized.
241 *
242 * @since Added in version 3.0.
243 *
244 * @ingroup native
245 */
246GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
247#endif
248
249#if defined(GLFW_EXPOSE_NATIVE_NSGL)
250/*! @brief Returns the `NSOpenGLContext` of the specified window.
251 *
252 * @return The `NSOpenGLContext` of the specified window, or `nil` if an
253 * [error](@ref error_handling) occurred.
254 *
255 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
256 * GLFW_NOT_INITIALIZED.
257 *
258 * @thread_safety This function may be called from any thread. Access is not
259 * synchronized.
260 *
261 * @since Added in version 3.0.
262 *
263 * @ingroup native
264 */
265GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
266#endif
267
268#if defined(GLFW_EXPOSE_NATIVE_X11)
269/*! @brief Returns the `Display` used by GLFW.
270 *
271 * @return The `Display` used by GLFW, or `NULL` if an
272 * [error](@ref error_handling) occurred.
273 *
274 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
275 *
276 * @thread_safety This function may be called from any thread. Access is not
277 * synchronized.
278 *
279 * @since Added in version 3.0.
280 *
281 * @ingroup native
282 */
283GLFWAPI Display* glfwGetX11Display(void);
284
285/*! @brief Returns the `RRCrtc` of the specified monitor.
286 *
287 * @return The `RRCrtc` of the specified monitor, or `None` if an
288 * [error](@ref error_handling) occurred.
289 *
290 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
291 *
292 * @thread_safety This function may be called from any thread. Access is not
293 * synchronized.
294 *
295 * @since Added in version 3.1.
296 *
297 * @ingroup native
298 */
299GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
300
301/*! @brief Returns the `RROutput` of the specified monitor.
302 *
303 * @return The `RROutput` of the specified monitor, or `None` if an
304 * [error](@ref error_handling) occurred.
305 *
306 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
307 *
308 * @thread_safety This function may be called from any thread. Access is not
309 * synchronized.
310 *
311 * @since Added in version 3.1.
312 *
313 * @ingroup native
314 */
315GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
316
317/*! @brief Returns the `Window` of the specified window.
318 *
319 * @return The `Window` of the specified window, or `None` if an
320 * [error](@ref error_handling) occurred.
321 *
322 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
323 *
324 * @thread_safety This function may be called from any thread. Access is not
325 * synchronized.
326 *
327 * @since Added in version 3.0.
328 *
329 * @ingroup native
330 */
331GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
332
333/*! @brief Sets the current primary selection to the specified string.
334 *
335 * @param[in] string A UTF-8 encoded string.
336 *
337 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
338 * GLFW_PLATFORM_ERROR.
339 *
340 * @pointer_lifetime The specified string is copied before this function
341 * returns.
342 *
343 * @thread_safety This function must only be called from the main thread.
344 *
345 * @sa @ref clipboard
346 * @sa glfwGetX11SelectionString
347 * @sa glfwSetClipboardString
348 *
349 * @since Added in version 3.3.
350 *
351 * @ingroup native
352 */
353GLFWAPI void glfwSetX11SelectionString(const char* string);
354
355/*! @brief Returns the contents of the current primary selection as a string.
356 *
357 * If the selection is empty or if its contents cannot be converted, `NULL`
358 * is returned and a @ref GLFW_FORMAT_UNAVAILABLE error is generated.
359 *
360 * @return The contents of the selection as a UTF-8 encoded string, or `NULL`
361 * if an [error](@ref error_handling) occurred.
362 *
363 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref
364 * GLFW_PLATFORM_ERROR.
365 *
366 * @pointer_lifetime The returned string is allocated and freed by GLFW. You
367 * should not free it yourself. It is valid until the next call to @ref
368 * glfwGetX11SelectionString or @ref glfwSetX11SelectionString, or until the
369 * library is terminated.
370 *
371 * @thread_safety This function must only be called from the main thread.
372 *
373 * @sa @ref clipboard
374 * @sa glfwSetX11SelectionString
375 * @sa glfwGetClipboardString
376 *
377 * @since Added in version 3.3.
378 *
379 * @ingroup native
380 */
381GLFWAPI const char* glfwGetX11SelectionString(void);
382#endif
383
384#if defined(GLFW_EXPOSE_NATIVE_GLX)
385/*! @brief Returns the `GLXContext` of the specified window.
386 *
387 * @return The `GLXContext` of the specified window, or `NULL` if an
388 * [error](@ref error_handling) occurred.
389 *
390 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
391 * GLFW_NOT_INITIALIZED.
392 *
393 * @thread_safety This function may be called from any thread. Access is not
394 * synchronized.
395 *
396 * @since Added in version 3.0.
397 *
398 * @ingroup native
399 */
400GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
401
402/*! @brief Returns the `GLXWindow` of the specified window.
403 *
404 * @return The `GLXWindow` of the specified window, or `None` if an
405 * [error](@ref error_handling) occurred.
406 *
407 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
408 * GLFW_NOT_INITIALIZED.
409 *
410 * @thread_safety This function may be called from any thread. Access is not
411 * synchronized.
412 *
413 * @since Added in version 3.2.
414 *
415 * @ingroup native
416 */
417GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
418#endif
419
420#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
421/*! @brief Returns the `struct wl_display*` used by GLFW.
422 *
423 * @return The `struct wl_display*` used by GLFW, or `NULL` if an
424 * [error](@ref error_handling) occurred.
425 *
426 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
427 *
428 * @thread_safety This function may be called from any thread. Access is not
429 * synchronized.
430 *
431 * @since Added in version 3.2.
432 *
433 * @ingroup native
434 */
435GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
436
437/*! @brief Returns the `struct wl_output*` of the specified monitor.
438 *
439 * @return The `struct wl_output*` of the specified monitor, or `NULL` if an
440 * [error](@ref error_handling) occurred.
441 *
442 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
443 *
444 * @thread_safety This function may be called from any thread. Access is not
445 * synchronized.
446 *
447 * @since Added in version 3.2.
448 *
449 * @ingroup native
450 */
451GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
452
453/*! @brief Returns the main `struct wl_surface*` of the specified window.
454 *
455 * @return The main `struct wl_surface*` of the specified window, or `NULL` if
456 * an [error](@ref error_handling) occurred.
457 *
458 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
459 *
460 * @thread_safety This function may be called from any thread. Access is not
461 * synchronized.
462 *
463 * @since Added in version 3.2.
464 *
465 * @ingroup native
466 */
467GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
468#endif
469
470#if defined(GLFW_EXPOSE_NATIVE_EGL)
471/*! @brief Returns the `EGLDisplay` used by GLFW.
472 *
473 * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an
474 * [error](@ref error_handling) occurred.
475 *
476 * @errors Possible errors include @ref GLFW_NOT_INITIALIZED.
477 *
478 * @thread_safety This function may be called from any thread. Access is not
479 * synchronized.
480 *
481 * @since Added in version 3.0.
482 *
483 * @ingroup native
484 */
485GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
486
487/*! @brief Returns the `EGLContext` of the specified window.
488 *
489 * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an
490 * [error](@ref error_handling) occurred.
491 *
492 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
493 * GLFW_NOT_INITIALIZED.
494 *
495 * @thread_safety This function may be called from any thread. Access is not
496 * synchronized.
497 *
498 * @since Added in version 3.0.
499 *
500 * @ingroup native
501 */
502GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
503
504/*! @brief Returns the `EGLSurface` of the specified window.
505 *
506 * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an
507 * [error](@ref error_handling) occurred.
508 *
509 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
510 * GLFW_NOT_INITIALIZED.
511 *
512 * @thread_safety This function may be called from any thread. Access is not
513 * synchronized.
514 *
515 * @since Added in version 3.0.
516 *
517 * @ingroup native
518 */
519GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
520#endif
521
522#if defined(GLFW_EXPOSE_NATIVE_OSMESA)
523/*! @brief Retrieves the color buffer associated with the specified window.
524 *
525 * @param[in] window The window whose color buffer to retrieve.
526 * @param[out] width Where to store the width of the color buffer, or `NULL`.
527 * @param[out] height Where to store the height of the color buffer, or `NULL`.
528 * @param[out] format Where to store the OSMesa pixel format of the color
529 * buffer, or `NULL`.
530 * @param[out] buffer Where to store the address of the color buffer, or
531 * `NULL`.
532 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
533 * [error](@ref error_handling) occurred.
534 *
535 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
536 * GLFW_NOT_INITIALIZED.
537 *
538 * @thread_safety This function may be called from any thread. Access is not
539 * synchronized.
540 *
541 * @since Added in version 3.3.
542 *
543 * @ingroup native
544 */
545GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
546
547/*! @brief Retrieves the depth buffer associated with the specified window.
548 *
549 * @param[in] window The window whose depth buffer to retrieve.
550 * @param[out] width Where to store the width of the depth buffer, or `NULL`.
551 * @param[out] height Where to store the height of the depth buffer, or `NULL`.
552 * @param[out] bytesPerValue Where to store the number of bytes per depth
553 * buffer element, or `NULL`.
554 * @param[out] buffer Where to store the address of the depth buffer, or
555 * `NULL`.
556 * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an
557 * [error](@ref error_handling) occurred.
558 *
559 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
560 * GLFW_NOT_INITIALIZED.
561 *
562 * @thread_safety This function may be called from any thread. Access is not
563 * synchronized.
564 *
565 * @since Added in version 3.3.
566 *
567 * @ingroup native
568 */
569GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
570
571/*! @brief Returns the `OSMesaContext` of the specified window.
572 *
573 * @return The `OSMesaContext` of the specified window, or `NULL` if an
574 * [error](@ref error_handling) occurred.
575 *
576 * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref
577 * GLFW_NOT_INITIALIZED.
578 *
579 * @thread_safety This function may be called from any thread. Access is not
580 * synchronized.
581 *
582 * @since Added in version 3.3.
583 *
584 * @ingroup native
585 */
586GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
587#endif
588
589#ifdef __cplusplus
590}
591#endif
592
593#endif /* _glfw3_native_h_ */
594