minesweeper

A minewseeper implementation to play around with Hare and Raylib
git clone https://git.tronto.net/minesweeper
Download | Log | Files | Refs | README | LICENSE

glfw3native.h (21201B)


      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