glfw3native.h
Go to the documentation of this file.
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
33 extern "C" {
34 #endif
35 
36 
37 /*************************************************************************
38  * Doxygen documentation
39  *************************************************************************/
40 
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)
181 GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor);
182 
198 GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor);
199 
222 GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window);
223 #endif
224 
225 #if defined(GLFW_EXPOSE_NATIVE_WGL)
249 GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window);
250 #endif
251 
252 #if defined(GLFW_EXPOSE_NATIVE_COCOA)
267 GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor);
268 
283 GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window);
284 #endif
285 
286 #if defined(GLFW_EXPOSE_NATIVE_NSGL)
302 GLFWAPI id glfwGetNSGLContext(GLFWwindow* window);
303 #endif
304 
305 #if defined(GLFW_EXPOSE_NATIVE_X11)
320 GLFWAPI Display* glfwGetX11Display(void);
321 
336 GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor);
337 
352 GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor);
353 
368 GLFWAPI Window glfwGetX11Window(GLFWwindow* window);
369 
390 GLFWAPI void glfwSetX11SelectionString(const char* string);
391 
418 GLFWAPI const char* glfwGetX11SelectionString(void);
419 #endif
420 
421 #if defined(GLFW_EXPOSE_NATIVE_GLX)
437 GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window);
438 
454 GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window);
455 #endif
456 
457 #if defined(GLFW_EXPOSE_NATIVE_WAYLAND)
472 GLFWAPI struct wl_display* glfwGetWaylandDisplay(void);
473 
488 GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor);
489 
504 GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window);
505 #endif
506 
507 #if defined(GLFW_EXPOSE_NATIVE_EGL)
525 GLFWAPI EGLDisplay glfwGetEGLDisplay(void);
526 
542 GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window);
543 
559 GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window);
560 #endif
561 
562 #if defined(GLFW_EXPOSE_NATIVE_OSMESA)
585 GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height, int* format, void** buffer);
586 
609 GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height, int* bytesPerValue, void** buffer);
610 
626 GLFWAPI OSMesaContext glfwGetOSMesaContext(GLFWwindow* window);
627 #endif
628 
629 #ifdef __cplusplus
630 }
631 #endif
632 
633 #endif /* _glfw3_native_h_ */
634 
struct GLFWmonitor GLFWmonitor
Opaque monitor object.
Definition: glfw3.h:1183
RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor)
Returns the RRCrtc of the specified monitor.
EGLDisplay glfwGetEGLDisplay(void)
Returns the EGLDisplay used by GLFW.
GLXWindow glfwGetGLXWindow(GLFWwindow *window)
Returns the GLXWindow of the specified window.
EGLSurface glfwGetEGLSurface(GLFWwindow *window)
Returns the EGLSurface of the specified window.
int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, void **buffer)
Retrieves the color buffer associated with the specified window.
struct wl_surface * glfwGetWaylandWindow(GLFWwindow *window)
Returns the main struct wl_surface* of the specified window.
id glfwGetNSGLContext(GLFWwindow *window)
Returns the NSOpenGLContext of the specified window.
void glfwSetX11SelectionString(const char *string)
Sets the current primary selection to the specified string.
GLXContext glfwGetGLXContext(GLFWwindow *window)
Returns the GLXContext of the specified window.
EGLContext glfwGetEGLContext(GLFWwindow *window)
Returns the EGLContext of the specified window.
int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)
Retrieves the depth buffer associated with the specified window.
const char * glfwGetX11SelectionString(void)
Returns the contents of the current primary selection as a string.
Display * glfwGetX11Display(void)
Returns the Display used by GLFW.
Window glfwGetX11Window(GLFWwindow *window)
Returns the Window of the specified window.
OSMesaContext glfwGetOSMesaContext(GLFWwindow *window)
Returns the OSMesaContext of the specified window.
struct wl_display * glfwGetWaylandDisplay(void)
Returns the struct wl_display* used by GLFW.
struct wl_output * glfwGetWaylandMonitor(GLFWmonitor *monitor)
Returns the struct wl_output* of the specified monitor.
RROutput glfwGetX11Monitor(GLFWmonitor *monitor)
Returns the RROutput of the specified monitor.
id glfwGetCocoaWindow(GLFWwindow *window)
Returns the NSWindow of the specified window.
const char * glfwGetWin32Monitor(GLFWmonitor *monitor)
Returns the display device name of the specified monitor.
const char * glfwGetWin32Adapter(GLFWmonitor *monitor)
Returns the adapter device name of the specified monitor.
HGLRC glfwGetWGLContext(GLFWwindow *window)
Returns the HGLRC of the specified window.
CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor)
Returns the CGDirectDisplayID of the specified monitor.
HWND glfwGetWin32Window(GLFWwindow *window)
Returns the HWND of the specified window.
struct GLFWwindow GLFWwindow
Opaque window object.
Definition: glfw3.h:1195