From 8b3c18de545eb63b7dc2d08621ba83a215a07463 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 5 Nov 2023 20:11:14 +0100 Subject: [PATCH] Updated GLFW for 64bit --- examples/others/external/include/GLFW/glfw3.h | 1066 +++++++++++------ .../external/include/GLFW/glfw3native.h | 222 ++-- examples/others/external/lib/libglfw3.a | Bin 269591 -> 290550 bytes 3 files changed, 859 insertions(+), 429 deletions(-) diff --git a/examples/others/external/include/GLFW/glfw3.h b/examples/others/external/include/GLFW/glfw3.h index 990fe3f7f..31b201ae5 100644 --- a/examples/others/external/include/GLFW/glfw3.h +++ b/examples/others/external/include/GLFW/glfw3.h @@ -3,7 +3,7 @@ * A library for OpenGL, window and input *------------------------------------------------------------------------ * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2016 Camilla Löwy + * Copyright (c) 2006-2019 Camilla Löwy * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages @@ -52,7 +52,7 @@ extern "C" { * This is the reference documentation for OpenGL and OpenGL ES context related * functions. For more task-oriented information, see the @ref context_guide. */ -/*! @defgroup vulkan Vulkan reference +/*! @defgroup vulkan Vulkan support reference * @brief Functions and types related to Vulkan. * * This is the reference documentation for Vulkan related functions and types. @@ -96,11 +96,30 @@ extern "C" { #define _WIN32 #endif /* _WIN32 */ +/* Include because most Windows GLU headers need wchar_t and + * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +/* Include because it is needed by Vulkan and related functions. + * Include it unconditionally to avoid surprising side-effects. + */ +#include + +#if defined(GLFW_INCLUDE_VULKAN) + #include +#endif /* Vulkan header */ + +/* The Vulkan header may have indirectly included windows.h (because of + * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it. + */ + /* It is customary to use APIENTRY for OpenGL function pointer declarations on * all platforms. Additionally, the Windows OpenGL header needs APIENTRY. */ -#ifndef APIENTRY - #ifdef _WIN32 +#if !defined(APIENTRY) + #if defined(_WIN32) #define APIENTRY __stdcall #else #define APIENTRY @@ -122,17 +141,6 @@ extern "C" { #define GLFW_CALLBACK_DEFINED #endif /* CALLBACK */ -/* Include because most Windows GLU headers need wchar_t and - * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - -/* Include because it is needed by Vulkan and related functions. - * Include it unconditionally to avoid surprising side-effects. - */ -#include - /* Include the chosen OpenGL or OpenGL ES headers. */ #if defined(GLFW_INCLUDE_ES1) @@ -182,10 +190,44 @@ extern "C" { #else /*__APPLE__*/ #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif #endif /*__APPLE__*/ -#elif !defined(GLFW_INCLUDE_NONE) +#elif defined(GLFW_INCLUDE_GLU) + + #if defined(__APPLE__) + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #else /*__APPLE__*/ + + #if defined(GLFW_INCLUDE_GLU) + #include + #endif + + #endif /*__APPLE__*/ + +#elif !defined(GLFW_INCLUDE_NONE) && \ + !defined(__gl_h_) && \ + !defined(__gles1_gl_h_) && \ + !defined(__gles2_gl2_h_) && \ + !defined(__gles2_gl3_h_) && \ + !defined(__gles2_gl31_h_) && \ + !defined(__gles2_gl32_h_) && \ + !defined(__gl_glcorearb_h_) && \ + !defined(__gl2_h_) /*legacy*/ && \ + !defined(__gl3_h_) /*legacy*/ && \ + !defined(__gl31_h_) /*legacy*/ && \ + !defined(__gl32_h_) /*legacy*/ && \ + !defined(__glcorearb_h_) /*legacy*/ && \ + !defined(__GL_H__) /*non-standard*/ && \ + !defined(__gltypes_h_) /*non-standard*/ && \ + !defined(__glee_h_) /*non-standard*/ #if defined(__APPLE__) @@ -193,9 +235,6 @@ extern "C" { #define GL_GLEXT_LEGACY #endif #include - #if defined(GLFW_INCLUDE_GLU) - #include - #endif #else /*__APPLE__*/ @@ -203,18 +242,11 @@ extern "C" { #if defined(GLFW_INCLUDE_GLEXT) #include #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif #endif /*__APPLE__*/ #endif /* OpenGL and OpenGL ES headers */ -#if defined(GLFW_INCLUDE_VULKAN) - #include -#endif /* Vulkan header */ - #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) /* GLFW_DLL must be defined by applications that are linking against the DLL * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW @@ -230,13 +262,12 @@ extern "C" { /* We are building GLFW as a Win32 DLL */ #define GLFWAPI __declspec(dllexport) #elif defined(_WIN32) && defined(GLFW_DLL) - /* We are calling GLFW as a Win32 DLL */ + /* We are calling a GLFW Win32 DLL */ #define GLFWAPI __declspec(dllimport) #elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - /* We are building GLFW as a shared / dynamic library */ + /* We are building GLFW as a Unix shared library */ #define GLFWAPI __attribute__((visibility("default"))) #else - /* We are building or calling GLFW as a static library */ #define GLFWAPI #endif @@ -247,45 +278,47 @@ extern "C" { /*! @name GLFW version macros * @{ */ -/*! @brief The major version number of the GLFW library. +/*! @brief The major version number of the GLFW header. * - * This is incremented when the API is changed in non-compatible ways. + * The major version number of the GLFW header. This is incremented when the + * API is changed in non-compatible ways. * @ingroup init */ #define GLFW_VERSION_MAJOR 3 -/*! @brief The minor version number of the GLFW library. +/*! @brief The minor version number of the GLFW header. * - * This is incremented when features are added to the API but it remains - * backward-compatible. + * The minor version number of the GLFW header. This is incremented when + * features are added to the API but it remains backward-compatible. * @ingroup init */ #define GLFW_VERSION_MINOR 3 -/*! @brief The revision number of the GLFW library. +/*! @brief The revision number of the GLFW header. * - * This is incremented when a bug fix release is made that does not contain any - * API changes. + * The revision number of the GLFW header. This is incremented when a bug fix + * release is made that does not contain any API changes. * @ingroup init */ -#define GLFW_VERSION_REVISION 0 +#define GLFW_VERSION_REVISION 8 /*! @} */ -/*! @name Boolean values - * @{ */ /*! @brief One. * - * One. Seriously. You don't _need_ to use this symbol in your code. It's - * semantic sugar for the number 1. You can also use `1` or `true` or `_True` - * or `GL_TRUE` or whatever you want. + * This is only semantic sugar for the number 1. You can instead use `1` or + * `true` or `_True` or `GL_TRUE` or `VK_TRUE` or anything else that is equal + * to one. + * + * @ingroup init */ #define GLFW_TRUE 1 /*! @brief Zero. * - * Zero. Seriously. You don't _need_ to use this symbol in your code. It's - * semantic sugar for the number 0. You can also use `0` or `false` or - * `_False` or `GL_FALSE` or whatever you want. + * This is only semantic sugar for the number 0. You can instead use `0` or + * `false` or `_False` or `GL_FALSE` or `VK_FALSE` or anything else that is + * equal to zero. + * + * @ingroup init */ #define GLFW_FALSE 0 -/*! @} */ /*! @name Key and button actions * @{ */ @@ -313,6 +346,7 @@ extern "C" { /*! @} */ /*! @defgroup hat_state Joystick hat states + * @brief Joystick hat states. * * See [joystick hat input](@ref joystick_hat) for how these are used. * @@ -915,70 +949,87 @@ extern "C" { #define GLFW_CLIENT_API 0x00022001 /*! @brief Context client API major version hint and attribute. * - * Context client API major version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API major version [hint](@ref GLFW_CONTEXT_VERSION_MAJOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MAJOR_attrib). */ #define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 /*! @brief Context client API minor version hint and attribute. * - * Context client API minor version [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API minor version [hint](@ref GLFW_CONTEXT_VERSION_MINOR_hint) + * and [attribute](@ref GLFW_CONTEXT_VERSION_MINOR_attrib). */ #define GLFW_CONTEXT_VERSION_MINOR 0x00022003 -/*! @brief Context client API revision number hint and attribute. +/*! @brief Context client API revision number attribute. * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API revision number + * [attribute](@ref GLFW_CONTEXT_REVISION_attrib). */ #define GLFW_CONTEXT_REVISION 0x00022004 /*! @brief Context robustness hint and attribute. * - * Context client API revision number [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context client API revision number [hint](@ref GLFW_CONTEXT_ROBUSTNESS_hint) + * and [attribute](@ref GLFW_CONTEXT_ROBUSTNESS_attrib). */ #define GLFW_CONTEXT_ROBUSTNESS 0x00022005 /*! @brief OpenGL forward-compatibility hint and attribute. * - * OpenGL forward-compatibility [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * OpenGL forward-compatibility [hint](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) + * and [attribute](@ref GLFW_OPENGL_FORWARD_COMPAT_attrib). */ #define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 -/*! @brief OpenGL debug context hint and attribute. +/*! @brief Debug mode context hint and attribute. * - * OpenGL debug context [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Debug mode context [hint](@ref GLFW_OPENGL_DEBUG_CONTEXT_hint) and + * [attribute](@ref GLFW_OPENGL_DEBUG_CONTEXT_attrib). */ #define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 /*! @brief OpenGL profile hint and attribute. * - * OpenGL profile [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * OpenGL profile [hint](@ref GLFW_OPENGL_PROFILE_hint) and + * [attribute](@ref GLFW_OPENGL_PROFILE_attrib). */ #define GLFW_OPENGL_PROFILE 0x00022008 /*! @brief Context flush-on-release hint and attribute. * - * Context flush-on-release [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context flush-on-release [hint](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint) and + * [attribute](@ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib). */ #define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 /*! @brief Context error suppression hint and attribute. * - * Context error suppression [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context error suppression [hint](@ref GLFW_CONTEXT_NO_ERROR_hint) and + * [attribute](@ref GLFW_CONTEXT_NO_ERROR_attrib). */ #define GLFW_CONTEXT_NO_ERROR 0x0002200A /*! @brief Context creation API hint and attribute. * - * Context creation API [hint](@ref GLFW_CLIENT_API_hint) and - * [attribute](@ref GLFW_CLIENT_API_attrib). + * Context creation API [hint](@ref GLFW_CONTEXT_CREATION_API_hint) and + * [attribute](@ref GLFW_CONTEXT_CREATION_API_attrib). */ #define GLFW_CONTEXT_CREATION_API 0x0002200B - +/*! @brief Window content area scaling window + * [window hint](@ref GLFW_SCALE_TO_MONITOR). + */ +#define GLFW_SCALE_TO_MONITOR 0x0002200C +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint). + */ #define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_FRAME_NAME_hint). + */ #define GLFW_COCOA_FRAME_NAME 0x00023002 +/*! @brief macOS specific + * [window hint](@ref GLFW_COCOA_GRAPHICS_SWITCHING_hint). + */ #define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003 - +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ #define GLFW_X11_CLASS_NAME 0x00024001 +/*! @brief X11 specific + * [window hint](@ref GLFW_X11_CLASS_NAME_hint). + */ #define GLFW_X11_INSTANCE_NAME 0x00024002 /*! @} */ @@ -998,6 +1049,7 @@ extern "C" { #define GLFW_STICKY_KEYS 0x00033002 #define GLFW_STICKY_MOUSE_BUTTONS 0x00033003 #define GLFW_LOCK_KEY_MODS 0x00033004 +#define GLFW_RAW_MOUSE_MOTION 0x00033005 #define GLFW_CURSOR_NORMAL 0x00034001 #define GLFW_CURSOR_HIDDEN 0x00034002 @@ -1056,9 +1108,20 @@ extern "C" { /*! @addtogroup init * @{ */ +/*! @brief Joystick hat buttons init hint. + * + * Joystick hat buttons [init hint](@ref GLFW_JOYSTICK_HAT_BUTTONS). + */ #define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001 - +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_CHDIR_RESOURCES_hint). + */ #define GLFW_COCOA_CHDIR_RESOURCES 0x00051001 +/*! @brief macOS specific init hint. + * + * macOS specific [init hint](@ref GLFW_COCOA_MENUBAR_hint). + */ #define GLFW_COCOA_MENUBAR 0x00051002 /*! @} */ @@ -1129,17 +1192,25 @@ typedef struct GLFWwindow GLFWwindow; * * @since Added in version 3.1. * - * @ingroup cursor + * @ingroup input */ typedef struct GLFWcursor GLFWcursor; -/*! @brief The function signature for error callbacks. +/*! @brief The function pointer type for error callbacks. * - * This is the function signature for error callback functions. + * This is the function pointer type for error callbacks. An error callback + * function has the following signature: + * @code + * void callback_name(int error_code, const char* description) + * @endcode * - * @param[in] error An [error code](@ref errors). + * @param[in] error_code An [error code](@ref errors). Future releases may add + * more error codes. * @param[in] description A UTF-8 encoded string describing the error. * + * @pointer_lifetime The error description string is valid until the callback + * function returns. + * * @sa @ref error_handling * @sa @ref glfwSetErrorCallback * @@ -1147,17 +1218,21 @@ typedef struct GLFWcursor GLFWcursor; * * @ingroup init */ -typedef void (* GLFWerrorfun)(int,const char*); +typedef void (* GLFWerrorfun)(int error_code, const char* description); -/*! @brief The function signature for window position callbacks. +/*! @brief The function pointer type for window position callbacks. * - * This is the function signature for window position callback functions. + * This is the function pointer type for window position callbacks. A window + * position callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int xpos, int ypos) + * @endcode * * @param[in] window The window that was moved. * @param[in] xpos The new x-coordinate, in screen coordinates, of the - * upper-left corner of the client area of the window. + * upper-left corner of the content area of the window. * @param[in] ypos The new y-coordinate, in screen coordinates, of the - * upper-left corner of the client area of the window. + * upper-left corner of the content area of the window. * * @sa @ref window_pos * @sa @ref glfwSetWindowPosCallback @@ -1166,11 +1241,15 @@ typedef void (* GLFWerrorfun)(int,const char*); * * @ingroup window */ -typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); +typedef void (* GLFWwindowposfun)(GLFWwindow* window, int xpos, int ypos); -/*! @brief The function signature for window resize callbacks. +/*! @brief The function pointer type for window size callbacks. * - * This is the function signature for window size callback functions. + * This is the function pointer type for window size callbacks. A window size + * callback function has the following signature: + * @code + * void callback_name(GLFWwindow* window, int width, int height) + * @endcode * * @param[in] window The window that was resized. * @param[in] width The new width, in screen coordinates, of the window. @@ -1184,11 +1263,15 @@ typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); * * @ingroup window */ -typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); +typedef void (* GLFWwindowsizefun)(GLFWwindow* window, int width, int height); -/*! @brief The function signature for window close callbacks. +/*! @brief The function pointer type for window close callbacks. * - * This is the function signature for window close callback functions. + * This is the function pointer type for window close callbacks. A window + * close callback function has the following signature: + * @code + * void function_name(GLFWwindow* window) + * @endcode * * @param[in] window The window that the user attempted to close. * @@ -1200,11 +1283,15 @@ typedef void (* GLFWwindowsizefun)(GLFWwindow*,int,int); * * @ingroup window */ -typedef void (* GLFWwindowclosefun)(GLFWwindow*); +typedef void (* GLFWwindowclosefun)(GLFWwindow* window); -/*! @brief The function signature for window content refresh callbacks. +/*! @brief The function pointer type for window content refresh callbacks. * - * This is the function signature for window refresh callback functions. + * This is the function pointer type for window content refresh callbacks. + * A window content refresh callback function has the following signature: + * @code + * void function_name(GLFWwindow* window); + * @endcode * * @param[in] window The window whose content needs to be refreshed. * @@ -1216,11 +1303,15 @@ typedef void (* GLFWwindowclosefun)(GLFWwindow*); * * @ingroup window */ -typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); +typedef void (* GLFWwindowrefreshfun)(GLFWwindow* window); -/*! @brief The function signature for window focus/defocus callbacks. +/*! @brief The function pointer type for window focus callbacks. * - * This is the function signature for window focus callback functions. + * This is the function pointer type for window focus callbacks. A window + * focus callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode * * @param[in] window The window that gained or lost input focus. * @param[in] focused `GLFW_TRUE` if the window was given input focus, or @@ -1233,12 +1324,15 @@ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); * * @ingroup window */ -typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); +typedef void (* GLFWwindowfocusfun)(GLFWwindow* window, int focused); -/*! @brief The function signature for window iconify/restore callbacks. +/*! @brief The function pointer type for window iconify callbacks. * - * This is the function signature for window iconify/restore callback - * functions. + * This is the function pointer type for window iconify callbacks. A window + * iconify callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode * * @param[in] window The window that was iconified or restored. * @param[in] iconified `GLFW_TRUE` if the window was iconified, or @@ -1251,15 +1345,18 @@ typedef void (* GLFWwindowfocusfun)(GLFWwindow*,int); * * @ingroup window */ -typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); +typedef void (* GLFWwindowiconifyfun)(GLFWwindow* window, int iconified); -/*! @brief The function signature for window maximize/restore callbacks. +/*! @brief The function pointer type for window maximize callbacks. * - * This is the function signature for window maximize/restore callback - * functions. + * This is the function pointer type for window maximize callbacks. A window + * maximize callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode * * @param[in] window The window that was maximized or restored. - * @param[in] iconified `GLFW_TRUE` if the window was maximized, or + * @param[in] maximized `GLFW_TRUE` if the window was maximized, or * `GLFW_FALSE` if it was restored. * * @sa @ref window_maximize @@ -1269,12 +1366,15 @@ typedef void (* GLFWwindowiconifyfun)(GLFWwindow*,int); * * @ingroup window */ -typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); +typedef void (* GLFWwindowmaximizefun)(GLFWwindow* window, int maximized); -/*! @brief The function signature for framebuffer resize callbacks. +/*! @brief The function pointer type for framebuffer size callbacks. * - * This is the function signature for framebuffer resize callback - * functions. + * This is the function pointer type for framebuffer size callbacks. + * A framebuffer size callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode * * @param[in] window The window whose framebuffer was resized. * @param[in] width The new width, in pixels, of the framebuffer. @@ -1287,12 +1387,15 @@ typedef void (* GLFWwindowmaximizefun)(GLFWwindow*,int); * * @ingroup window */ -typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); +typedef void (* GLFWframebuffersizefun)(GLFWwindow* window, int width, int height); -/*! @brief The function signature for window content scale callbacks. +/*! @brief The function pointer type for window content scale callbacks. * - * This is the function signature for window content scale callback - * functions. + * This is the function pointer type for window content scale callbacks. + * A window content scale callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode * * @param[in] window The window whose content scale changed. * @param[in] xscale The new x-axis content scale of the window. @@ -1305,16 +1408,21 @@ typedef void (* GLFWframebuffersizefun)(GLFWwindow*,int,int); * * @ingroup window */ -typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); +typedef void (* GLFWwindowcontentscalefun)(GLFWwindow* window, float xscale, float yscale); -/*! @brief The function signature for mouse button callbacks. +/*! @brief The function pointer type for mouse button callbacks. * - * This is the function signature for mouse button callback functions. + * This is the function pointer type for mouse button callback functions. + * A mouse button callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] button The [mouse button](@ref buttons) that was pressed or * released. - * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. + * @param[in] action One of `GLFW_PRESS` or `GLFW_RELEASE`. Future releases + * may add more actions. * @param[in] mods Bit field describing which [modifier keys](@ref mods) were * held down. * @@ -1326,17 +1434,21 @@ typedef void (* GLFWwindowcontentscalefun)(GLFWwindow*,float,float); * * @ingroup input */ -typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); +typedef void (* GLFWmousebuttonfun)(GLFWwindow* window, int button, int action, int mods); -/*! @brief The function signature for cursor position callbacks. +/*! @brief The function pointer type for cursor position callbacks. * - * This is the function signature for cursor position callback functions. + * This is the function pointer type for cursor position callbacks. A cursor + * position callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode * * @param[in] window The window that received the event. * @param[in] xpos The new cursor x-coordinate, relative to the left edge of - * the client area. + * the content area. * @param[in] ypos The new cursor y-coordinate, relative to the top edge of the - * client area. + * content area. * * @sa @ref cursor_pos * @sa @ref glfwSetCursorPosCallback @@ -1345,14 +1457,18 @@ typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); * * @ingroup input */ -typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); +typedef void (* GLFWcursorposfun)(GLFWwindow* window, double xpos, double ypos); -/*! @brief The function signature for cursor enter/leave callbacks. +/*! @brief The function pointer type for cursor enter/leave callbacks. * - * This is the function signature for cursor enter/leave callback functions. + * This is the function pointer type for cursor enter/leave callbacks. + * A cursor enter/leave callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode * * @param[in] window The window that received the event. - * @param[in] entered `GLFW_TRUE` if the cursor entered the window's client + * @param[in] entered `GLFW_TRUE` if the cursor entered the window's content * area, or `GLFW_FALSE` if it left it. * * @sa @ref cursor_enter @@ -1362,11 +1478,15 @@ typedef void (* GLFWcursorposfun)(GLFWwindow*,double,double); * * @ingroup input */ -typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); +typedef void (* GLFWcursorenterfun)(GLFWwindow* window, int entered); -/*! @brief The function signature for scroll callbacks. +/*! @brief The function pointer type for scroll callbacks. * - * This is the function signature for scroll callback functions. + * This is the function pointer type for scroll callbacks. A scroll callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode * * @param[in] window The window that received the event. * @param[in] xoffset The scroll offset along the x-axis. @@ -1379,16 +1499,21 @@ typedef void (* GLFWcursorenterfun)(GLFWwindow*,int); * * @ingroup input */ -typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); +typedef void (* GLFWscrollfun)(GLFWwindow* window, double xoffset, double yoffset); -/*! @brief The function signature for keyboard key callbacks. +/*! @brief The function pointer type for keyboard key callbacks. * - * This is the function signature for keyboard key callback functions. + * This is the function pointer type for keyboard key callbacks. A keyboard + * key callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] key The [keyboard key](@ref keys) that was pressed or released. * @param[in] scancode The system-specific scancode of the key. - * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. Future + * releases may add more actions. * @param[in] mods Bit field describing which [modifier keys](@ref mods) were * held down. * @@ -1400,11 +1525,15 @@ typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); * * @ingroup input */ -typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); +typedef void (* GLFWkeyfun)(GLFWwindow* window, int key, int scancode, int action, int mods); -/*! @brief The function signature for Unicode character callbacks. +/*! @brief The function pointer type for Unicode character callbacks. * - * This is the function signature for Unicode character callback functions. + * This is the function pointer type for Unicode character callbacks. + * A Unicode character callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode * * @param[in] window The window that received the event. * @param[in] codepoint The Unicode code point of the character. @@ -1417,14 +1546,18 @@ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); * * @ingroup input */ -typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); +typedef void (* GLFWcharfun)(GLFWwindow* window, unsigned int codepoint); -/*! @brief The function signature for Unicode character with modifiers +/*! @brief The function pointer type for Unicode character with modifiers * callbacks. * - * This is the function signature for Unicode character with modifiers callback - * functions. It is called for each input character, regardless of what - * modifier keys are held down. + * This is the function pointer type for Unicode character with modifiers + * callbacks. It is called for each input character, regardless of what + * modifier keys are held down. A Unicode character with modifiers callback + * function has the following signature: + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode * * @param[in] window The window that received the event. * @param[in] codepoint The Unicode code point of the character. @@ -1440,16 +1573,23 @@ typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); * * @ingroup input */ -typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); +typedef void (* GLFWcharmodsfun)(GLFWwindow* window, unsigned int codepoint, int mods); -/*! @brief The function signature for file drop callbacks. +/*! @brief The function pointer type for path drop callbacks. * - * This is the function signature for file drop callbacks. + * This is the function pointer type for path drop callbacks. A path drop + * callback function has the following signature: + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode * * @param[in] window The window that received the event. - * @param[in] count The number of dropped files. + * @param[in] path_count The number of dropped paths. * @param[in] paths The UTF-8 encoded file and/or directory path names. * + * @pointer_lifetime The path array and its strings are valid until the + * callback function returns. + * * @sa @ref path_drop * @sa @ref glfwSetDropCallback * @@ -1457,15 +1597,19 @@ typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); * * @ingroup input */ -typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); +typedef void (* GLFWdropfun)(GLFWwindow* window, int path_count, const char* paths[]); -/*! @brief The function signature for monitor configuration callbacks. +/*! @brief The function pointer type for monitor configuration callbacks. * - * This is the function signature for monitor configuration callback functions. + * This is the function pointer type for monitor configuration callbacks. + * A monitor callback function has the following signature: + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode * * @param[in] monitor The monitor that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. * * @sa @ref monitor_event * @sa @ref glfwSetMonitorCallback @@ -1474,16 +1618,19 @@ typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); * * @ingroup monitor */ -typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); +typedef void (* GLFWmonitorfun)(GLFWmonitor* monitor, int event); -/*! @brief The function signature for joystick configuration callbacks. +/*! @brief The function pointer type for joystick configuration callbacks. * - * This is the function signature for joystick configuration callback - * functions. + * This is the function pointer type for joystick configuration callbacks. + * A joystick configuration callback function has the following signature: + * @code + * void function_name(int jid, int event) + * @endcode * * @param[in] jid The joystick that was connected or disconnected. - * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Remaining - * values reserved for future use. + * @param[in] event One of `GLFW_CONNECTED` or `GLFW_DISCONNECTED`. Future + * releases may add more events. * * @sa @ref joystick_event * @sa @ref glfwSetJoystickCallback @@ -1492,7 +1639,7 @@ typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); * * @ingroup input */ -typedef void (* GLFWjoystickfun)(int,int); +typedef void (* GLFWjoystickfun)(int jid, int event); /*! @brief Video mode type. * @@ -1567,6 +1714,8 @@ typedef struct GLFWgammaramp * * @since Added in version 2.1. * @glfw3 Removed format and bytes-per-pixel members. + * + * @ingroup window */ typedef struct GLFWimage { @@ -1589,6 +1738,8 @@ typedef struct GLFWimage * @sa @ref glfwGetGamepadState * * @since Added in version 3.3. + * + * @ingroup input */ typedef struct GLFWgamepadstate { @@ -1630,6 +1781,10 @@ typedef struct GLFWgamepadstate * bundle, if present. This can be disabled with the @ref * GLFW_COCOA_CHDIR_RESOURCES init hint. * + * @remark @x11 This function will set the `LC_CTYPE` category of the + * application locale according to the current environment if that category is + * still "C". This is because the "C" locale breaks Unicode text input. + * * @thread_safety This function must only be called from the main thread. * * @sa @ref intro_init @@ -1653,6 +1808,8 @@ GLFWAPI int glfwInit(void); * call this function, as it is called by @ref glfwInit before it returns * failure. * + * This function has no effect if GLFW is not initialized. + * * @errors Possible errors include @ref GLFW_PLATFORM_ERROR. * * @remark This function may be called before @ref glfwInit. @@ -1814,10 +1971,17 @@ GLFWAPI int glfwGetError(const char** description); * Once set, the error callback remains set even after the library has been * terminated. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set. * + * @callback_signature + * @code + * void callback_name(int error_code, const char* description) + * @endcode + * For more information about the callback parameters, see the + * [callback pointer type](@ref GLFWerrorfun). + * * @errors None. * * @remark This function may be called before @ref glfwInit. @@ -1831,7 +1995,7 @@ GLFWAPI int glfwGetError(const char** description); * * @ingroup init */ -GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); +GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback); /*! @brief Returns the currently connected monitors. * @@ -1911,6 +2075,37 @@ GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); */ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); +/*! @brief Retrieves the work area of the monitor. + * + * This function returns the position, in screen coordinates, of the upper-left + * corner of the work area of the specified monitor along with the work area + * size in screen coordinates. The work area is defined as the area of the + * monitor not occluded by the operating system task bar where present. If no + * task bar exists then the work area is the monitor resolution in screen + * coordinates. + * + * Any or all of the position and size arguments may be `NULL`. If an error + * occurs, all non-`NULL` position and size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @param[out] xpos Where to store the monitor x-coordinate, or `NULL`. + * @param[out] ypos Where to store the monitor y-coordinate, or `NULL`. + * @param[out] width Where to store the monitor width, or `NULL`. + * @param[out] height Where to store the monitor height, or `NULL`. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref + * GLFW_PLATFORM_ERROR. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref monitor_workarea + * + * @since Added in version 3.3. + * + * @ingroup monitor + */ +GLFWAPI void glfwGetMonitorWorkarea(GLFWmonitor* monitor, int* xpos, int* ypos, int* width, int* height); + /*! @brief Returns the physical size of the monitor. * * This function returns the size, in millimetres, of the display area of the @@ -1932,8 +2127,8 @@ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * - * @remark @win32 calculates the returned physical size from the - * current resolution and system DPI instead of querying the monitor EDID data. + * @remark @win32 On Windows 8 and earlier the physical size is calculated from + * the current resolution and system DPI instead of querying the monitor EDID data. * * @thread_safety This function must only be called from the main thread. * @@ -1949,9 +2144,11 @@ GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* * * This function retrieves the content scale for the specified monitor. The * content scale is the ratio between the current DPI and the platform's - * default DPI. If you scale all pixel dimensions by this scale then your - * content should appear at an appropriate size. This is especially important - * for text and any UI elements. + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. * * The content scale may depend on both the monitor resolution and pixel * density and on user settings. It may be very different from the raw DPI @@ -2057,11 +2254,18 @@ GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); * currently set callback. This is called when a monitor is connected to or * disconnected from the system. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWmonitor* monitor, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmonitorfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -2072,14 +2276,15 @@ GLFWAPI void* glfwGetMonitorUserPointer(GLFWmonitor* monitor); * * @ingroup monitor */ -GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); +GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback); /*! @brief Returns the available video modes for the specified monitor. * * This function returns an array of all video modes supported by the specified * monitor. The returned array is sorted in ascending order, first by color - * bit depth (the sum of all channel depths) and then by resolution area (the - * product of width and height). + * bit depth (the sum of all channel depths), then by resolution area (the + * product of width and height), then resolution width and finally by refresh + * rate. * * @param[in] monitor The monitor to query. * @param[out] count Where to store the number of video modes in the returned @@ -2137,9 +2342,9 @@ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); /*! @brief Generates a gamma ramp and sets it for the specified monitor. * - * This function generates a 256-element gamma ramp from the specified exponent - * and then calls @ref glfwSetGammaRamp with it. The value must be a finite - * number greater than zero. + * This function generates an appropriately sized gamma ramp from the specified + * exponent and then calls @ref glfwSetGammaRamp with it. The value must be + * a finite number greater than zero. * * The software controlled gamma ramp is applied _in addition_ to the hardware * gamma correction, which today is usually an approximation of sRGB gamma. @@ -2155,7 +2360,7 @@ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. * * @thread_safety This function must only be called from the main thread. @@ -2179,7 +2384,7 @@ GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR while * returning `NULL`. * @@ -2218,12 +2423,12 @@ GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * - * @remark Gamma ramp sizes other than 256 are not supported by all platforms - * or graphics hardware. + * @remark The size of the specified gamma ramp should match the size of the + * current ramp for that monitor. * * @remark @win32 The gamma ramp size must be 256. * - * @remark @wayland Gamma handling is a priviledged protocol, this function + * @remark @wayland Gamma handling is a privileged protocol, this function * will thus never be implemented and emits @ref GLFW_PLATFORM_ERROR. * * @pointer_lifetime The specified gamma ramp is copied before this function @@ -2442,7 +2647,7 @@ GLFWAPI void glfwWindowHintString(int hint, const char* value); * * @remark @macos When activating frame autosaving with * [GLFW_COCOA_FRAME_NAME](@ref GLFW_COCOA_FRAME_NAME_hint), the specified - * window size and position may be overriden by previously saved values. + * window size and position may be overridden by previously saved values. * * @remark @x11 Some window managers will not respect the placement of * initially hidden windows. @@ -2455,15 +2660,18 @@ GLFWAPI void glfwWindowHintString(int hint, const char* value); * @remark @x11 The class part of the `WM_CLASS` window property will by * default be set to the window title passed to this function. The instance * part will use the contents of the `RESOURCE_NAME` environment variable, if - * present and not empty, or fall back to the window title. Set the @ref - * GLFW_X11_CLASS_NAME and @ref GLFW_X11_INSTANCE_NAME window hints to override - * this. - * - * @remark @wayland The window frame is currently very simple, only allowing - * window resize or move. A compositor can still emit close, maximize or - * fullscreen events, using for example a keybind mechanism. Additionally, - * the wp_viewporter protocol is required for this feature, otherwise the - * window will not be decorated. + * present and not empty, or fall back to the window title. Set the + * [GLFW_X11_CLASS_NAME](@ref GLFW_X11_CLASS_NAME_hint) and + * [GLFW_X11_INSTANCE_NAME](@ref GLFW_X11_INSTANCE_NAME_hint) window hints to + * override this. + * + * @remark @wayland Compositors should implement the xdg-decoration protocol + * for GLFW to decorate the window properly. If this protocol isn't + * supported, or if the compositor prefers client-side decorations, a very + * simple fallback frame will be drawn using the wp_viewporter protocol. A + * compositor can still emit close, maximize or fullscreen events, using for + * instance a keybind mechanism. If neither of these protocols is supported, + * the window won't be decorated. * * @remark @wayland A full screen window will not attempt to change the mode, * no matter what the requested size or refresh rate. @@ -2599,8 +2807,8 @@ GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); * @param[in] images The images to create the icon from. This is ignored if * count is zero. * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. * * @pointer_lifetime The specified image data is copied before this function * returns. @@ -2625,19 +2833,19 @@ GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); */ GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* images); -/*! @brief Retrieves the position of the client area of the specified window. +/*! @brief Retrieves the position of the content area of the specified window. * * This function retrieves the position, in screen coordinates, of the - * upper-left corner of the client area of the specified window. + * upper-left corner of the content area of the specified window. * * Any or all of the position arguments may be `NULL`. If an error occurs, all * non-`NULL` position arguments will be set to zero. * * @param[in] window The window to query. * @param[out] xpos Where to store the x-coordinate of the upper-left corner of - * the client area, or `NULL`. + * the content area, or `NULL`. * @param[out] ypos Where to store the y-coordinate of the upper-left corner of - * the client area, or `NULL`. + * the content area, or `NULL`. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -2657,10 +2865,10 @@ GLFWAPI void glfwSetWindowIcon(GLFWwindow* window, int count, const GLFWimage* i */ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); -/*! @brief Sets the position of the client area of the specified window. +/*! @brief Sets the position of the content area of the specified window. * * This function sets the position, in screen coordinates, of the upper-left - * corner of the client area of the specified windowed mode window. If the + * corner of the content area of the specified windowed mode window. If the * window is a full screen window, this function does nothing. * * __Do not use this function__ to move an already visible window unless you @@ -2670,8 +2878,8 @@ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); * cannot and should not override these limits. * * @param[in] window The window to query. - * @param[in] xpos The x-coordinate of the upper-left corner of the client area. - * @param[in] ypos The y-coordinate of the upper-left corner of the client area. + * @param[in] xpos The x-coordinate of the upper-left corner of the content area. + * @param[in] ypos The y-coordinate of the upper-left corner of the content area. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -2692,9 +2900,9 @@ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); */ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); -/*! @brief Retrieves the size of the client area of the specified window. +/*! @brief Retrieves the size of the content area of the specified window. * - * This function retrieves the size, in screen coordinates, of the client area + * This function retrieves the size, in screen coordinates, of the content area * of the specified window. If you wish to retrieve the size of the * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. * @@ -2703,9 +2911,9 @@ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); * * @param[in] window The window whose size to retrieve. * @param[out] width Where to store the width, in screen coordinates, of the - * client area, or `NULL`. + * content area, or `NULL`. * @param[out] height Where to store the height, in screen coordinates, of the - * client area, or `NULL`. + * content area, or `NULL`. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -2724,7 +2932,7 @@ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); /*! @brief Sets the size limits of the specified window. * - * This function sets the size limits of the client area of the specified + * This function sets the size limits of the content area of the specified * window. If the window is full screen, the size limits only take effect * once it is made windowed. If the window is not resizable, this function * does nothing. @@ -2736,14 +2944,14 @@ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); * dimensions and all must be greater than or equal to zero. * * @param[in] window The window to set limits for. - * @param[in] minwidth The minimum width, in screen coordinates, of the client + * @param[in] minwidth The minimum width, in screen coordinates, of the content * area, or `GLFW_DONT_CARE`. * @param[in] minheight The minimum height, in screen coordinates, of the - * client area, or `GLFW_DONT_CARE`. - * @param[in] maxwidth The maximum width, in screen coordinates, of the client + * content area, or `GLFW_DONT_CARE`. + * @param[in] maxwidth The maximum width, in screen coordinates, of the content * area, or `GLFW_DONT_CARE`. * @param[in] maxheight The maximum height, in screen coordinates, of the - * client area, or `GLFW_DONT_CARE`. + * content area, or `GLFW_DONT_CARE`. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. @@ -2767,7 +2975,7 @@ GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minhe /*! @brief Sets the aspect ratio of the specified window. * - * This function sets the required aspect ratio of the client area of the + * This function sets the required aspect ratio of the content area of the * specified window. If the window is full screen, the aspect ratio only takes * effect once it is made windowed. If the window is not resizable, this * function does nothing. @@ -2808,9 +3016,9 @@ GLFWAPI void glfwSetWindowSizeLimits(GLFWwindow* window, int minwidth, int minhe */ GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); -/*! @brief Sets the size of the client area of the specified window. +/*! @brief Sets the size of the content area of the specified window. * - * This function sets the size, in screen coordinates, of the client area of + * This function sets the size, in screen coordinates, of the content area of * the specified window. * * For full screen windows, this function updates the resolution of its desired @@ -2826,9 +3034,9 @@ GLFWAPI void glfwSetWindowAspectRatio(GLFWwindow* window, int numer, int denom); * * @param[in] window The window to resize. * @param[in] width The desired width, in screen coordinates, of the window - * client area. + * content area. * @param[in] height The desired height, in screen coordinates, of the window - * client area. + * content area. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -2919,9 +3127,11 @@ GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int * * This function retrieves the content scale for the specified window. The * content scale is the ratio between the current DPI and the platform's - * default DPI. If you scale all pixel dimensions by this scale then your - * content should appear at an appropriate size. This is especially important - * for text and any UI elements. + * default DPI. This is especially important for text and any UI elements. If + * the pixel dimensions of your UI scaled by this look appropriate on your + * machine then it should appear at a reasonable size on other machines + * regardless of their DPI and scaling settings. This relies on the system DPI + * and scaling settings being somewhat correct. * * On systems where each monitors can have its own content scale, the window * content scale will depend on which monitor the system considers the window @@ -3008,18 +3218,15 @@ GLFWAPI void glfwSetWindowOpacity(GLFWwindow* window, float opacity); * previously restored. If the window is already iconified, this function does * nothing. * - * If the specified window is a full screen window, the original monitor - * resolution is restored until the window is restored. + * If the specified window is a full screen window, GLFW restores the original + * video mode of the monitor. The window's desired video mode is set again + * when the window is restored. * * @param[in] window The window to iconify. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * - * @remark @wayland There is no concept of iconification in wl_shell, this - * function will emit @ref GLFW_PLATFORM_ERROR when using this deprecated - * protocol. - * * @thread_safety This function must only be called from the main thread. * * @sa @ref window_iconify @@ -3039,8 +3246,8 @@ GLFWAPI void glfwIconifyWindow(GLFWwindow* window); * (minimized) or maximized. If the window is already restored, this function * does nothing. * - * If the specified window is a full screen window, the resolution chosen for - * the window is restored on the selected monitor. + * If the specified window is an iconified full screen window, its desired + * video mode is set again for its monitor when the window is restored. * * @param[in] window The window to restore. * @@ -3101,6 +3308,11 @@ GLFWAPI void glfwMaximizeWindow(GLFWwindow* window); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * + * @remark @wayland Because Wayland wants every frame of the desktop to be + * complete, this function does not immediately make the window visible. + * Instead it will become visible the next time the window framebuffer is + * updated after this call. + * * @thread_safety This function must only be called from the main thread. * * @sa @ref window_hide @@ -3232,7 +3444,7 @@ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); * The window position is ignored when setting a monitor. * * When the monitor is `NULL`, the position, width and height are used to - * place the window client area. The refresh rate is ignored when no monitor + * place the window content area. The refresh rate is ignored when no monitor * is specified. * * If you only wish to update the resolution of a full screen window or the @@ -3245,12 +3457,12 @@ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); * @param[in] window The window whose monitor, size or video mode to set. * @param[in] monitor The desired monitor, or `NULL` to set windowed mode. * @param[in] xpos The desired x-coordinate of the upper-left corner of the - * client area. + * content area. * @param[in] ypos The desired y-coordinate of the upper-left corner of the - * client area. - * @param[in] width The desired with, in screen coordinates, of the client area - * or video mode. - * @param[in] height The desired height, in screen coordinates, of the client + * content area. + * @param[in] width The desired with, in screen coordinates, of the content + * area or video mode. + * @param[in] height The desired height, in screen coordinates, of the content * area or video mode. * @param[in] refreshRate The desired refresh rate, in Hz, of the video mode, * or `GLFW_DONT_CARE`. @@ -3303,6 +3515,9 @@ GLFWAPI void glfwSetWindowMonitor(GLFWwindow* window, GLFWmonitor* monitor, int * errors. However, this function should not fail as long as it is passed * valid arguments and the library has been [initialized](@ref intro_init). * + * @remark @wayland The Wayland protocol provides no way to check whether a + * window is iconfied, so @ref GLFW_ICONIFIED always returns `GLFW_FALSE`. + * * @thread_safety This function must only be called from the main thread. * * @sa @ref window_attribs @@ -3400,15 +3615,22 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); * * This function sets the position callback of the specified window, which is * called when the window is moved. The callback is provided with the - * position, in screen coordinates, of the upper-left corner of the client area - * of the window. + * position, in screen coordinates, of the upper-left corner of the content + * area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int xpos, int ypos) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowposfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @wayland This callback will never be called, as there is no way for @@ -3422,20 +3644,27 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); * * @ingroup window */ -GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun cbfun); +GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindowposfun callback); /*! @brief Sets the size callback for the specified window. * * This function sets the size callback of the specified window, which is * called when the window is resized. The callback is provided with the size, - * in screen coordinates, of the client area of the window. + * in screen coordinates, of the content area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowsizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3447,7 +3676,7 @@ GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindow * * @ingroup window */ -GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun cbfun); +GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwindowsizefun callback); /*! @brief Sets the close callback for the specified window. * @@ -3461,11 +3690,18 @@ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwind * The close callback is not triggered by @ref glfwDestroyWindow. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowclosefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @macos Selecting Quit from the application menu will trigger the @@ -3480,12 +3716,12 @@ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwind * * @ingroup window */ -GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); +GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun callback); /*! @brief Sets the refresh callback for the specified window. * * This function sets the refresh callback of the specified window, which is - * called when the client area of the window needs to be redrawn, for example + * called when the content area of the window needs to be redrawn, for example * if the window has been exposed after having been covered by another window. * * On compositing window systems such as Aero, Compiz, Aqua or Wayland, where @@ -3493,11 +3729,18 @@ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwi * very infrequently or never at all. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowrefreshfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3509,7 +3752,7 @@ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwi * * @ingroup window */ -GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun cbfun); +GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GLFWwindowrefreshfun callback); /*! @brief Sets the focus callback for the specified window. * @@ -3522,11 +3765,18 @@ GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GL * and @ref glfwSetMouseButtonCallback. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int focused) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowfocusfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3537,7 +3787,7 @@ GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GL * * @ingroup window */ -GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun cbfun); +GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwindowfocusfun callback); /*! @brief Sets the iconify callback for the specified window. * @@ -3545,15 +3795,22 @@ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwi * is called when the window is iconified or restored. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int iconified) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowiconifyfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * - * @remark @wayland The wl_shell protocol has no concept of iconification, - * this callback will never be called when using this deprecated protocol. + * @remark @wayland The XDG-shell protocol has no event for iconification, so + * this callback will never be called. * * @thread_safety This function must only be called from the main thread. * @@ -3563,7 +3820,7 @@ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwi * * @ingroup window */ -GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun cbfun); +GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GLFWwindowiconifyfun callback); /*! @brief Sets the maximize callback for the specified window. * @@ -3571,11 +3828,18 @@ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GL * is called when the window is maximized or restored. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int maximized) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowmaximizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3586,7 +3850,7 @@ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GL * * @ingroup window */ -GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun cbfun); +GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, GLFWwindowmaximizefun callback); /*! @brief Sets the framebuffer resize callback for the specified window. * @@ -3594,11 +3858,18 @@ GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, * which is called when the framebuffer of the specified window is resized. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int width, int height) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWframebuffersizefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3609,7 +3880,7 @@ GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow* window, * * @ingroup window */ -GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun cbfun); +GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window, GLFWframebuffersizefun callback); /*! @brief Sets the window content scale callback for the specified window. * @@ -3617,11 +3888,18 @@ GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window * which is called when the content scale of the specified window changes. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, float xscale, float yscale) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWwindowcontentscalefun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -3633,7 +3911,7 @@ GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window * * @ingroup window */ -GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun cbfun); +GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow* window, GLFWwindowcontentscalefun callback); /*! @brief Processes all pending events. * @@ -3699,10 +3977,6 @@ GLFWAPI void glfwPollEvents(void); * GLFW will pass those events on to the application callbacks before * returning. * - * If no windows exist, this function returns immediately. For synchronization - * of threads in applications that do not create windows, use your threading - * library of choice. - * * Event processing is not required for joystick input to work. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref @@ -3750,14 +4024,13 @@ GLFWAPI void glfwWaitEvents(void); * GLFW will pass those events on to the application callbacks before * returning. * - * If no windows exist, this function returns immediately. For synchronization - * of threads in applications that do not create windows, use your threading - * library of choice. - * * Event processing is not required for joystick input to work. * * @param[in] timeout The maximum amount of time, in seconds, to wait. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. + * * @reentrancy This function must not be called from a callback. * * @thread_safety This function must only be called from the main thread. @@ -3777,10 +4050,6 @@ GLFWAPI void glfwWaitEventsTimeout(double timeout); * This function posts an empty event from the current thread to the event * queue, causing @ref glfwWaitEvents or @ref glfwWaitEventsTimeout to return. * - * If no windows exist, this function returns immediately. For synchronization - * of threads in applications that do not create windows, use your threading - * library of choice. - * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * @@ -3800,11 +4069,13 @@ GLFWAPI void glfwPostEmptyEvent(void); * * This function returns the value of an input option for the specified window. * The mode must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS or @ref GLFW_LOCK_KEY_MODS. + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. * * @param[in] window The window to query. * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS` or `GLFW_LOCK_KEY_MODS`. + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_INVALID_ENUM. @@ -3823,13 +4094,14 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); * * This function sets an input mode option for the specified window. The mode * must be one of @ref GLFW_CURSOR, @ref GLFW_STICKY_KEYS, - * @ref GLFW_STICKY_MOUSE_BUTTONS or @ref GLFW_LOCK_KEY_MODS. + * @ref GLFW_STICKY_MOUSE_BUTTONS, @ref GLFW_LOCK_KEY_MODS or + * @ref GLFW_RAW_MOUSE_MOTION. * * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor * modes: * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the client - * area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the + * content area of the window but does not restrict the cursor from leaving. * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual * and unlimited cursor movement. This is useful for implementing for * example 3D camera controls. @@ -3855,9 +4127,16 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); * GLFW_MOD_CAPS_LOCK bit set when the event was generated with Caps Lock on, * and the @ref GLFW_MOD_NUM_LOCK bit when Num Lock was on. * + * If the mode is `GLFW_RAW_MOUSE_MOTION`, the value must be either `GLFW_TRUE` + * to enable raw (unscaled and unaccelerated) mouse motion when the cursor is + * disabled, or `GLFW_FALSE` to disable it. If raw motion is not supported, + * attempting to set this will emit @ref GLFW_PLATFORM_ERROR. Call @ref + * glfwRawMouseMotionSupported to check for support. + * * @param[in] window The window whose input mode to set. * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS`, - * `GLFW_STICKY_MOUSE_BUTTONS` or `GLFW_LOCK_KEY_MODS`. + * `GLFW_STICKY_MOUSE_BUTTONS`, `GLFW_LOCK_KEY_MODS` or + * `GLFW_RAW_MOUSE_MOTION`. * @param[in] value The new value of the specified input mode. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref @@ -3873,6 +4152,35 @@ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); */ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); +/*! @brief Returns whether raw mouse motion is supported. + * + * This function returns whether raw mouse motion is supported on the current + * system. This status does not change after GLFW has been initialized so you + * only need to check this once. If you attempt to enable raw motion on + * a system that does not support it, @ref GLFW_PLATFORM_ERROR will be emitted. + * + * Raw mouse motion is closer to the actual motion of the mouse across + * a surface. It is not affected by the scaling and acceleration applied to + * the motion of the desktop cursor. That processing is suitable for a cursor + * while raw motion is better for controlling for example a 3D camera. Because + * of this, raw mouse motion is only provided when the cursor is disabled. + * + * @return `GLFW_TRUE` if raw mouse motion is supported on the current machine, + * or `GLFW_FALSE` otherwise. + * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @thread_safety This function must only be called from the main thread. + * + * @sa @ref raw_mouse_motion + * @sa @ref glfwSetInputMode + * + * @since Added in version 3.3. + * + * @ingroup input + */ +GLFWAPI int glfwRawMouseMotionSupported(void); + /*! @brief Returns the layout-specific name of the specified printable key. * * This function returns the name of the specified printable key, encoded as @@ -3925,9 +4233,11 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * + * @remark The contents of the returned string may change when a keyboard + * layout change event is received. + * * @pointer_lifetime The returned string is allocated and freed by GLFW. You - * should not free it yourself. It is valid until the next call to @ref - * glfwGetKeyName, or until the library is terminated. + * should not free it yourself. It is valid until the library is terminated. * * @thread_safety This function must only be called from the main thread. * @@ -3968,8 +4278,7 @@ GLFWAPI int glfwGetKeyScancode(int key); * * This function returns the last state reported for the specified key to the * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to - * the key callback. + * `GLFW_RELEASE`. The action `GLFW_REPEAT` is only reported to the key callback. * * If the @ref GLFW_STICKY_KEYS input mode is enabled, this function returns * `GLFW_PRESS` the first time you call it for a key that was pressed, even if @@ -4011,8 +4320,8 @@ GLFWAPI int glfwGetKey(GLFWwindow* window, int key); * `GLFW_RELEASE`. * * If the @ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled, this function - * `GLFW_PRESS` the first time you call it for a mouse button that was pressed, - * even if that mouse button has already been released. + * returns `GLFW_PRESS` the first time you call it for a mouse button that was + * pressed, even if that mouse button has already been released. * * @param[in] window The desired window. * @param[in] button The desired [mouse button](@ref buttons). @@ -4032,11 +4341,11 @@ GLFWAPI int glfwGetKey(GLFWwindow* window, int key); */ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); -/*! @brief Retrieves the position of the cursor relative to the client area of +/*! @brief Retrieves the position of the cursor relative to the content area of * the window. * * This function returns the position of the cursor, in screen coordinates, - * relative to the upper-left corner of the client area of the specified + * relative to the upper-left corner of the content area of the specified * window. * * If the cursor is disabled (with `GLFW_CURSOR_DISABLED`) then the cursor @@ -4052,9 +4361,9 @@ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); * * @param[in] window The desired window. * @param[out] xpos Where to store the cursor x-coordinate, relative to the - * left edge of the client area, or `NULL`. + * left edge of the content area, or `NULL`. * @param[out] ypos Where to store the cursor y-coordinate, relative to the to - * top edge of the client area, or `NULL`. + * top edge of the content area, or `NULL`. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -4070,11 +4379,11 @@ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); */ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); -/*! @brief Sets the position of the cursor, relative to the client area of the +/*! @brief Sets the position of the cursor, relative to the content area of the * window. * * This function sets the position, in screen coordinates, of the cursor - * relative to the upper-left corner of the client area of the specified + * relative to the upper-left corner of the content area of the specified * window. The window must have input focus. If the window does not have * input focus when this function is called, it fails silently. * @@ -4089,9 +4398,9 @@ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); * * @param[in] window The desired window. * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * client area. + * content area. * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * client area. + * content area. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. @@ -4130,8 +4439,8 @@ GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); * @return The handle of the created cursor, or `NULL` if an * [error](@ref error_handling) occurred. * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_INVALID_VALUE and @ref GLFW_PLATFORM_ERROR. * * @pointer_lifetime The specified image data is copied before this function * returns. @@ -4201,7 +4510,7 @@ GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); /*! @brief Sets the cursor for the window. * * This function sets the cursor image to be used when the cursor is over the - * client area of the specified window. The set cursor will only be visible + * content area of the specified window. The set cursor will only be visible * when the [cursor mode](@ref cursor_mode) of the window is * `GLFW_CURSOR_NORMAL`. * @@ -4250,11 +4559,18 @@ GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); * scancode may be zero. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new key callback, or `NULL` to remove the currently + * @param[in] callback The new key callback, or `NULL` to remove the currently * set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int key, int scancode, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWkeyfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4266,7 +4582,7 @@ GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); * * @ingroup input */ -GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); +GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun callback); /*! @brief Sets the Unicode character callback. * @@ -4283,16 +4599,21 @@ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); * The character callback behaves as system text input normally does and will * not be called if modifier keys are held down that would prevent normal text * input on that platform, for example a Super (Command) key on macOS or Alt key - * on Windows. There is a - * [character with modifiers callback](@ref glfwSetCharModsCallback) that - * receives these events. + * on Windows. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4304,7 +4625,7 @@ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); * * @ingroup input */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun callback); /*! @brief Sets the Unicode character with modifiers callback. * @@ -4322,11 +4643,18 @@ GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); * [key callback](@ref glfwSetKeyCallback) instead. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or an * [error](@ref error_handling) occurred. * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, unsigned int codepoint, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcharmodsfun). + * * @deprecated Scheduled for removal in version 4.0. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. @@ -4339,7 +4667,7 @@ GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); * * @ingroup input */ -GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun); +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun callback); /*! @brief Sets the mouse button callback. * @@ -4353,11 +4681,18 @@ GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmods * [window focus callback](@ref glfwSetWindowFocusCallback) has been called. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int button, int action, int mods) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWmousebuttonfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4369,21 +4704,28 @@ GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmods * * @ingroup input */ -GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun cbfun); +GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmousebuttonfun callback); /*! @brief Sets the cursor position callback. * * This function sets the cursor position callback of the specified window, * which is called when the cursor is moved. The callback is provided with the * position, in screen coordinates, relative to the upper-left corner of the - * client area of the window. + * content area of the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xpos, double ypos); + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorposfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4394,20 +4736,27 @@ GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmo * * @ingroup input */ -GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun cbfun); +GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursorposfun callback); -/*! @brief Sets the cursor enter/exit callback. +/*! @brief Sets the cursor enter/leave callback. * * This function sets the cursor boundary crossing callback of the specified - * window, which is called when the cursor enters or leaves the client area of + * window, which is called when the cursor enters or leaves the content area of * the window. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int entered) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWcursorenterfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4418,7 +4767,7 @@ GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursor * * @ingroup input */ -GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun cbfun); +GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcursorenterfun callback); /*! @brief Sets the scroll callback. * @@ -4430,11 +4779,18 @@ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcu * wheel or a touchpad scrolling area. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently - * set callback. + * @param[in] callback The new scroll callback, or `NULL` to remove the + * currently set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, double xoffset, double yoffset) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWscrollfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4445,12 +4801,12 @@ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcu * * @ingroup input */ -GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); +GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun callback); -/*! @brief Sets the file drop callback. +/*! @brief Sets the path drop callback. * - * This function sets the file drop callback of the specified window, which is - * called when one or more dragged files are dropped on the window. + * This function sets the path drop callback of the specified window, which is + * called when one or more dragged paths are dropped on the window. * * Because the path array and its strings may have been generated specifically * for that event, they are not guaranteed to be valid after the callback has @@ -4458,11 +4814,18 @@ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cb * make a deep copy. * * @param[in] window The window whose callback to set. - * @param[in] cbfun The new file drop callback, or `NULL` to remove the + * @param[in] callback The new file drop callback, or `NULL` to remove the * currently set callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(GLFWwindow* window, int path_count, const char* paths[]) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWdropfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @remark @wayland File drop is currently unimplemented. @@ -4475,7 +4838,7 @@ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cb * * @ingroup input */ -GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun callback); /*! @brief Returns whether the specified joystick is present. * @@ -4581,7 +4944,7 @@ GLFWAPI const unsigned char* glfwGetJoystickButtons(int jid, int* count); * Each element in the array is one of the following values: * * Name | Value - * --------------------- | -------------------------------- + * ---- | ----- * `GLFW_HAT_CENTERED` | 0 * `GLFW_HAT_UP` | 1 * `GLFW_HAT_RIGHT` | 2 @@ -4663,7 +5026,7 @@ GLFWAPI const unsigned char* glfwGetJoystickHats(int jid, int* count); */ GLFWAPI const char* glfwGetJoystickName(int jid); -/*! @brief Returns the SDL comaptible GUID of the specified joystick. +/*! @brief Returns the SDL compatible GUID of the specified joystick. * * This function returns the SDL compatible GUID, as a UTF-8 encoded * hexadecimal string, of the specified joystick. The returned string is @@ -4794,11 +5157,18 @@ GLFWAPI int glfwJoystickIsGamepad(int jid); * called by joystick functions. The function will then return whatever it * returns if the joystick is not present. * - * @param[in] cbfun The new callback, or `NULL` to remove the currently set + * @param[in] callback The new callback, or `NULL` to remove the currently set * callback. * @return The previously set callback, or `NULL` if no callback was set or the * library had not been [initialized](@ref intro_init). * + * @callback_signature + * @code + * void function_name(int jid, int event) + * @endcode + * For more information about the callback parameters, see the + * [function pointer type](@ref GLFWjoystickfun). + * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function must only be called from the main thread. @@ -4809,7 +5179,7 @@ GLFWAPI int glfwJoystickIsGamepad(int jid); * * @ingroup input */ -GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun cbfun); +GLFWAPI GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback); /*! @brief Adds the specified SDL_GameControllerDB gamepad mappings. * @@ -4860,6 +5230,8 @@ GLFWAPI int glfwUpdateGamepadMappings(const char* string); * joystick is not present, does not have a mapping or an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref GLFW_INVALID_ENUM. + * * @pointer_lifetime The returned string is allocated and freed by GLFW. You * should not free it yourself. It is valid until the specified joystick is * disconnected, the gamepad mappings are updated or the library is terminated. @@ -4877,7 +5249,7 @@ GLFWAPI const char* glfwGetGamepadName(int jid); /*! @brief Retrieves the state of the specified joystick remapped as a gamepad. * - * This function retrives the state of the specified joystick remapped to + * This function retrieves the state of the specified joystick remapped to * an Xbox-like gamepad. * * If the specified joystick is not present or does not have a gamepad mapping @@ -4901,6 +5273,8 @@ GLFWAPI const char* glfwGetGamepadName(int jid); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_INVALID_ENUM. * + * @thread_safety This function must only be called from the main thread. + * * @sa @ref gamepad * @sa @ref glfwUpdateGamepadMappings * @sa @ref glfwJoystickIsGamepad @@ -4922,8 +5296,6 @@ GLFWAPI int glfwGetGamepadState(int jid, GLFWgamepadstate* state); * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_PLATFORM_ERROR. * - * @remark @wayland Clipboard is currently unimplemented. - * * @pointer_lifetime The specified string is copied before this function * returns. * @@ -4949,10 +5321,8 @@ GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` * if an [error](@ref error_handling) occurred. * - * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref - * GLFW_PLATFORM_ERROR. - * - * @remark @wayland Clipboard is currently unimplemented. + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED, @ref + * GLFW_FORMAT_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. * * @pointer_lifetime The returned string is allocated and freed by GLFW. You * should not free it yourself. It is valid until the next call to @ref @@ -4970,23 +5340,26 @@ GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); */ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); -/*! @brief Returns the value of the GLFW timer. +/*! @brief Returns the GLFW time. + * + * This function returns the current GLFW time, in seconds. Unless the time + * has been set using @ref glfwSetTime it measures time elapsed since GLFW was + * initialized. * - * This function returns the value of the GLFW timer. Unless the timer has - * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW - * was initialized. + * This function and @ref glfwSetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. * * The resolution of the timer is system dependent, but is usually on the order * of a few micro- or nanoseconds. It uses the highest-resolution monotonic * time source on each supported platform. * - * @return The current value, in seconds, or zero if an + * @return The current time, in seconds, or zero if an * [error](@ref error_handling) occurred. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be + * writing of the internal base time is not atomic, so it needs to be * externally synchronized with calls to @ref glfwSetTime. * * @sa @ref time @@ -4997,23 +5370,26 @@ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); */ GLFWAPI double glfwGetTime(void); -/*! @brief Sets the GLFW timer. +/*! @brief Sets the GLFW time. * - * This function sets the value of the GLFW timer. It then continues to count - * up from that value. The value must be a positive finite number less than - * or equal to 18446744073.0, which is approximately 584.5 years. + * This function sets the current GLFW time, in seconds. The value must be + * a positive finite number less than or equal to 18446744073.0, which is + * approximately 584.5 years. + * + * This function and @ref glfwGetTime are helper functions on top of @ref + * glfwGetTimerFrequency and @ref glfwGetTimerValue. * * @param[in] time The new value, in seconds. * * @errors Possible errors include @ref GLFW_NOT_INITIALIZED and @ref * GLFW_INVALID_VALUE. * - * @remark The upper limit of the timer is calculated as + * @remark The upper limit of GLFW time is calculated as * floor((264 - 1) / 109) and is due to implementations * storing nanoseconds in 64 bits. The limit may be increased in the future. * * @thread_safety This function may be called from any thread. Reading and - * writing of the internal timer offset is not atomic, so it needs to be + * writing of the internal base time is not atomic, so it needs to be * externally synchronized with calls to @ref glfwGetTime. * * @sa @ref time @@ -5290,13 +5666,11 @@ GLFWAPI GLFWglproc glfwGetProcAddress(const char* procname); * This function returns whether the Vulkan loader and any minimally functional * ICD have been found. * - * The availability of a Vulkan loader and even an ICD does not by itself - * guarantee that surface creation or even instance creation is possible. - * For example, on Fermi systems Nvidia will install an ICD that provides no - * actual Vulkan support. Call @ref glfwGetRequiredInstanceExtensions to check - * whether the extensions necessary for Vulkan surface creation are available - * and @ref glfwGetPhysicalDevicePresentationSupport to check whether a queue - * family of a physical device supports image presentation. + * The availability of a Vulkan loader and even an ICD does not by itself guarantee that + * surface creation or even instance creation is possible. Call @ref + * glfwGetRequiredInstanceExtensions to check whether the extensions necessary for Vulkan + * surface creation are available and @ref glfwGetPhysicalDevicePresentationSupport to + * check whether a queue family of a physical device supports image presentation. * * @return `GLFW_TRUE` if Vulkan is minimally available, or `GLFW_FALSE` * otherwise. @@ -5317,7 +5691,7 @@ GLFWAPI int glfwVulkanSupported(void); * * This function returns an array of names of Vulkan instance extensions required * by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the - * list will always contains `VK_KHR_surface`, so if you don't require any + * list will always contain `VK_KHR_surface`, so if you don't require any * additional extensions you can pass this list directly to the * `VkInstanceCreateInfo` struct. * @@ -5342,9 +5716,6 @@ GLFWAPI int glfwVulkanSupported(void); * returned array, as it is an error to specify an extension more than once in * the `VkInstanceCreateInfo` struct. * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. - * * @pointer_lifetime The returned array is allocated and freed by GLFW. You * should not free it yourself. It is guaranteed to be valid only until the * library is terminated. @@ -5426,7 +5797,7 @@ GLFWAPI GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char* p * GLFW_API_UNAVAILABLE and @ref GLFW_PLATFORM_ERROR. * * @remark @macos This function currently always returns `GLFW_TRUE`, as the - * `VK_MVK_macos_surface` extension does not provide + * `VK_MVK_macos_surface` and `VK_EXT_metal_surface` extensions do not provide * a `vkGetPhysicalDevice*PresentationSupport` type function. * * @thread_safety This function may be called from any thread. For @@ -5483,8 +5854,10 @@ GLFWAPI int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhys * @ref glfwVulkanSupported and @ref glfwGetRequiredInstanceExtensions should * eliminate almost all occurrences of these errors. * - * @remark @macos This function currently only supports the - * `VK_MVK_macos_surface` extension from MoltenVK. + * @remark @macos GLFW prefers the `VK_EXT_metal_surface` extension, with the + * `VK_MVK_macos_surface` extension as a fallback. The name of the selected + * extension, if any, is included in the array returned by @ref + * glfwGetRequiredInstanceExtensions. * * @remark @macos This function creates and sets a `CAMetalLayer` instance for * the window content view, which is required for MoltenVK to function. @@ -5525,6 +5898,7 @@ GLFWAPI VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow* window */ #ifndef GLAPIENTRY #define GLAPIENTRY APIENTRY + #define GLFW_GLAPIENTRY_DEFINED #endif /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ diff --git a/examples/others/external/include/GLFW/glfw3native.h b/examples/others/external/include/GLFW/glfw3native.h index 4372cb766..7be0227d5 100644 --- a/examples/others/external/include/GLFW/glfw3native.h +++ b/examples/others/external/include/GLFW/glfw3native.h @@ -3,7 +3,7 @@ * A library for OpenGL, window and input *------------------------------------------------------------------------ * Copyright (c) 2002-2006 Marcus Geelnard - * Copyright (c) 2006-2016 Camilla Löwy + * Copyright (c) 2006-2018 Camilla Löwy * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages @@ -62,7 +62,6 @@ extern "C" { * * `GLFW_EXPOSE_NATIVE_COCOA` * * `GLFW_EXPOSE_NATIVE_X11` * * `GLFW_EXPOSE_NATIVE_WAYLAND` - * * `GLFW_EXPOSE_NATIVE_MIR` * * The available context API macros are: * * `GLFW_EXPOSE_NATIVE_WGL` @@ -75,6 +74,16 @@ extern "C" { * and which platform-specific headers to include. It is then up your (by * definition platform-specific) code to handle which of these should be * defined. + * + * If you do not want the platform-specific headers to be included, define + * `GLFW_NATIVE_INCLUDE_NONE` before including the @ref glfw3native.h header. + * + * @code + * #define GLFW_EXPOSE_NATIVE_WIN32 + * #define GLFW_EXPOSE_NATIVE_WGL + * #define GLFW_NATIVE_INCLUDE_NONE + * #include + * @endcode */ @@ -82,46 +91,65 @@ extern "C" { * System headers and types *************************************************************************/ -#if defined(GLFW_EXPOSE_NATIVE_WIN32) - // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for - // example to allow applications to correctly declare a GL_ARB_debug_output - // callback) but windows.h assumes no one will define APIENTRY before it does - #if defined(GLFW_APIENTRY_DEFINED) - #undef APIENTRY - #undef GLFW_APIENTRY_DEFINED +#if !defined(GLFW_NATIVE_INCLUDE_NONE) + + #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL) + /* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + * example to allow applications to correctly declare a GL_KHR_debug callback) + * but windows.h assumes no one will define APIENTRY before it does + */ + #if defined(GLFW_APIENTRY_DEFINED) + #undef APIENTRY + #undef GLFW_APIENTRY_DEFINED + #endif + #include + #elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL) + #if defined(__OBJC__) + #import + #else + #include + #include + #endif + #elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX) + #include + #include + #elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) + #include #endif - #include -#elif defined(GLFW_EXPOSE_NATIVE_COCOA) - #include - #if defined(__OBJC__) - #import - #else - typedef void* id; + + #if defined(GLFW_EXPOSE_NATIVE_WGL) + /* WGL is declared by windows.h */ + #endif + #if defined(GLFW_EXPOSE_NATIVE_NSGL) + /* NSGL is declared by Cocoa.h */ + #endif + #if defined(GLFW_EXPOSE_NATIVE_GLX) + /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, glx.h will include gl.h, which will define it unconditionally + */ + #if defined(GLFW_GLAPIENTRY_DEFINED) + #undef GLAPIENTRY + #undef GLFW_GLAPIENTRY_DEFINED + #endif + #include + #endif + #if defined(GLFW_EXPOSE_NATIVE_EGL) + #include + #endif + #if defined(GLFW_EXPOSE_NATIVE_OSMESA) + /* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by + * default it also acts as an OpenGL header + * However, osmesa.h will include gl.h, which will define it unconditionally + */ + #if defined(GLFW_GLAPIENTRY_DEFINED) + #undef GLAPIENTRY + #undef GLFW_GLAPIENTRY_DEFINED + #endif + #include #endif -#elif defined(GLFW_EXPOSE_NATIVE_X11) - #include - #include -#elif defined(GLFW_EXPOSE_NATIVE_WAYLAND) - #include -#elif defined(GLFW_EXPOSE_NATIVE_MIR) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_WGL) - /* WGL is declared by windows.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_NSGL) - /* NSGL is declared by Cocoa.h */ -#endif -#if defined(GLFW_EXPOSE_NATIVE_GLX) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_EGL) - #include -#endif -#if defined(GLFW_EXPOSE_NATIVE_OSMESA) - #include -#endif +#endif /*GLFW_NATIVE_INCLUDE_NONE*/ /************************************************************************* @@ -135,6 +163,8 @@ extern "C" { * of the specified monitor, or `NULL` if an [error](@ref error_handling) * occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -150,6 +180,8 @@ GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -164,6 +196,16 @@ GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); * @return The `HWND` of the specified window, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -180,6 +222,17 @@ GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); * @return The `HGLRC` of the specified window, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * + * @remark The `HDC` associated with the window can be queried with the + * [GetDC](https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc) + * function. + * @code + * HDC dc = GetDC(glfwGetWin32Window(window)); + * @endcode + * This DC is private and does not need to be released. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -196,6 +249,8 @@ GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); * @return The `CGDirectDisplayID` of the specified monitor, or * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -210,6 +265,8 @@ GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); * @return The `NSWindow` of the specified window, or `nil` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -226,6 +283,9 @@ GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); * @return The `NSOpenGLContext` of the specified window, or `nil` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -242,6 +302,8 @@ GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); * @return The `Display` used by GLFW, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -256,6 +318,8 @@ GLFWAPI Display* glfwGetX11Display(void); * @return The `RRCrtc` of the specified monitor, or `None` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -270,6 +334,8 @@ GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); * @return The `RROutput` of the specified monitor, or `None` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -284,6 +350,8 @@ GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); * @return The `Window` of the specified window, or `None` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -350,6 +418,9 @@ GLFWAPI const char* glfwGetX11SelectionString(void); * @return The `GLXContext` of the specified window, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -364,6 +435,9 @@ GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); * @return The `GLXWindow` of the specified window, or `None` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -380,6 +454,8 @@ GLFWAPI GLXWindow glfwGetGLXWindow(GLFWwindow* window); * @return The `struct wl_display*` used by GLFW, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -394,6 +470,8 @@ GLFWAPI struct wl_display* glfwGetWaylandDisplay(void); * @return The `struct wl_output*` of the specified monitor, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -408,35 +486,7 @@ GLFWAPI struct wl_output* glfwGetWaylandMonitor(GLFWmonitor* monitor); * @return The main `struct wl_surface*` of the specified window, or `NULL` if * an [error](@ref error_handling) occurred. * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); -#endif - -#if defined(GLFW_EXPOSE_NATIVE_MIR) -/*! @brief Returns the `MirConnection*` used by GLFW. - * - * @return The `MirConnection*` used by GLFW, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI MirConnection* glfwGetMirDisplay(void); - -/*! @brief Returns the Mir output ID of the specified monitor. - * - * @return The Mir output ID of the specified monitor, or zero if an - * [error](@ref error_handling) occurred. + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. * * @thread_safety This function may be called from any thread. Access is not * synchronized. @@ -445,21 +495,7 @@ GLFWAPI MirConnection* glfwGetMirDisplay(void); * * @ingroup native */ -GLFWAPI int glfwGetMirMonitor(GLFWmonitor* monitor); - -/*! @brief Returns the `MirWindow*` of the specified window. - * - * @return The `MirWindow*` of the specified window, or `NULL` if an - * [error](@ref error_handling) occurred. - * - * @thread_safety This function may be called from any thread. Access is not - * synchronized. - * - * @since Added in version 3.2. - * - * @ingroup native - */ -GLFWAPI MirWindow* glfwGetMirWindow(GLFWwindow* window); +GLFWAPI struct wl_surface* glfwGetWaylandWindow(GLFWwindow* window); #endif #if defined(GLFW_EXPOSE_NATIVE_EGL) @@ -468,6 +504,11 @@ GLFWAPI MirWindow* glfwGetMirWindow(GLFWwindow* window); * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NOT_INITIALIZED. + * + * @remark Because EGL is initialized on demand, this function will return + * `EGL_NO_DISPLAY` until the first context has been created via EGL. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -482,6 +523,9 @@ GLFWAPI EGLDisplay glfwGetEGLDisplay(void); * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -496,6 +540,9 @@ GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -519,6 +566,9 @@ GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -540,6 +590,9 @@ GLFWAPI int glfwGetOSMesaColorBuffer(GLFWwindow* window, int* width, int* height * @return `GLFW_TRUE` if successful, or `GLFW_FALSE` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * @@ -554,6 +607,9 @@ GLFWAPI int glfwGetOSMesaDepthBuffer(GLFWwindow* window, int* width, int* height * @return The `OSMesaContext` of the specified window, or `NULL` if an * [error](@ref error_handling) occurred. * + * @errors Possible errors include @ref GLFW_NO_WINDOW_CONTEXT and @ref + * GLFW_NOT_INITIALIZED. + * * @thread_safety This function may be called from any thread. Access is not * synchronized. * diff --git a/examples/others/external/lib/libglfw3.a b/examples/others/external/lib/libglfw3.a index 90e7a4759d032cb44de7e0551b3e9ed81cb9ddff..60f9e59f89276e07aac687c19f59c41103ace104 100644 GIT binary patch literal 290550 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 m!rssu;mik9(G*C`k%I*0F?EnUB{{0^+Kaqj} literal 269591 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 n(2--vhZQZ_a+=~SLCee$c?}og3SU8w$KzQuzS