2010-11-17 14:42:55 +00:00
/*************************************************************************
2019-04-16 12:43:29 +00:00
* GLFW 3.4 - www . glfw . org
2013-07-29 18:53:17 +00:00
* A library for OpenGL , window and input
2010-09-07 15:34:51 +00:00
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* Copyright ( c ) 2002 - 2006 Marcus Geelnard
2019-04-15 18:50:00 +00:00
* Copyright ( c ) 2006 - 2019 Camilla Löwy < elmindreda @ glfw . org >
2010-09-07 15:34:51 +00:00
*
* This software is provided ' as - is ' , without any express or implied
* warranty . In no event will the authors be held liable for any damages
* arising from the use of this software .
*
* Permission is granted to anyone to use this software for any purpose ,
* including commercial applications , and to alter it and redistribute it
* freely , subject to the following restrictions :
*
* 1. The origin of this software must not be misrepresented ; you must not
* claim that you wrote the original software . If you use this software
* in a product , an acknowledgment in the product documentation would
* be appreciated but is not required .
*
* 2. Altered source versions must be plainly marked as such , and must not
* be misrepresented as being the original software .
*
* 3. This notice may not be removed or altered from any source
* distribution .
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2013-01-15 00:59:56 +00:00
# ifndef _glfw3_h_
# define _glfw3_h_
2010-09-07 15:34:51 +00:00
# ifdef __cplusplus
extern " C " {
# endif
2012-11-22 15:38:24 +00:00
/*************************************************************************
* Doxygen documentation
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2015-10-24 18:48:46 +00:00
/*! @file glfw3.h
* @ brief The header of the GLFW 3 API .
*
* This is the header file of the GLFW 3 API . It defines all its types and
* declares all its functions .
*
* For more information about how to use this file , see @ ref build_include .
*/
2016-02-19 09:29:13 +00:00
/*! @defgroup context Context reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to OpenGL and OpenGL ES contexts .
2014-09-18 13:03:29 +00:00
*
2016-02-19 09:29:13 +00:00
* This is the reference documentation for OpenGL and OpenGL ES context related
* functions . For more task - oriented information , see the @ ref context_guide .
2012-12-13 01:22:39 +00:00
*/
2020-05-04 21:18:48 +00:00
/*! @defgroup vulkan Vulkan support reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to Vulkan .
2015-08-10 18:19:04 +00:00
*
2016-02-19 09:29:13 +00:00
* This is the reference documentation for Vulkan related functions and types .
* For more task - oriented information , see the @ ref vulkan_guide .
2015-08-10 18:19:04 +00:00
*/
2016-02-19 09:29:13 +00:00
/*! @defgroup init Initialization, version and error reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to initialization and error handling .
2014-09-18 13:03:29 +00:00
*
* This is the reference documentation for initialization and termination of
2016-02-19 09:29:13 +00:00
* the library , version management and error handling . For more task - oriented
* information , see the @ ref intro_guide .
2012-11-22 15:38:24 +00:00
*/
2016-02-19 09:29:13 +00:00
/*! @defgroup input Input reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to input handling .
2014-09-18 13:03:29 +00:00
*
* This is the reference documentation for input related functions and types .
2016-02-19 09:29:13 +00:00
* For more task - oriented information , see the @ ref input_guide .
2012-11-22 15:38:24 +00:00
*/
2016-02-19 09:29:13 +00:00
/*! @defgroup monitor Monitor reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to monitors .
2013-06-17 10:56:36 +00:00
*
* This is the reference documentation for monitor related functions and types .
2016-02-19 09:29:13 +00:00
* For more task - oriented information , see the @ ref monitor_guide .
2012-11-27 16:07:28 +00:00
*/
2016-02-19 09:29:13 +00:00
/*! @defgroup window Window reference
2017-02-06 16:31:25 +00:00
* @ brief Functions and types related to windows .
2012-11-22 15:38:24 +00:00
*
2013-06-17 10:56:36 +00:00
* This is the reference documentation for window related functions and types ,
2016-02-19 09:29:13 +00:00
* including creation , deletion and event polling . For more task - oriented
* information , see the @ ref window_guide .
2012-11-22 15:38:24 +00:00
*/
2010-09-07 15:34:51 +00:00
/*************************************************************************
2015-02-22 17:35:10 +00:00
* Compiler - and platform - specific preprocessor work
2010-09-07 15:34:51 +00:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2015-02-22 17:35:10 +00:00
/* If we are we on Windows, we want a single define for it.
2010-09-07 15:34:51 +00:00
*/
2015-02-22 17:18:43 +00:00
# if !defined(_WIN32) && (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))
2010-09-07 15:34:51 +00:00
# define _WIN32
# endif /* _WIN32 */
2019-07-12 12:23:12 +00:00
/* 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 <stddef.h>
/* Include because it is needed by Vulkan and related functions.
* Include it unconditionally to avoid surprising side - effects .
*/
# include <stdint.h>
# if defined(GLFW_INCLUDE_VULKAN)
# include <vulkan/vulkan.h>
# 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 .
*/
2015-02-22 17:35:10 +00:00
/* It is customary to use APIENTRY for OpenGL function pointer declarations on
* all platforms . Additionally , the Windows OpenGL header needs APIENTRY .
2010-09-07 15:34:51 +00:00
*/
2019-07-12 12:33:05 +00:00
# if !defined(APIENTRY)
# if defined(_WIN32)
2010-09-07 15:34:51 +00:00
# define APIENTRY __stdcall
# else
# define APIENTRY
# endif
2017-08-21 12:37:38 +00:00
# define GLFW_APIENTRY_DEFINED
2010-09-07 15:34:51 +00:00
# endif /* APIENTRY */
2015-02-22 17:35:10 +00:00
/* Some Windows OpenGL headers need this.
2010-09-07 15:34:51 +00:00
*/
# if !defined(WINGDIAPI) && defined(_WIN32)
2015-02-22 17:14:30 +00:00
# define WINGDIAPI __declspec(dllimport)
2011-07-27 15:09:17 +00:00
# define GLFW_WINGDIAPI_DEFINED
2010-09-07 15:34:51 +00:00
# endif /* WINGDIAPI */
2015-02-22 17:35:10 +00:00
/* Some Windows GLU headers need this.
*/
2010-09-07 15:34:51 +00:00
# if !defined(CALLBACK) && defined(_WIN32)
2015-02-22 17:17:34 +00:00
# define CALLBACK __stdcall
2011-07-27 15:09:17 +00:00
# define GLFW_CALLBACK_DEFINED
2010-09-07 15:34:51 +00:00
# endif /* CALLBACK */
2017-05-16 12:54:17 +00:00
/* Include the chosen OpenGL or OpenGL ES headers.
2013-09-08 14:07:34 +00:00
*/
2017-05-16 13:42:51 +00:00
# if defined(GLFW_INCLUDE_ES1)
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# include <GLES/gl.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GLES/glext.h>
# endif
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# elif defined(GLFW_INCLUDE_ES2)
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# include <GLES2/gl2.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GLES2/gl2ext.h>
# endif
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# elif defined(GLFW_INCLUDE_ES3)
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# include <GLES3/gl3.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GLES2/gl2ext.h>
# endif
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# elif defined(GLFW_INCLUDE_ES31)
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# include <GLES3/gl31.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GLES2/gl2ext.h>
# endif
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# elif defined(GLFW_INCLUDE_ES32)
2017-05-16 12:54:17 +00:00
2017-05-16 13:42:51 +00:00
# include <GLES3/gl32.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GLES2/gl2ext.h>
# endif
2017-05-16 12:54:17 +00:00
# elif defined(GLFW_INCLUDE_GLCOREARB)
# if defined(__APPLE__)
2015-01-08 05:56:17 +00:00
# include <OpenGL/gl3.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <OpenGL/gl3ext.h>
2017-05-16 12:54:17 +00:00
# endif /*GLFW_INCLUDE_GLEXT*/
# else /*__APPLE__*/
# include <GL/glcorearb.h>
2021-09-26 14:28:04 +00:00
# if defined(GLFW_INCLUDE_GLEXT)
# include <GL/glext.h>
# endif
2017-05-16 12:54:17 +00:00
# endif /*__APPLE__*/
2020-06-05 03:57:43 +00:00
# elif defined(GLFW_INCLUDE_GLU)
# if defined(__APPLE__)
# if defined(GLFW_INCLUDE_GLU)
# include <OpenGL/glu.h>
# endif
# else /*__APPLE__*/
# if defined(GLFW_INCLUDE_GLU)
# include <GL/glu.h>
# endif
# endif /*__APPLE__*/
2020-05-26 21:35:40 +00:00
# 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*/
2017-05-16 12:54:17 +00:00
# if defined(__APPLE__)
2015-01-08 05:56:17 +00:00
# if !defined(GLFW_INCLUDE_GLEXT)
# define GL_GLEXT_LEGACY
2013-09-08 14:07:34 +00:00
# endif
2015-01-08 05:56:17 +00:00
# include <OpenGL/gl.h>
2017-05-16 12:54:17 +00:00
# else /*__APPLE__*/
2015-01-08 05:56:17 +00:00
# include <GL/gl.h>
# if defined(GLFW_INCLUDE_GLEXT)
# include <GL/glext.h>
# endif
2017-05-16 12:54:17 +00:00
# endif /*__APPLE__*/
# endif /* OpenGL and OpenGL ES headers */
2012-03-25 15:43:02 +00:00
# if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
2014-04-23 11:30:11 +00:00
/* 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
* configuration header when compiling the DLL version of the library .
2013-07-22 23:59:27 +00:00
*/
2015-12-13 13:07:27 +00:00
# error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
2012-03-25 15:43:02 +00:00
# endif
2015-01-08 05:56:17 +00:00
/* GLFWAPI is used to declare public API functions for export
* from the DLL / shared library / dynamic library .
*/
2012-03-25 15:40:30 +00:00
# if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
2014-10-13 12:13:08 +00:00
/* We are building GLFW as a Win32 DLL */
2010-11-17 14:42:55 +00:00
# define GLFWAPI __declspec(dllexport)
2010-09-07 15:34:51 +00:00
# elif defined(_WIN32) && defined(GLFW_DLL)
2022-04-21 15:35:50 +00:00
/* We are calling a GLFW Win32 DLL */
2015-02-22 17:10:20 +00:00
# define GLFWAPI __declspec(dllimport)
2013-05-01 12:08:09 +00:00
# elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL)
2022-04-21 15:35:50 +00:00
/* We are building GLFW as a Unix shared library */
2013-05-01 12:08:09 +00:00
# define GLFWAPI __attribute__((visibility("default")))
2010-09-07 15:34:51 +00:00
# else
# define GLFWAPI
# endif
/*************************************************************************
2013-01-17 20:51:39 +00:00
* GLFW API tokens
2010-09-07 15:34:51 +00:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2012-11-22 15:38:24 +00:00
/*! @name GLFW version macros
* @ { */
2021-05-12 16:49:35 +00:00
/*! @brief The major version number of the GLFW header.
2012-11-22 15:38:24 +00:00
*
2021-05-12 16:49:35 +00:00
* The major version number of the GLFW header . This is incremented when the
* API is changed in non - compatible ways .
2012-11-22 15:38:24 +00:00
* @ ingroup init
*/
2013-01-17 20:51:39 +00:00
# define GLFW_VERSION_MAJOR 3
2021-05-12 16:49:35 +00:00
/*! @brief The minor version number of the GLFW header.
2012-11-22 15:38:24 +00:00
*
2021-05-12 16:49:35 +00:00
* The minor version number of the GLFW header . This is incremented when
* features are added to the API but it remains backward - compatible .
2012-11-22 15:38:24 +00:00
* @ ingroup init
*/
2019-04-16 12:43:29 +00:00
# define GLFW_VERSION_MINOR 4
2021-05-12 16:49:35 +00:00
/*! @brief The revision number of the GLFW header.
2012-11-22 15:38:24 +00:00
*
2021-05-12 16:49:35 +00:00
* The revision number of the GLFW header . This is incremented when a bug fix
* release is made that does not contain any API changes .
2012-11-22 15:38:24 +00:00
* @ ingroup init
*/
2016-08-18 21:42:15 +00:00
# define GLFW_VERSION_REVISION 0
2012-11-22 15:38:24 +00:00
/*! @} */
2010-09-07 15:34:51 +00:00
2015-08-23 17:30:04 +00:00
/*! @brief One.
*
2018-11-05 16:37:49 +00:00
* This is only semantic sugar for the number 1. You can instead use ` 1 ` or
2019-04-01 16:36:30 +00:00
* ` true ` or ` _True ` or ` GL_TRUE ` or ` VK_TRUE ` or anything else that is equal
* to one .
2018-11-05 16:37:49 +00:00
*
* @ ingroup init
2015-08-23 17:30:04 +00:00
*/
# define GLFW_TRUE 1
/*! @brief Zero.
*
2018-11-05 16:37:49 +00:00
* This is only semantic sugar for the number 0. You can instead use ` 0 ` or
2019-04-01 16:36:30 +00:00
* ` false ` or ` _False ` or ` GL_FALSE ` or ` VK_FALSE ` or anything else that is
* equal to zero .
2018-11-05 16:37:49 +00:00
*
* @ ingroup init
2015-08-23 17:30:04 +00:00
*/
# define GLFW_FALSE 0
2012-11-22 15:38:24 +00:00
/*! @name Key and button actions
* @ { */
2014-09-18 13:03:29 +00:00
/*! @brief The key or mouse button was released.
*
* The key or mouse button was released .
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2013-01-17 20:51:39 +00:00
# define GLFW_RELEASE 0
2014-09-18 13:03:29 +00:00
/*! @brief The key or mouse button was pressed.
*
* The key or mouse button was pressed .
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2013-01-17 20:51:39 +00:00
# define GLFW_PRESS 1
2013-01-12 16:06:35 +00:00
/*! @brief The key was held down until it repeated.
2014-09-18 13:03:29 +00:00
*
* The key was held down until it repeated .
*
2013-01-12 16:06:35 +00:00
* @ ingroup input
*/
# define GLFW_REPEAT 2
2012-11-22 15:38:24 +00:00
/*! @} */
2010-09-07 15:34:51 +00:00
2017-03-01 22:27:20 +00:00
/*! @defgroup hat_state Joystick hat states
2018-11-05 16:37:49 +00:00
* @ brief Joystick hat states .
2016-11-26 03:56:24 +00:00
*
* See [ joystick hat input ] ( @ ref joystick_hat ) for how these are used .
*
* @ ingroup input
* @ { */
# define GLFW_HAT_CENTERED 0
# define GLFW_HAT_UP 1
# define GLFW_HAT_RIGHT 2
# define GLFW_HAT_DOWN 4
# define GLFW_HAT_LEFT 8
# define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)
# define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)
# define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)
# define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)
/*! @} */
2013-04-10 21:01:12 +00:00
/*! @defgroup keys Keyboard keys
2017-02-06 16:31:25 +00:00
* @ brief Keyboard key IDs .
2013-04-10 21:01:12 +00:00
*
2015-01-18 00:55:25 +00:00
* See [ key input ] ( @ ref input_key ) for how these are used .
*
* These key codes are inspired by the _USB HID Usage Tables v1 .12 _ ( p . 53 - 60 ) ,
* but re - arranged to map to 7 - bit ASCII for printable keys ( function keys are
* put in the 256 + range ) .
*
* The naming of the key codes follow these rules :
* - The US keyboard layout is used
2021-09-15 12:20:56 +00:00
* - Names of printable alphanumeric characters are used ( e . g . " A " , " R " ,
2015-01-18 00:55:25 +00:00
* " 3 " , etc . )
* - For non - alphanumeric characters , Unicode : ish names are used ( e . g .
* " COMMA " , " LEFT_SQUARE_BRACKET " , etc . ) . Note that some names do not
* correspond to the Unicode standard ( usually for brevity )
* - Keys that lack a clear US mapping are named " WORLD_x "
* - For non - printable keys , custom names are used ( e . g . " F4 " ,
* " BACKSPACE " , etc . )
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
* @ {
*/
2013-05-30 15:19:12 +00:00
/* The unknown key */
# define GLFW_KEY_UNKNOWN -1
2011-01-02 10:18:14 +00:00
/* Printable keys */
2013-01-17 20:51:39 +00:00
# define GLFW_KEY_SPACE 32
# define GLFW_KEY_APOSTROPHE 39 /* ' */
# define GLFW_KEY_COMMA 44 /* , */
# define GLFW_KEY_MINUS 45 /* - */
# define GLFW_KEY_PERIOD 46 /* . */
# define GLFW_KEY_SLASH 47 /* / */
# define GLFW_KEY_0 48
# define GLFW_KEY_1 49
# define GLFW_KEY_2 50
# define GLFW_KEY_3 51
# define GLFW_KEY_4 52
# define GLFW_KEY_5 53
# define GLFW_KEY_6 54
# define GLFW_KEY_7 55
# define GLFW_KEY_8 56
# define GLFW_KEY_9 57
# define GLFW_KEY_SEMICOLON 59 /* ; */
# define GLFW_KEY_EQUAL 61 /* = */
# define GLFW_KEY_A 65
# define GLFW_KEY_B 66
# define GLFW_KEY_C 67
# define GLFW_KEY_D 68
# define GLFW_KEY_E 69
# define GLFW_KEY_F 70
# define GLFW_KEY_G 71
# define GLFW_KEY_H 72
# define GLFW_KEY_I 73
# define GLFW_KEY_J 74
# define GLFW_KEY_K 75
# define GLFW_KEY_L 76
# define GLFW_KEY_M 77
# define GLFW_KEY_N 78
# define GLFW_KEY_O 79
# define GLFW_KEY_P 80
# define GLFW_KEY_Q 81
# define GLFW_KEY_R 82
# define GLFW_KEY_S 83
# define GLFW_KEY_T 84
# define GLFW_KEY_U 85
# define GLFW_KEY_V 86
# define GLFW_KEY_W 87
# define GLFW_KEY_X 88
# define GLFW_KEY_Y 89
# define GLFW_KEY_Z 90
# define GLFW_KEY_LEFT_BRACKET 91 /* [ */
# define GLFW_KEY_BACKSLASH 92 /* \ */
# define GLFW_KEY_RIGHT_BRACKET 93 /* ] */
# define GLFW_KEY_GRAVE_ACCENT 96 /* ` */
# define GLFW_KEY_WORLD_1 161 /* non-US #1 */
# define GLFW_KEY_WORLD_2 162 /* non-US #2 */
2011-01-02 10:18:14 +00:00
/* Function keys */
2013-01-17 20:51:39 +00:00
# define GLFW_KEY_ESCAPE 256
# define GLFW_KEY_ENTER 257
# define GLFW_KEY_TAB 258
# define GLFW_KEY_BACKSPACE 259
# define GLFW_KEY_INSERT 260
# define GLFW_KEY_DELETE 261
# define GLFW_KEY_RIGHT 262
# define GLFW_KEY_LEFT 263
# define GLFW_KEY_DOWN 264
# define GLFW_KEY_UP 265
# define GLFW_KEY_PAGE_UP 266
# define GLFW_KEY_PAGE_DOWN 267
# define GLFW_KEY_HOME 268
# define GLFW_KEY_END 269
# define GLFW_KEY_CAPS_LOCK 280
# define GLFW_KEY_SCROLL_LOCK 281
# define GLFW_KEY_NUM_LOCK 282
# define GLFW_KEY_PRINT_SCREEN 283
# define GLFW_KEY_PAUSE 284
# define GLFW_KEY_F1 290
# define GLFW_KEY_F2 291
# define GLFW_KEY_F3 292
# define GLFW_KEY_F4 293
# define GLFW_KEY_F5 294
# define GLFW_KEY_F6 295
# define GLFW_KEY_F7 296
# define GLFW_KEY_F8 297
# define GLFW_KEY_F9 298
# define GLFW_KEY_F10 299
# define GLFW_KEY_F11 300
# define GLFW_KEY_F12 301
# define GLFW_KEY_F13 302
# define GLFW_KEY_F14 303
# define GLFW_KEY_F15 304
# define GLFW_KEY_F16 305
# define GLFW_KEY_F17 306
# define GLFW_KEY_F18 307
# define GLFW_KEY_F19 308
# define GLFW_KEY_F20 309
# define GLFW_KEY_F21 310
# define GLFW_KEY_F22 311
# define GLFW_KEY_F23 312
# define GLFW_KEY_F24 313
# define GLFW_KEY_F25 314
# define GLFW_KEY_KP_0 320
# define GLFW_KEY_KP_1 321
# define GLFW_KEY_KP_2 322
# define GLFW_KEY_KP_3 323
# define GLFW_KEY_KP_4 324
# define GLFW_KEY_KP_5 325
# define GLFW_KEY_KP_6 326
# define GLFW_KEY_KP_7 327
# define GLFW_KEY_KP_8 328
# define GLFW_KEY_KP_9 329
# define GLFW_KEY_KP_DECIMAL 330
# define GLFW_KEY_KP_DIVIDE 331
# define GLFW_KEY_KP_MULTIPLY 332
# define GLFW_KEY_KP_SUBTRACT 333
# define GLFW_KEY_KP_ADD 334
# define GLFW_KEY_KP_ENTER 335
# define GLFW_KEY_KP_EQUAL 336
# define GLFW_KEY_LEFT_SHIFT 340
# define GLFW_KEY_LEFT_CONTROL 341
# define GLFW_KEY_LEFT_ALT 342
# define GLFW_KEY_LEFT_SUPER 343
# define GLFW_KEY_RIGHT_SHIFT 344
# define GLFW_KEY_RIGHT_CONTROL 345
# define GLFW_KEY_RIGHT_ALT 346
# define GLFW_KEY_RIGHT_SUPER 347
# define GLFW_KEY_MENU 348
2015-07-02 12:24:50 +00:00
2013-01-17 20:51:39 +00:00
# define GLFW_KEY_LAST GLFW_KEY_MENU
2011-01-02 10:18:14 +00:00
2012-11-22 15:38:24 +00:00
/*! @} */
2013-05-23 12:42:33 +00:00
/*! @defgroup mods Modifier key flags
2017-02-06 16:31:25 +00:00
* @ brief Modifier key flags .
2015-01-18 00:55:25 +00:00
*
* See [ key input ] ( @ ref input_key ) for how these are used .
*
2013-05-23 12:42:33 +00:00
* @ ingroup input
2012-12-09 18:19:00 +00:00
* @ { */
2013-05-23 12:42:33 +00:00
/*! @brief If this bit is set one or more Shift keys were held down.
2017-11-29 19:42:37 +00:00
*
* If this bit is set one or more Shift keys were held down .
2012-12-09 18:19:00 +00:00
*/
# define GLFW_MOD_SHIFT 0x0001
2013-05-23 12:42:33 +00:00
/*! @brief If this bit is set one or more Control keys were held down.
2017-11-29 19:42:37 +00:00
*
* If this bit is set one or more Control keys were held down .
2012-12-09 18:19:00 +00:00
*/
2013-05-23 12:11:05 +00:00
# define GLFW_MOD_CONTROL 0x0002
2013-05-23 12:42:33 +00:00
/*! @brief If this bit is set one or more Alt keys were held down.
2017-11-29 19:42:37 +00:00
*
* If this bit is set one or more Alt keys were held down .
2012-12-09 18:19:00 +00:00
*/
# define GLFW_MOD_ALT 0x0004
2013-05-23 12:42:33 +00:00
/*! @brief If this bit is set one or more Super keys were held down.
2017-11-29 19:42:37 +00:00
*
* If this bit is set one or more Super keys were held down .
2013-05-23 11:22:27 +00:00
*/
# define GLFW_MOD_SUPER 0x0008
2017-11-29 19:42:37 +00:00
/*! @brief If this bit is set the Caps Lock key is enabled.
*
* If this bit is set the Caps Lock key is enabled and the @ ref
* GLFW_LOCK_KEY_MODS input mode is set .
*/
# define GLFW_MOD_CAPS_LOCK 0x0010
/*! @brief If this bit is set the Num Lock key is enabled.
*
* If this bit is set the Num Lock key is enabled and the @ ref
* GLFW_LOCK_KEY_MODS input mode is set .
*/
# define GLFW_MOD_NUM_LOCK 0x0020
2012-12-09 18:19:00 +00:00
/*! @} */
2012-11-22 15:38:24 +00:00
/*! @defgroup buttons Mouse buttons
2017-02-06 16:31:25 +00:00
* @ brief Mouse button IDs .
2015-01-18 00:55:25 +00:00
*
* See [ mouse button input ] ( @ ref input_mouse_button ) for how these are used .
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
* @ { */
2013-01-17 20:51:39 +00:00
# define GLFW_MOUSE_BUTTON_1 0
# define GLFW_MOUSE_BUTTON_2 1
# define GLFW_MOUSE_BUTTON_3 2
# define GLFW_MOUSE_BUTTON_4 3
# define GLFW_MOUSE_BUTTON_5 4
# define GLFW_MOUSE_BUTTON_6 5
# define GLFW_MOUSE_BUTTON_7 6
# define GLFW_MOUSE_BUTTON_8 7
# define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8
# define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1
# define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2
# define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3
2012-11-22 15:38:24 +00:00
/*! @} */
2010-09-07 15:34:51 +00:00
2012-11-22 15:38:24 +00:00
/*! @defgroup joysticks Joysticks
2017-02-06 16:31:25 +00:00
* @ brief Joystick IDs .
2015-01-18 00:55:25 +00:00
*
* See [ joystick input ] ( @ ref joystick ) for how these are used .
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
* @ { */
2013-01-17 20:51:39 +00:00
# define GLFW_JOYSTICK_1 0
# define GLFW_JOYSTICK_2 1
# define GLFW_JOYSTICK_3 2
# define GLFW_JOYSTICK_4 3
# define GLFW_JOYSTICK_5 4
# define GLFW_JOYSTICK_6 5
# define GLFW_JOYSTICK_7 6
# define GLFW_JOYSTICK_8 7
# define GLFW_JOYSTICK_9 8
# define GLFW_JOYSTICK_10 9
# define GLFW_JOYSTICK_11 10
# define GLFW_JOYSTICK_12 11
# define GLFW_JOYSTICK_13 12
# define GLFW_JOYSTICK_14 13
# define GLFW_JOYSTICK_15 14
# define GLFW_JOYSTICK_16 15
# define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16
2012-11-22 15:38:24 +00:00
/*! @} */
2010-09-07 15:34:51 +00:00
2017-06-18 13:13:25 +00:00
/*! @defgroup gamepad_buttons Gamepad buttons
* @ brief Gamepad buttons .
*
* See @ ref gamepad for how these are used .
*
* @ ingroup input
* @ { */
# define GLFW_GAMEPAD_BUTTON_A 0
# define GLFW_GAMEPAD_BUTTON_B 1
# define GLFW_GAMEPAD_BUTTON_X 2
# define GLFW_GAMEPAD_BUTTON_Y 3
# define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4
# define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5
# define GLFW_GAMEPAD_BUTTON_BACK 6
# define GLFW_GAMEPAD_BUTTON_START 7
# define GLFW_GAMEPAD_BUTTON_GUIDE 8
# define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9
# define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10
# define GLFW_GAMEPAD_BUTTON_DPAD_UP 11
# define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12
# define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13
# define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14
# define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT
# define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A
# define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B
# define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X
# define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y
/*! @} */
/*! @defgroup gamepad_axes Gamepad axes
* @ brief Gamepad axes .
*
* See @ ref gamepad for how these are used .
*
* @ ingroup input
* @ { */
# define GLFW_GAMEPAD_AXIS_LEFT_X 0
# define GLFW_GAMEPAD_AXIS_LEFT_Y 1
# define GLFW_GAMEPAD_AXIS_RIGHT_X 2
# define GLFW_GAMEPAD_AXIS_RIGHT_Y 3
# define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4
# define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5
# define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
/*! @} */
2012-11-22 15:38:24 +00:00
/*! @defgroup errors Error codes
2017-02-06 16:31:25 +00:00
* @ brief Error codes .
2015-01-18 00:55:25 +00:00
*
* See [ error handling ] ( @ ref error_handling ) for how these are used .
*
2014-09-18 13:03:29 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
* @ { */
2017-05-01 17:20:57 +00:00
/*! @brief No error has occurred.
*
* No error has occurred .
*
* @ analysis Yay .
*/
# define GLFW_NO_ERROR 0
2012-11-22 15:38:24 +00:00
/*! @brief GLFW has not been initialized.
2014-09-18 13:03:29 +00:00
*
2015-12-13 13:07:27 +00:00
* This occurs if a GLFW function was called that must not be called unless the
2014-09-18 13:03:29 +00:00
* library is [ initialized ] ( @ ref intro_init ) .
*
2016-01-31 20:32:14 +00:00
* @ analysis Application programmer error . Initialize GLFW before calling any
* function that requires initialization .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_NOT_INITIALIZED 0x00010001
2012-11-22 15:38:24 +00:00
/*! @brief No context is current for this thread.
2014-09-18 13:03:29 +00:00
*
* This occurs if a GLFW function was called that needs and operates on the
* current OpenGL or OpenGL ES context but no context is current on the calling
* thread . One such function is @ ref glfwSwapInterval .
*
2016-01-31 20:32:14 +00:00
* @ analysis Application programmer error . Ensure a context is current before
* calling functions that require a current context .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_NO_CURRENT_CONTEXT 0x00010002
2014-09-18 13:03:29 +00:00
/*! @brief One of the arguments to the function was an invalid enum value.
*
* One of the arguments to the function was an invalid enum value , for example
2016-12-06 00:14:23 +00:00
* requesting @ ref GLFW_RED_BITS with @ ref glfwGetWindowAttrib .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ analysis Application programmer error . Fix the offending call .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_INVALID_ENUM 0x00010003
2014-09-18 13:03:29 +00:00
/*! @brief One of the arguments to the function was an invalid value.
*
* One of the arguments to the function was an invalid value , for example
* requesting a non - existent OpenGL or OpenGL ES version like 2.7 .
*
* Requesting a valid but unavailable OpenGL or OpenGL ES version will instead
* result in a @ ref GLFW_VERSION_UNAVAILABLE error .
*
2016-01-31 20:32:14 +00:00
* @ analysis Application programmer error . Fix the offending call .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_INVALID_VALUE 0x00010004
2012-11-22 15:38:24 +00:00
/*! @brief A memory allocation failed.
2014-09-18 13:03:29 +00:00
*
* A memory allocation failed .
*
2016-01-31 20:32:14 +00:00
* @ analysis A bug in GLFW or the underlying operating system . Report the bug
* to our [ issue tracker ] ( https : //github.com/glfw/glfw/issues).
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_OUT_OF_MEMORY 0x00010005
2015-08-10 18:19:04 +00:00
/*! @brief GLFW could not find support for the requested API on the system.
2014-10-13 14:00:11 +00:00
*
2015-08-10 18:19:04 +00:00
* GLFW could not find support for the requested API on the system .
2014-10-13 14:00:11 +00:00
*
2016-01-31 20:32:14 +00:00
* @ analysis The installed graphics driver does not support the requested
2021-07-13 19:50:09 +00:00
* API , or does not support it via the chosen context creation API .
2016-01-31 20:32:14 +00:00
* Below are a few examples .
2014-10-13 14:00:11 +00:00
*
* @ par
* Some pre - installed Windows graphics drivers do not support OpenGL . AMD only
2015-03-30 21:20:49 +00:00
* supports OpenGL ES via EGL , while Nvidia and Intel only support it via
2016-10-19 22:50:54 +00:00
* a WGL or GLX extension . macOS does not provide OpenGL ES at all . The Mesa
2015-01-05 15:46:04 +00:00
* EGL , OpenGL and OpenGL ES libraries do not interface with the Nvidia binary
2015-08-10 18:19:04 +00:00
* driver . Older graphics drivers do not support Vulkan .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_API_UNAVAILABLE 0x00010006
2014-09-18 13:03:29 +00:00
/*! @brief The requested OpenGL or OpenGL ES version is not available.
*
2015-03-10 18:51:14 +00:00
* The requested OpenGL or OpenGL ES version ( including any requested context
* or framebuffer hints ) is not available on this machine .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ analysis The machine does not support your requirements . If your
* application is sufficiently flexible , downgrade your requirements and try
* again . Otherwise , inform the user that their machine does not match your
2014-09-18 13:03:29 +00:00
* requirements .
*
2014-10-13 14:00:11 +00:00
* @ par
* Future invalid OpenGL and OpenGL ES versions , for example OpenGL 4.8 if 5.0
* comes out before the 4. x series gets that far , also fail with this error and
* not @ ref GLFW_INVALID_VALUE , because GLFW cannot know what future versions
* will exist .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_VERSION_UNAVAILABLE 0x00010007
2012-11-22 15:38:24 +00:00
/*! @brief A platform-specific error occurred that does not match any of the
* more specific categories .
2014-09-18 13:03:29 +00:00
*
* A platform - specific error occurred that does not match any of the more
* specific categories .
*
2016-01-31 20:32:14 +00:00
* @ analysis A bug or configuration error in GLFW , the underlying operating
* system or its drivers , or a lack of required resources . Report the issue to
* our [ issue tracker ] ( https : //github.com/glfw/glfw/issues).
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_PLATFORM_ERROR 0x00010008
2014-10-13 14:00:11 +00:00
/*! @brief The requested format is not supported or available.
*
* If emitted during window creation , the requested pixel format is not
* supported .
*
* If emitted when querying the clipboard , the contents of the clipboard could
* not be converted to the requested format .
*
2016-01-31 20:32:14 +00:00
* @ analysis If emitted during window creation , one or more
2014-10-13 14:00:11 +00:00
* [ hard constraints ] ( @ ref window_hints_hard ) did not match any of the
* available pixel formats . If your application is sufficiently flexible ,
* downgrade your requirements and try again . Otherwise , inform the user that
* their machine does not match your requirements .
*
* @ par
* If emitted when querying the clipboard , ignore the error or report it to
* the user , as appropriate .
2012-11-22 15:38:24 +00:00
*/
2013-05-27 20:16:59 +00:00
# define GLFW_FORMAT_UNAVAILABLE 0x00010009
2015-06-18 12:03:02 +00:00
/*! @brief The specified window does not have an OpenGL or OpenGL ES context.
*
* A window that does not have an OpenGL or OpenGL ES context was passed to
* a function that requires it to have one .
*
2016-01-31 20:32:14 +00:00
* @ analysis Application programmer error . Fix the offending call .
2015-06-18 12:03:02 +00:00
*/
# define GLFW_NO_WINDOW_CONTEXT 0x0001000A
2019-05-07 18:40:37 +00:00
/*! @brief The specified cursor shape is not available.
*
* The specified standard cursor shape is not available , either because the
2021-07-13 19:50:09 +00:00
* current platform cursor theme does not provide it or because it is not
2019-05-07 18:40:37 +00:00
* available on the platform .
*
* @ analysis Platform or system settings limitation . Pick another
* [ standard cursor shape ] ( @ ref shapes ) or create a
* [ custom cursor ] ( @ ref cursor_custom ) .
*/
# define GLFW_CURSOR_UNAVAILABLE 0x0001000B
2020-06-23 14:20:27 +00:00
/*! @brief The requested feature is not provided by the platform.
2020-05-20 16:02:58 +00:00
*
* The requested feature is not provided by the platform , so GLFW is unable to
* implement it . The documentation for each function notes if it could emit
* this error .
*
* @ analysis Platform or platform version limitation . The error can be ignored
* unless the feature is critical to the application .
*
* @ par
* A function call that emits this error has no effect other than the error and
* updating any existing out parameters .
*/
# define GLFW_FEATURE_UNAVAILABLE 0x0001000C
/*! @brief The requested feature is not implemented for the platform.
*
* The requested feature has not yet been implemented in GLFW for this platform .
*
* @ analysis An incomplete implementation of GLFW for this platform , hopefully
* fixed in a future release . The error can be ignored unless the feature is
* critical to the application .
*
* @ par
* A function call that emits this error has no effect other than the error and
* updating any existing out parameters .
*/
# define GLFW_FEATURE_UNIMPLEMENTED 0x0001000D
2021-07-13 19:50:09 +00:00
/*! @brief Platform unavailable or no matching platform was found.
*
* If emitted during initialization , no matching platform was found . If @ ref
* GLFW_PLATFORM is set to ` GLFW_ANY_PLATFORM ` , GLFW could not detect any of the
* platforms supported by this library binary , except for the Null platform . If set to
* a specific platform , it is either not supported by this library binary or GLFW was not
* able to detect it .
*
* If emitted by a native access function , GLFW was initialized for a different platform
* than the function is for .
*
* @ analysis Failure to detect any platform usually only happens on non - macOS Unix
* systems , either when no window system is running or the program was run from
* a terminal that does not have the necessary environment variables . Fall back to
* a different platform if possible or notify the user that no usable platform was
* detected .
*
* Failure to detect a specific platform may have the same cause as above or be because
* support for that platform was not compiled in . Call @ ref glfwPlatformSupported to
* check whether a specific platform is supported by a library binary .
*/
# define GLFW_PLATFORM_UNAVAILABLE 0x0001000E
2012-11-22 15:38:24 +00:00
/*! @} */
2010-09-07 15:34:51 +00:00
2016-12-06 00:14:23 +00:00
/*! @addtogroup window
* @ { */
/*! @brief Input focus window hint and attribute
*
* Input focus [ window hint ] ( @ ref GLFW_FOCUSED_hint ) or
* [ window attribute ] ( @ ref GLFW_FOCUSED_attrib ) .
*/
2013-01-17 20:51:39 +00:00
# define GLFW_FOCUSED 0x00020001
2016-12-06 00:14:23 +00:00
/*! @brief Window iconification window attribute
*
* Window iconification [ window attribute ] ( @ ref GLFW_ICONIFIED_attrib ) .
*/
2013-01-17 20:51:39 +00:00
# define GLFW_ICONIFIED 0x00020002
2016-12-06 00:14:23 +00:00
/*! @brief Window resize-ability window hint and attribute
*
2016-12-08 16:08:36 +00:00
* Window resize - ability [ window hint ] ( @ ref GLFW_RESIZABLE_hint ) and
2016-12-06 00:14:23 +00:00
* [ window attribute ] ( @ ref GLFW_RESIZABLE_attrib ) .
*/
2013-05-27 20:16:59 +00:00
# define GLFW_RESIZABLE 0x00020003
2016-12-06 00:14:23 +00:00
/*! @brief Window visibility window hint and attribute
*
2016-12-08 16:08:36 +00:00
* Window visibility [ window hint ] ( @ ref GLFW_VISIBLE_hint ) and
2016-12-06 00:14:23 +00:00
* [ window attribute ] ( @ ref GLFW_VISIBLE_attrib ) .
*/
2013-05-27 20:16:59 +00:00
# define GLFW_VISIBLE 0x00020004
2016-12-06 00:14:23 +00:00
/*! @brief Window decoration window hint and attribute
*
2016-12-08 16:08:36 +00:00
* Window decoration [ window hint ] ( @ ref GLFW_DECORATED_hint ) and
2016-12-06 00:14:23 +00:00
* [ window attribute ] ( @ ref GLFW_DECORATED_attrib ) .
*/
2013-05-27 20:16:59 +00:00
# define GLFW_DECORATED 0x00020005
2016-09-29 23:52:22 +00:00
/*! @brief Window auto-iconification window hint and attribute
2016-12-06 00:14:23 +00:00
*
2016-12-08 16:08:36 +00:00
* Window auto - iconification [ window hint ] ( @ ref GLFW_AUTO_ICONIFY_hint ) and
2016-09-29 23:52:22 +00:00
* [ window attribute ] ( @ ref GLFW_AUTO_ICONIFY_attrib ) .
2016-12-06 00:14:23 +00:00
*/
2014-04-08 13:32:34 +00:00
# define GLFW_AUTO_ICONIFY 0x00020006
2016-12-06 00:14:23 +00:00
/*! @brief Window decoration window hint and attribute
*
2016-12-08 16:08:36 +00:00
* Window decoration [ window hint ] ( @ ref GLFW_FLOATING_hint ) and
2016-12-06 00:14:23 +00:00
* [ window attribute ] ( @ ref GLFW_FLOATING_attrib ) .
*/
2014-05-23 12:01:02 +00:00
# define GLFW_FLOATING 0x00020007
2016-12-06 00:14:23 +00:00
/*! @brief Window maximization window hint and attribute
*
2016-12-08 16:08:36 +00:00
* Window maximization [ window hint ] ( @ ref GLFW_MAXIMIZED_hint ) and
2016-12-06 00:14:23 +00:00
* [ window attribute ] ( @ ref GLFW_MAXIMIZED_attrib ) .
*/
2015-10-13 10:50:59 +00:00
# define GLFW_MAXIMIZED 0x00020008
2017-02-06 14:03:50 +00:00
/*! @brief Cursor centering window hint
*
* Cursor centering [ window hint ] ( @ ref GLFW_CENTER_CURSOR_hint ) .
*/
2016-08-18 15:47:54 +00:00
# define GLFW_CENTER_CURSOR 0x00020009
2017-09-18 16:10:57 +00:00
/*! @brief Window framebuffer transparency hint and attribute
*
2017-11-07 21:50:01 +00:00
* Window framebuffer transparency
* [ window hint ] ( @ ref GLFW_TRANSPARENT_FRAMEBUFFER_hint ) and
* [ window attribute ] ( @ ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib ) .
2017-09-18 16:10:57 +00:00
*/
2017-11-07 21:50:01 +00:00
# define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A
2018-01-11 13:13:54 +00:00
/*! @brief Mouse cursor hover window attribute.
*
* Mouse cursor hover [ window attribute ] ( @ ref GLFW_HOVERED_attrib ) .
*/
2018-01-04 12:50:58 +00:00
# define GLFW_HOVERED 0x0002000B
2018-05-29 13:51:36 +00:00
/*! @brief Input focus on calling show window hint and attribute
*
* Input focus [ window hint ] ( @ ref GLFW_FOCUS_ON_SHOW_hint ) or
* [ window attribute ] ( @ ref GLFW_FOCUS_ON_SHOW_attrib ) .
*/
# define GLFW_FOCUS_ON_SHOW 0x0002000C
2013-05-27 20:16:59 +00:00
2020-07-08 21:21:28 +00:00
/*! @brief Mouse input transparency window hint and attribute
2019-09-30 12:44:43 +00:00
*
2020-07-08 21:21:28 +00:00
* Mouse input transparency [ window hint ] ( @ ref GLFW_MOUSE_PASSTHROUGH_hint ) or
2019-09-30 12:44:43 +00:00
* [ window attribute ] ( @ ref GLFW_MOUSE_PASSTHROUGH_attrib ) .
*/
# define GLFW_MOUSE_PASSTHROUGH 0x0002000D
2021-10-26 12:25:03 +00:00
/*! @brief Initial position x-coordinate window hint.
*
* Initial position x - coordinate [ window hint ] ( @ ref GLFW_POSITION_X ) .
*/
# define GLFW_POSITION_X 0x0002000E
/*! @brief Initial position y-coordinate window hint.
*
* Initial position y - coordinate [ window hint ] ( @ ref GLFW_POSITION_Y ) .
*/
# define GLFW_POSITION_Y 0x0002000F
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_RED_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_RED_BITS 0x00021001
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_GREEN_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_GREEN_BITS 0x00021002
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_BLUE_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_BLUE_BITS 0x00021003
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_ALPHA_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_ALPHA_BITS 0x00021004
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_DEPTH_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_DEPTH_BITS 0x00021005
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_STENCIL_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_STENCIL_BITS 0x00021006
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_ACCUM_RED_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_ACCUM_RED_BITS 0x00021007
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_ACCUM_GREEN_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_ACCUM_GREEN_BITS 0x00021008
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_ACCUM_BLUE_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_ACCUM_BLUE_BITS 0x00021009
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer bit depth hint.
*
* Framebuffer bit depth [ hint ] ( @ ref GLFW_ACCUM_ALPHA_BITS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_ACCUM_ALPHA_BITS 0x0002100A
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer auxiliary buffer hint.
*
* Framebuffer auxiliary buffer [ hint ] ( @ ref GLFW_AUX_BUFFERS ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_AUX_BUFFERS 0x0002100B
2016-12-06 00:14:23 +00:00
/*! @brief OpenGL stereoscopic rendering hint.
*
* OpenGL stereoscopic rendering [ hint ] ( @ ref GLFW_STEREO ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_STEREO 0x0002100C
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer MSAA samples hint.
*
* Framebuffer MSAA samples [ hint ] ( @ ref GLFW_SAMPLES ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_SAMPLES 0x0002100D
2016-12-06 00:14:23 +00:00
/*! @brief Framebuffer sRGB hint.
*
* Framebuffer sRGB [ hint ] ( @ ref GLFW_SRGB_CAPABLE ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_SRGB_CAPABLE 0x0002100E
2016-12-06 00:14:23 +00:00
/*! @brief Monitor refresh rate hint.
*
* Monitor refresh rate [ hint ] ( @ ref GLFW_REFRESH_RATE ) .
*/
2013-05-30 18:42:50 +00:00
# define GLFW_REFRESH_RATE 0x0002100F
2021-05-13 19:38:46 +00:00
/*! @brief Framebuffer double buffering hint and attribute.
2016-12-06 00:14:23 +00:00
*
2021-05-13 19:38:46 +00:00
* Framebuffer double buffering [ hint ] ( @ ref GLFW_DOUBLEBUFFER_hint ) and
* [ attribute ] ( @ ref GLFW_DOUBLEBUFFER_attrib ) .
2016-12-06 00:14:23 +00:00
*/
2014-04-24 17:21:10 +00:00
# define GLFW_DOUBLEBUFFER 0x00021010
2017-09-19 16:27:45 +00:00
2016-12-08 16:08:36 +00:00
/*! @brief Context client API hint and attribute.
*
* Context client API [ hint ] ( @ ref GLFW_CLIENT_API_hint ) and
* [ attribute ] ( @ ref GLFW_CLIENT_API_attrib ) .
*/
2013-05-30 16:55:45 +00:00
# define GLFW_CLIENT_API 0x00022001
2016-12-08 16:08:36 +00:00
/*! @brief Context client API major version hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context client API major version [ hint ] ( @ ref GLFW_CONTEXT_VERSION_MAJOR_hint )
* and [ attribute ] ( @ ref GLFW_CONTEXT_VERSION_MAJOR_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_CONTEXT_VERSION_MAJOR 0x00022002
2016-12-08 16:08:36 +00:00
/*! @brief Context client API minor version hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context client API minor version [ hint ] ( @ ref GLFW_CONTEXT_VERSION_MINOR_hint )
* and [ attribute ] ( @ ref GLFW_CONTEXT_VERSION_MINOR_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_CONTEXT_VERSION_MINOR 0x00022003
2021-11-15 22:50:37 +00:00
/*! @brief Context client API revision number attribute.
2016-12-08 16:08:36 +00:00
*
2019-05-19 19:41:57 +00:00
* Context client API revision number
* [ attribute ] ( @ ref GLFW_CONTEXT_REVISION_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_CONTEXT_REVISION 0x00022004
2016-12-08 16:08:36 +00:00
/*! @brief Context robustness hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context client API revision number [ hint ] ( @ ref GLFW_CONTEXT_ROBUSTNESS_hint )
* and [ attribute ] ( @ ref GLFW_CONTEXT_ROBUSTNESS_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_CONTEXT_ROBUSTNESS 0x00022005
2016-12-08 16:08:36 +00:00
/*! @brief OpenGL forward-compatibility hint and attribute.
*
2019-05-19 19:41:57 +00:00
* OpenGL forward - compatibility [ hint ] ( @ ref GLFW_OPENGL_FORWARD_COMPAT_hint )
* and [ attribute ] ( @ ref GLFW_OPENGL_FORWARD_COMPAT_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_OPENGL_FORWARD_COMPAT 0x00022006
2020-06-28 17:21:36 +00:00
/*! @brief Debug mode context hint and attribute.
2016-12-08 16:08:36 +00:00
*
2020-06-26 16:35:48 +00:00
* Debug mode context [ hint ] ( @ ref GLFW_CONTEXT_DEBUG_hint ) and
* [ attribute ] ( @ ref GLFW_CONTEXT_DEBUG_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2020-06-26 16:35:48 +00:00
# define GLFW_CONTEXT_DEBUG 0x00022007
/*! @brief Legacy name for compatibility.
*
* This is an alias for compatibility with earlier versions .
*/
# define GLFW_OPENGL_DEBUG_CONTEXT GLFW_CONTEXT_DEBUG
2016-12-08 16:08:36 +00:00
/*! @brief OpenGL profile hint and attribute.
*
2019-05-19 19:41:57 +00:00
* OpenGL profile [ hint ] ( @ ref GLFW_OPENGL_PROFILE_hint ) and
* [ attribute ] ( @ ref GLFW_OPENGL_PROFILE_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2013-05-30 16:55:45 +00:00
# define GLFW_OPENGL_PROFILE 0x00022008
2016-12-08 16:08:36 +00:00
/*! @brief Context flush-on-release hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context flush - on - release [ hint ] ( @ ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint ) and
* [ attribute ] ( @ ref GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2014-08-21 17:21:45 +00:00
# define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009
2016-12-08 16:08:36 +00:00
/*! @brief Context error suppression hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context error suppression [ hint ] ( @ ref GLFW_CONTEXT_NO_ERROR_hint ) and
* [ attribute ] ( @ ref GLFW_CONTEXT_NO_ERROR_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2015-08-10 10:46:14 +00:00
# define GLFW_CONTEXT_NO_ERROR 0x0002200A
2016-12-08 16:08:36 +00:00
/*! @brief Context creation API hint and attribute.
*
2019-05-19 19:41:57 +00:00
* Context creation API [ hint ] ( @ ref GLFW_CONTEXT_CREATION_API_hint ) and
* [ attribute ] ( @ ref GLFW_CONTEXT_CREATION_API_attrib ) .
2016-12-08 16:08:36 +00:00
*/
2016-03-28 11:19:31 +00:00
# define GLFW_CONTEXT_CREATION_API 0x0002200B
2018-08-31 11:33:48 +00:00
/*! @brief Window content area scaling window
* [ window hint ] ( @ ref GLFW_SCALE_TO_MONITOR ) .
*/
# define GLFW_SCALE_TO_MONITOR 0x0002200C
2019-04-01 16:36:30 +00:00
/*! @brief macOS specific
* [ window hint ] ( @ ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint ) .
*/
2016-12-06 23:41:54 +00:00
# define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001
2019-04-01 16:36:30 +00:00
/*! @brief macOS specific
* [ window hint ] ( @ ref GLFW_COCOA_FRAME_NAME_hint ) .
*/
2017-12-12 15:45:38 +00:00
# define GLFW_COCOA_FRAME_NAME 0x00023002
2019-04-01 16:36:30 +00:00
/*! @brief macOS specific
* [ window hint ] ( @ ref GLFW_COCOA_GRAPHICS_SWITCHING_hint ) .
*/
2017-01-27 11:02:09 +00:00
# define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003
2019-04-01 16:36:30 +00:00
/*! @brief X11 specific
* [ window hint ] ( @ ref GLFW_X11_CLASS_NAME_hint ) .
*/
2017-12-12 09:54:18 +00:00
# define GLFW_X11_CLASS_NAME 0x00024001
2019-04-01 16:36:30 +00:00
/*! @brief X11 specific
* [ window hint ] ( @ ref GLFW_X11_CLASS_NAME_hint ) .
*/
2017-12-12 09:54:18 +00:00
# define GLFW_X11_INSTANCE_NAME 0x00024002
2019-08-20 17:00:59 +00:00
# define GLFW_WIN32_KEYBOARD_MENU 0x00025001
2022-05-27 00:33:28 +00:00
/*! @brief Wayland specific
* [ window hint ] ( @ ref GLFW_WAYLAND_APP_ID_hint ) .
*
* Allows specification of the Wayland app_id .
*/
# define GLFW_WAYLAND_APP_ID 0x00026001
2016-12-08 16:08:36 +00:00
/*! @} */
2016-12-06 23:41:54 +00:00
2015-06-18 12:03:02 +00:00
# define GLFW_NO_API 0
2013-05-27 20:16:59 +00:00
# define GLFW_OPENGL_API 0x00030001
# define GLFW_OPENGL_ES_API 0x00030002
2013-01-17 20:51:39 +00:00
2013-05-27 20:16:59 +00:00
# define GLFW_NO_ROBUSTNESS 0
# define GLFW_NO_RESET_NOTIFICATION 0x00031001
# define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002
2013-01-17 20:51:39 +00:00
2013-06-05 14:13:30 +00:00
# define GLFW_OPENGL_ANY_PROFILE 0
2013-05-27 20:16:59 +00:00
# define GLFW_OPENGL_CORE_PROFILE 0x00032001
# define GLFW_OPENGL_COMPAT_PROFILE 0x00032002
2013-01-17 20:51:39 +00:00
2013-05-27 20:16:59 +00:00
# define GLFW_CURSOR 0x00033001
# define GLFW_STICKY_KEYS 0x00033002
# define GLFW_STICKY_MOUSE_BUTTONS 0x00033003
2017-11-29 19:42:37 +00:00
# define GLFW_LOCK_KEY_MODS 0x00033004
2019-02-11 18:10:20 +00:00
# define GLFW_RAW_MOUSE_MOTION 0x00033005
2013-01-17 20:51:39 +00:00
2013-05-27 20:16:59 +00:00
# define GLFW_CURSOR_NORMAL 0x00034001
# define GLFW_CURSOR_HIDDEN 0x00034002
# define GLFW_CURSOR_DISABLED 0x00034003
2019-12-03 16:58:20 +00:00
# define GLFW_CURSOR_CAPTURED 0x00034004
2013-01-17 20:51:39 +00:00
2014-08-21 17:21:45 +00:00
# define GLFW_ANY_RELEASE_BEHAVIOR 0
# define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001
# define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002
2016-03-28 11:19:31 +00:00
# define GLFW_NATIVE_CONTEXT_API 0x00036001
# define GLFW_EGL_CONTEXT_API 0x00036002
2017-02-28 18:23:25 +00:00
# define GLFW_OSMESA_CONTEXT_API 0x00036003
2016-03-28 11:19:31 +00:00
2020-06-25 16:22:08 +00:00
# define GLFW_ANGLE_PLATFORM_TYPE_NONE 0x00037001
# define GLFW_ANGLE_PLATFORM_TYPE_OPENGL 0x00037002
# define GLFW_ANGLE_PLATFORM_TYPE_OPENGLES 0x00037003
# define GLFW_ANGLE_PLATFORM_TYPE_D3D9 0x00037004
# define GLFW_ANGLE_PLATFORM_TYPE_D3D11 0x00037005
# define GLFW_ANGLE_PLATFORM_TYPE_VULKAN 0x00037007
# define GLFW_ANGLE_PLATFORM_TYPE_METAL 0x00037008
2021-10-26 12:25:03 +00:00
# define GLFW_ANY_POSITION 0x80000000
2014-09-02 14:52:16 +00:00
/*! @defgroup shapes Standard cursor shapes
2017-02-06 16:31:25 +00:00
* @ brief Standard system cursor shapes .
2015-01-18 00:55:25 +00:00
*
2019-05-07 18:40:37 +00:00
* These are the [ standard cursor shapes ] ( @ ref cursor_standard ) that can be
2021-07-13 19:50:09 +00:00
* requested from the platform ( window system ) .
2015-01-18 00:55:25 +00:00
*
2014-09-02 14:52:16 +00:00
* @ ingroup input
* @ { */
/*! @brief The regular arrow cursor shape.
*
2019-05-07 18:40:37 +00:00
* The regular arrow cursor shape .
2014-09-02 14:52:16 +00:00
*/
# define GLFW_ARROW_CURSOR 0x00036001
/*! @brief The text input I-beam cursor shape.
*
* The text input I - beam cursor shape .
*/
# define GLFW_IBEAM_CURSOR 0x00036002
2019-05-07 18:40:37 +00:00
/*! @brief The crosshair cursor shape.
2014-09-02 14:52:16 +00:00
*
2019-05-07 18:40:37 +00:00
* The crosshair cursor shape .
2014-09-02 14:52:16 +00:00
*/
# define GLFW_CROSSHAIR_CURSOR 0x00036003
2019-05-07 18:40:37 +00:00
/*! @brief The pointing hand cursor shape.
2014-09-02 14:52:16 +00:00
*
2019-05-07 18:40:37 +00:00
* The pointing hand cursor shape .
2014-09-02 14:52:16 +00:00
*/
2019-05-07 18:40:37 +00:00
# define GLFW_POINTING_HAND_CURSOR 0x00036004
/*! @brief The horizontal resize/move arrow shape.
2014-09-02 14:52:16 +00:00
*
2019-05-07 18:40:37 +00:00
* The horizontal resize / move arrow shape . This is usually a horizontal
* double - headed arrow .
2014-09-02 14:52:16 +00:00
*/
2019-05-07 18:40:37 +00:00
# define GLFW_RESIZE_EW_CURSOR 0x00036005
/*! @brief The vertical resize/move arrow shape.
2014-09-02 14:52:16 +00:00
*
2019-05-07 18:40:37 +00:00
* The vertical resize / move shape . This is usually a vertical double - headed
* arrow .
2014-09-02 14:52:16 +00:00
*/
2019-05-07 18:40:37 +00:00
# define GLFW_RESIZE_NS_CURSOR 0x00036006
/*! @brief The top-left to bottom-right diagonal resize/move arrow shape.
*
* The top - left to bottom - right diagonal resize / move shape . This is usually
* a diagonal double - headed arrow .
*
* @ note @ macos This shape is provided by a private system API and may fail
* with @ ref GLFW_CURSOR_UNAVAILABLE in the future .
*
* @ note @ x11 This shape is provided by a newer standard not supported by all
* cursor themes .
*
* @ note @ wayland This shape is provided by a newer standard not supported by
* all cursor themes .
*/
# define GLFW_RESIZE_NWSE_CURSOR 0x00036007
/*! @brief The top-right to bottom-left diagonal resize/move arrow shape.
*
* The top - right to bottom - left diagonal resize / move shape . This is usually
* a diagonal double - headed arrow .
*
* @ note @ macos This shape is provided by a private system API and may fail
* with @ ref GLFW_CURSOR_UNAVAILABLE in the future .
*
* @ note @ x11 This shape is provided by a newer standard not supported by all
* cursor themes .
*
* @ note @ wayland This shape is provided by a newer standard not supported by
* all cursor themes .
*/
# define GLFW_RESIZE_NESW_CURSOR 0x00036008
/*! @brief The omni-directional resize/move cursor shape.
*
* The omni - directional resize cursor / move shape . This is usually either
* a combined horizontal and vertical double - headed arrow or a grabbing hand .
*/
# define GLFW_RESIZE_ALL_CURSOR 0x00036009
/*! @brief The operation-not-allowed shape.
*
* The operation - not - allowed shape . This is usually a circle with a diagonal
* line through it .
*
* @ note @ x11 This shape is provided by a newer standard not supported by all
* cursor themes .
*
* @ note @ wayland This shape is provided by a newer standard not supported by
* all cursor themes .
*/
# define GLFW_NOT_ALLOWED_CURSOR 0x0003600A
/*! @brief Legacy name for compatibility.
*
* This is an alias for compatibility with earlier versions .
*/
# define GLFW_HRESIZE_CURSOR GLFW_RESIZE_EW_CURSOR
/*! @brief Legacy name for compatibility.
*
* This is an alias for compatibility with earlier versions .
*/
# define GLFW_VRESIZE_CURSOR GLFW_RESIZE_NS_CURSOR
/*! @brief Legacy name for compatibility.
*
* This is an alias for compatibility with earlier versions .
*/
# define GLFW_HAND_CURSOR GLFW_POINTING_HAND_CURSOR
2014-09-02 14:52:16 +00:00
/*! @} */
2013-05-27 20:16:59 +00:00
# define GLFW_CONNECTED 0x00040001
# define GLFW_DISCONNECTED 0x00040002
2012-12-02 20:00:15 +00:00
2017-02-14 14:43:31 +00:00
/*! @addtogroup init
* @ { */
2018-11-05 16:37:49 +00:00
/*! @brief Joystick hat buttons init hint.
*
2019-04-01 16:36:30 +00:00
* Joystick hat buttons [ init hint ] ( @ ref GLFW_JOYSTICK_HAT_BUTTONS ) .
2018-11-05 16:37:49 +00:00
*/
2017-03-01 22:27:20 +00:00
# define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001
2020-06-25 16:22:08 +00:00
/*! @brief ANGLE rendering backend init hint.
*
* ANGLE rendering backend [ init hint ] ( @ ref GLFW_ANGLE_PLATFORM_TYPE_hint ) .
*/
# define GLFW_ANGLE_PLATFORM_TYPE 0x00050002
2021-07-13 19:50:09 +00:00
/*! @brief Platform selection init hint.
*
* Platform selection [ init hint ] ( @ ref GLFW_PLATFORM ) .
*/
# define GLFW_PLATFORM 0x00050003
2018-11-05 16:37:49 +00:00
/*! @brief macOS specific init hint.
*
2019-04-01 16:36:30 +00:00
* macOS specific [ init hint ] ( @ ref GLFW_COCOA_CHDIR_RESOURCES_hint ) .
2018-11-05 16:37:49 +00:00
*/
2017-02-14 14:43:31 +00:00
# define GLFW_COCOA_CHDIR_RESOURCES 0x00051001
2018-11-05 16:37:49 +00:00
/*! @brief macOS specific init hint.
*
2019-04-01 16:36:30 +00:00
* macOS specific [ init hint ] ( @ ref GLFW_COCOA_MENUBAR_hint ) .
2018-11-05 16:37:49 +00:00
*/
2017-02-14 14:43:31 +00:00
# define GLFW_COCOA_MENUBAR 0x00051002
2020-10-23 16:55:37 +00:00
/*! @brief X11 specific init hint.
*
* X11 specific [ init hint ] ( @ ref GLFW_X11_XCB_VULKAN_SURFACE_hint ) .
*/
# define GLFW_X11_XCB_VULKAN_SURFACE 0x00052001
2017-02-14 14:43:31 +00:00
/*! @} */
2021-07-13 19:50:09 +00:00
/*! @addtogroup init
* @ { */
/*! @brief Hint value that enables automatic platform selection.
*
* Hint value for @ ref GLFW_PLATFORM that enables automatic platform selection .
*/
# define GLFW_ANY_PLATFORM 0x00060000
# define GLFW_PLATFORM_WIN32 0x00060001
# define GLFW_PLATFORM_COCOA 0x00060002
# define GLFW_PLATFORM_WAYLAND 0x00060003
# define GLFW_PLATFORM_X11 0x00060004
# define GLFW_PLATFORM_NULL 0x00060005
/*! @} */
2014-04-08 16:57:43 +00:00
# define GLFW_DONT_CARE -1
2011-10-06 21:28:56 +00:00
2010-09-07 15:34:51 +00:00
/*************************************************************************
2013-01-17 20:51:39 +00:00
* GLFW API types
2010-09-07 15:34:51 +00:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2012-12-13 01:22:39 +00:00
/*! @brief Client API function pointer type.
2013-04-10 21:01:12 +00:00
*
* Generic function pointer used for returning client API function pointers
* without forcing a cast from a regular pointer .
*
2015-11-05 12:58:52 +00:00
* @ sa @ ref context_glext
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetProcAddress
2015-11-05 12:58:52 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2017-11-17 03:34:18 +00:00
*
2012-12-13 01:22:39 +00:00
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
2012-06-04 22:16:40 +00:00
typedef void ( * GLFWglproc ) ( void ) ;
2015-08-10 18:19:04 +00:00
/*! @brief Vulkan API function pointer type.
*
* Generic function pointer used for returning Vulkan API function pointers
* without forcing a cast from a regular pointer .
*
* @ sa @ ref vulkan_proc
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetInstanceProcAddress
2015-08-10 18:19:04 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
typedef void ( * GLFWvkproc ) ( void ) ;
2013-01-17 22:06:56 +00:00
/*! @brief Opaque monitor object.
2013-04-10 21:01:12 +00:00
*
* Opaque monitor object .
*
2015-11-05 08:24:16 +00:00
* @ see @ ref monitor_object
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2012-11-27 15:55:04 +00:00
* @ ingroup monitor
*/
2013-01-05 20:13:28 +00:00
typedef struct GLFWmonitor GLFWmonitor ;
2012-08-29 18:39:05 +00:00
2013-01-17 22:06:56 +00:00
/*! @brief Opaque window object.
2013-04-10 21:01:12 +00:00
*
* Opaque window object .
*
2015-11-05 08:24:16 +00:00
* @ see @ ref window_object
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup window
*/
2013-01-05 20:13:28 +00:00
typedef struct GLFWwindow GLFWwindow ;
2010-09-09 16:15:32 +00:00
2013-12-04 13:19:22 +00:00
/*! @brief Opaque cursor object.
*
* Opaque cursor object .
*
2015-11-05 08:24:16 +00:00
* @ see @ ref cursor_object
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2015-12-13 16:38:14 +00:00
*
2018-11-05 16:37:49 +00:00
* @ ingroup input
2013-12-04 13:19:22 +00:00
*/
typedef struct GLFWcursor GLFWcursor ;
2023-01-29 23:02:44 +00:00
/*! @brief Opaque theme object.
*
* Opaque theme object .
*
* @ see @ ref theme_object
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
*/
typedef struct GLFWtheme GLFWtheme ;
2021-08-03 18:53:48 +00:00
/*! @brief The function pointer type for memory allocation callbacks.
*
* This is the function pointer type for memory allocation callbacks . A memory
* allocation callback function has the following signature :
* @ code
* void * function_name ( size_t size , void * user )
* @ endcode
*
* This function must return either a memory block at least ` size ` bytes long ,
* or ` NULL ` if allocation failed . Note that not all parts of GLFW handle allocation
* failures gracefully yet .
*
* This function may be called during @ ref glfwInit but before the library is
* flagged as initialized , as well as during @ ref glfwTerminate after the
* library is no longer flagged as initialized .
*
* Any memory allocated by this function will be deallocated during library
* termination or earlier .
*
* The size will always be greater than zero . Allocations of size zero are filtered out
* before reaching the custom allocator .
*
* @ param [ in ] size The minimum size , in bytes , of the memory block .
* @ param [ in ] user The user - defined pointer from the allocator .
* @ return The address of the newly allocated memory block , or ` NULL ` if an
* error occurred .
*
* @ pointer_lifetime The returned memory block must be valid at least until it
* is deallocated .
*
* @ reentrancy This function should not call any GLFW function .
*
* @ thread_safety This function may be called from any thread that calls GLFW functions .
*
* @ sa @ ref init_allocator
* @ sa @ ref GLFWallocator
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
typedef void * ( * GLFWallocatefun ) ( size_t size , void * user ) ;
/*! @brief The function pointer type for memory reallocation callbacks.
*
* This is the function pointer type for memory reallocation callbacks .
* A memory reallocation callback function has the following signature :
* @ code
* void * function_name ( void * block , size_t size , void * user )
* @ endcode
*
* This function must return a memory block at least ` size ` bytes long , or
* ` NULL ` if allocation failed . Note that not all parts of GLFW handle allocation
* failures gracefully yet .
*
* This function may be called during @ ref glfwInit but before the library is
* flagged as initialized , as well as during @ ref glfwTerminate after the
* library is no longer flagged as initialized .
*
* Any memory allocated by this function will be deallocated during library
* termination or earlier .
*
* The block address will never be ` NULL ` and the size will always be greater than zero .
* Reallocations of a block to size zero are converted into deallocations . Reallocations
* of ` NULL ` to a non - zero size are converted into regular allocations .
*
* @ param [ in ] block The address of the memory block to reallocate .
* @ param [ in ] size The new minimum size , in bytes , of the memory block .
* @ param [ in ] user The user - defined pointer from the allocator .
* @ return The address of the newly allocated or resized memory block , or
* ` NULL ` if an error occurred .
*
* @ pointer_lifetime The returned memory block must be valid at least until it
* is deallocated .
*
* @ reentrancy This function should not call any GLFW function .
*
* @ thread_safety This function may be called from any thread that calls GLFW functions .
*
* @ sa @ ref init_allocator
* @ sa @ ref GLFWallocator
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
typedef void * ( * GLFWreallocatefun ) ( void * block , size_t size , void * user ) ;
/*! @brief The function pointer type for memory deallocation callbacks.
*
* This is the function pointer type for memory deallocation callbacks .
* A memory deallocation callback function has the following signature :
* @ code
* void function_name ( void * block , void * user )
* @ endcode
*
* This function may deallocate the specified memory block . This memory block
* will have been allocated with the same allocator .
*
* This function may be called during @ ref glfwInit but before the library is
* flagged as initialized , as well as during @ ref glfwTerminate after the
* library is no longer flagged as initialized .
*
* The block address will never be ` NULL ` . Deallocations of ` NULL ` are filtered out
* before reaching the custom allocator .
*
* @ param [ in ] block The address of the memory block to deallocate .
* @ param [ in ] user The user - defined pointer from the allocator .
*
* @ pointer_lifetime The specified memory block will not be accessed by GLFW
* after this function is called .
*
* @ reentrancy This function should not call any GLFW function .
*
* @ thread_safety This function may be called from any thread that calls GLFW functions .
*
* @ sa @ ref init_allocator
* @ sa @ ref GLFWallocator
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
typedef void ( * GLFWdeallocatefun ) ( void * block , void * user ) ;
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for error callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* @ param [ in ] error_code An [ error code ] ( @ ref errors ) . Future releases may add
* more error codes .
2012-11-22 15:38:24 +00:00
* @ param [ in ] description A UTF - 8 encoded string describing the error .
2013-01-17 22:06:56 +00:00
*
2019-05-23 23:52:49 +00:00
* @ pointer_lifetime The error description string is valid until the callback
* function returns .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref error_handling
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetErrorCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2014-09-18 13:03:29 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWerrorfun ) ( int error_code , const char * description ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window position callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2014-04-23 11:30:11 +00:00
* @ param [ in ] window The window that was moved .
2013-04-10 21:01:12 +00:00
* @ param [ in ] xpos The new x - coordinate , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* upper - left corner of the content area of the window .
2013-04-10 21:01:12 +00:00
* @ param [ in ] ypos The new y - coordinate , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* upper - left corner of the content area of the window .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowPosCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-30 12:56:42 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowposfun ) ( GLFWwindow * window , int xpos , int ypos ) ;
2012-11-30 12:56:42 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window size callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2014-04-23 11:30:11 +00:00
* @ param [ in ] window The window that was resized .
2013-04-10 21:01:12 +00:00
* @ param [ in ] width The new width , in screen coordinates , of the window .
* @ param [ in ] height The new height , in screen coordinates , of the window .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_size
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowSizeCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle parameter .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowsizefun ) ( GLFWwindow * window , int width , int height ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window close callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that the user attempted to close .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_close
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowCloseCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.5 .
* @ glfw3 Added window handle parameter .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowclosefun ) ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window content refresh callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose content needs to be refreshed .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_refresh
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowRefreshCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.5 .
* @ glfw3 Added window handle parameter .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowrefreshfun ) ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window focus callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2015-01-18 00:55:25 +00:00
* @ param [ in ] window The window that gained or lost input focus .
2015-08-23 17:30:04 +00:00
* @ param [ in ] focused ` GLFW_TRUE ` if the window was given input focus , or
* ` GLFW_FALSE ` if it lost it .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_focus
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowFocusCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowfocusfun ) ( GLFWwindow * window , int focused ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window iconify callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that was iconified or restored .
2015-08-23 17:30:04 +00:00
* @ param [ in ] iconified ` GLFW_TRUE ` if the window was iconified , or
* ` GLFW_FALSE ` if it was restored .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_iconify
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowIconifyCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowiconifyfun ) ( GLFWwindow * window , int iconified ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window maximize callbacks.
2016-06-16 11:09:28 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2016-06-16 11:09:28 +00:00
*
* @ param [ in ] window The window that was maximized or restored .
2020-09-07 18:19:51 +00:00
* @ param [ in ] maximized ` GLFW_TRUE ` if the window was maximized , or
2016-06-16 11:09:28 +00:00
* ` GLFW_FALSE ` if it was restored .
*
* @ sa @ ref window_maximize
* @ sa glfwSetWindowMaximizeCallback
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowmaximizefun ) ( GLFWwindow * window , int maximized ) ;
2016-06-16 11:09:28 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for framebuffer size callbacks.
2013-06-03 10:51:57 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-06-03 10:51:57 +00:00
*
* @ param [ in ] window The window whose framebuffer was resized .
* @ param [ in ] width The new width , in pixels , of the framebuffer .
* @ param [ in ] height The new height , in pixels , of the framebuffer .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref window_fbsize
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetFramebufferSizeCallback
2013-06-03 10:51:57 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-06-03 10:51:57 +00:00
* @ ingroup window
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWframebuffersizefun ) ( GLFWwindow * window , int width , int height ) ;
2013-06-03 10:51:57 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for window content scale callbacks.
2017-12-11 20:26:40 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2017-12-11 20:26:40 +00:00
*
* @ param [ in ] window The window whose content scale changed .
* @ param [ in ] xscale The new x - axis content scale of the window .
* @ param [ in ] yscale The new y - axis content scale of the window .
*
* @ sa @ ref window_scale
* @ sa @ ref glfwSetWindowContentScaleCallback
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWwindowcontentscalefun ) ( GLFWwindow * window , float xscale , float yscale ) ;
2017-12-11 20:26:40 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for mouse button callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2013-03-12 14:33:05 +00:00
* @ param [ in ] button The [ mouse button ] ( @ ref buttons ) that was pressed or
* released .
2019-05-23 23:52:49 +00:00
* @ param [ in ] action One of ` GLFW_PRESS ` or ` GLFW_RELEASE ` . Future releases
* may add more actions .
2013-05-23 12:42:33 +00:00
* @ param [ in ] mods Bit field describing which [ modifier keys ] ( @ ref mods ) were
* held down .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref input_mouse_button
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetMouseButtonCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle and modifier mask parameters .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWmousebuttonfun ) ( GLFWwindow * window , int button , int action , int mods ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for cursor position callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2016-02-17 13:52:01 +00:00
* @ param [ in ] xpos The new cursor x - coordinate , relative to the left edge of
2019-01-22 19:54:16 +00:00
* the content area .
2016-02-17 13:52:01 +00:00
* @ param [ in ] ypos The new cursor y - coordinate , relative to the top edge of the
2019-01-22 19:54:16 +00:00
* content area .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref cursor_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetCursorPosCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` GLFWmouseposfun ` .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWcursorposfun ) ( GLFWwindow * window , double xpos , double ypos ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for cursor enter/leave callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2019-01-22 19:54:16 +00:00
* @ param [ in ] entered ` GLFW_TRUE ` if the cursor entered the window ' s content
2015-08-23 17:30:04 +00:00
* area , or ` GLFW_FALSE ` if it left it .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref cursor_enter
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetCursorEnterCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWcursorenterfun ) ( GLFWwindow * window , int entered ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for scroll callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2013-06-06 17:49:23 +00:00
* @ param [ in ] xoffset The scroll offset along the x - axis .
* @ param [ in ] yoffset The scroll offset along the y - axis .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref scrolling
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetScrollCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` GLFWmousewheelfun ` .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWscrollfun ) ( GLFWwindow * window , double xoffset , double yoffset ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for keyboard key callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2013-03-12 14:33:05 +00:00
* @ param [ in ] key The [ keyboard key ] ( @ ref keys ) that was pressed or released .
2021-07-13 19:50:09 +00:00
* @ param [ in ] scancode The platform - specific scancode of the key .
2019-05-23 23:52:49 +00:00
* @ param [ in ] action ` GLFW_PRESS ` , ` GLFW_RELEASE ` or ` GLFW_REPEAT ` . Future
* releases may add more actions .
2013-05-23 12:42:33 +00:00
* @ param [ in ] mods Bit field describing which [ modifier keys ] ( @ ref mods ) were
* held down .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref input_key
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetKeyCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle , scancode and modifier mask parameters .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWkeyfun ) ( GLFWwindow * window , int key , int scancode , int action , int mods ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for Unicode character callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window that received the event .
2013-10-10 17:41:56 +00:00
* @ param [ in ] codepoint The Unicode code point of the character .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref input_char
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetCharCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.4 .
* @ glfw3 Added window handle parameter .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWcharfun ) ( GLFWwindow * window , unsigned int codepoint ) ;
2012-11-27 16:07:28 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for Unicode character with modifiers
2014-06-12 21:04:20 +00:00
* callbacks .
*
2019-05-23 23:52:49 +00:00
* 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
2014-06-12 21:04:20 +00:00
*
* @ param [ in ] window The window that received the event .
* @ param [ in ] codepoint The Unicode code point of the character .
* @ param [ in ] mods Bit field describing which [ modifier keys ] ( @ ref mods ) were
* held down .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref input_char
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetCharModsCallback
2014-06-12 21:04:20 +00:00
*
2017-11-14 22:28:12 +00:00
* @ deprecated Scheduled for removal in version 4.0 .
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2015-12-13 16:38:14 +00:00
*
2014-06-12 21:04:20 +00:00
* @ ingroup input
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWcharmodsfun ) ( GLFWwindow * window , unsigned int codepoint , int mods ) ;
2014-06-12 21:04:20 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for path drop callbacks.
2013-07-10 09:42:14 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-07-10 09:42:14 +00:00
*
* @ param [ in ] window The window that received the event .
2019-05-23 23:52:49 +00:00
* @ param [ in ] path_count The number of dropped paths .
2015-01-27 22:04:22 +00:00
* @ param [ in ] paths The UTF - 8 encoded file and / or directory path names .
2013-07-10 09:42:14 +00:00
*
2019-05-23 23:52:49 +00:00
* @ pointer_lifetime The path array and its strings are valid until the
* callback function returns .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref path_drop
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetDropCallback
2013-07-10 09:42:14 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2015-12-13 16:38:14 +00:00
*
2013-07-10 09:42:14 +00:00
* @ ingroup input
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWdropfun ) ( GLFWwindow * window , int path_count , const char * paths [ ] ) ;
2013-07-10 09:42:14 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for monitor configuration callbacks.
2013-04-10 21:01:12 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2013-04-10 21:01:12 +00:00
*
2012-11-27 16:07:28 +00:00
* @ param [ in ] monitor The monitor that was connected or disconnected .
2019-05-23 23:52:49 +00:00
* @ param [ in ] event One of ` GLFW_CONNECTED ` or ` GLFW_DISCONNECTED ` . Future
* releases may add more events .
2013-01-17 22:06:56 +00:00
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref monitor_event
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetMonitorCallback
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup monitor
2012-11-27 16:07:28 +00:00
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWmonitorfun ) ( GLFWmonitor * monitor , int event ) ;
2011-03-07 12:34:58 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief The function pointer type for joystick configuration callbacks.
2015-12-13 16:38:50 +00:00
*
2019-05-23 23:52:49 +00:00
* 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
2015-12-13 16:38:50 +00:00
*
2016-10-10 01:24:07 +00:00
* @ param [ in ] jid The joystick that was connected or disconnected .
2019-05-23 23:52:49 +00:00
* @ param [ in ] event One of ` GLFW_CONNECTED ` or ` GLFW_DISCONNECTED ` . Future
* releases may add more events .
2015-12-13 16:38:50 +00:00
*
* @ sa @ ref joystick_event
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetJoystickCallback
2015-12-13 16:38:50 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup input
*/
2021-08-25 18:47:17 +00:00
typedef void ( * GLFWjoystickfun ) ( int jid , int event ) ;
2015-12-13 16:38:50 +00:00
2023-01-29 23:02:44 +00:00
/*! @brief The function pointer type for system theme callbacks.
*
* This is the function pointer type for system theme callbacks . A system
* theme callback function has the following signature :
* @ code
* void function_name ( GLFWtheme * theme )
* @ endcode
*
* @ param [ in ] theme The new system theme .
*
* @ pointer_lifetime The theme is valid until the callback
* function returns .
*
* @ sa @ ref theme
* @ sa @ ref glfwSetSystemThemeCallback
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
*/
typedef void ( * GLFWthemefun ) ( GLFWtheme * theme ) ;
2013-04-10 21:01:12 +00:00
/*! @brief Video mode type.
*
* This describes a single video mode .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref monitor_modes
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetVideoMode
* @ sa @ ref glfwGetVideoModes
2015-11-05 08:24:16 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added refresh rate member .
2015-12-13 16:38:14 +00:00
*
2013-04-10 21:01:12 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-08-29 04:15:55 +00:00
typedef struct GLFWvidmode
2010-09-09 17:44:43 +00:00
{
2013-05-30 11:53:25 +00:00
/*! The width, in screen coordinates, of the video mode.
2013-05-27 20:29:06 +00:00
*/
2010-09-09 17:44:43 +00:00
int width ;
2013-05-30 11:53:25 +00:00
/*! The height, in screen coordinates, of the video mode.
2013-05-27 20:29:06 +00:00
*/
2010-09-09 17:44:43 +00:00
int height ;
2013-05-27 20:29:06 +00:00
/*! The bit depth of the red channel of the video mode.
*/
2010-09-09 17:44:43 +00:00
int redBits ;
2013-05-27 20:29:06 +00:00
/*! The bit depth of the green channel of the video mode.
*/
2010-09-09 17:44:43 +00:00
int greenBits ;
2013-05-27 20:29:06 +00:00
/*! The bit depth of the blue channel of the video mode.
*/
2013-04-10 23:31:00 +00:00
int blueBits ;
2013-05-30 13:52:42 +00:00
/*! The refresh rate, in Hz, of the video mode.
*/
int refreshRate ;
2010-09-07 15:34:51 +00:00
} GLFWvidmode ;
2012-11-22 15:38:24 +00:00
/*! @brief Gamma ramp.
2013-04-10 21:01:12 +00:00
*
* This describes the gamma ramp for a monitor .
*
2015-11-05 08:24:16 +00:00
* @ sa @ ref monitor_gamma
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetGammaRamp
* @ sa @ ref glfwSetGammaRamp
2013-04-10 21:01:12 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2015-12-13 16:38:14 +00:00
*
2013-06-17 10:56:36 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-08-29 04:15:55 +00:00
typedef struct GLFWgammaramp
2010-10-13 02:04:43 +00:00
{
2013-05-27 20:29:06 +00:00
/*! An array of value describing the response of the red channel.
*/
2013-05-19 13:46:44 +00:00
unsigned short * red ;
2013-05-27 20:29:06 +00:00
/*! An array of value describing the response of the green channel.
*/
2013-05-19 13:46:44 +00:00
unsigned short * green ;
2013-05-27 20:29:06 +00:00
/*! An array of value describing the response of the blue channel.
*/
2013-05-19 13:46:44 +00:00
unsigned short * blue ;
2013-05-27 20:29:06 +00:00
/*! The number of elements in each array.
*/
2013-05-19 13:46:44 +00:00
unsigned int size ;
2010-10-13 02:04:43 +00:00
} GLFWgammaramp ;
2014-02-23 15:43:17 +00:00
/*! @brief Image data.
2017-06-06 16:17:58 +00:00
*
* This describes a single 2 D image . See the documentation for each related
* function what the expected pixel format is .
2015-11-05 08:24:16 +00:00
*
* @ sa @ ref cursor_custom
2016-08-01 09:51:30 +00:00
* @ sa @ ref window_icon
2015-12-13 16:38:14 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.1 .
* @ glfw3 Removed format and bytes - per - pixel members .
2018-11-05 16:37:49 +00:00
*
* @ ingroup window
2014-02-23 15:43:17 +00:00
*/
typedef struct GLFWimage
{
/*! The width, in pixels, of this image.
*/
int width ;
/*! The height, in pixels, of this image.
*/
int height ;
/*! The pixel data of this image, arranged left-to-right, top-to-bottom.
*/
unsigned char * pixels ;
} GLFWimage ;
2017-06-18 13:13:25 +00:00
/*! @brief Gamepad input state
*
* This describes the input state of a gamepad .
*
* @ sa @ ref gamepad
* @ sa @ ref glfwGetGamepadState
*
* @ since Added in version 3.3 .
2018-11-05 16:37:49 +00:00
*
* @ ingroup input
2017-06-18 13:13:25 +00:00
*/
typedef struct GLFWgamepadstate
{
/*! The states of each [gamepad button](@ref gamepad_buttons), `GLFW_PRESS`
* or ` GLFW_RELEASE ` .
*/
2017-07-17 19:18:15 +00:00
unsigned char buttons [ 15 ] ;
2017-06-18 13:13:25 +00:00
/*! The states of each [gamepad axis](@ref gamepad_axes), in the range -1.0
* to 1.0 inclusive .
*/
float axes [ 6 ] ;
} GLFWgamepadstate ;
2021-08-03 18:53:48 +00:00
/*! @brief
*
* @ sa @ ref init_allocator
* @ sa @ ref glfwInitAllocator
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
typedef struct GLFWallocator
{
GLFWallocatefun allocate ;
GLFWreallocatefun reallocate ;
GLFWdeallocatefun deallocate ;
void * user ;
} GLFWallocator ;
2010-09-07 15:34:51 +00:00
/*************************************************************************
2013-01-17 20:51:39 +00:00
* GLFW API functions
2010-09-07 15:34:51 +00:00
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2012-11-22 15:38:24 +00:00
/*! @brief Initializes the GLFW library.
*
2013-03-18 18:11:02 +00:00
* This function initializes the GLFW library . Before most GLFW functions can
2014-09-18 13:03:29 +00:00
* be used , GLFW must be initialized , and before an application terminates GLFW
2013-03-18 18:11:02 +00:00
* should be terminated in order to free any resources allocated during or
* after initialization .
2012-11-22 15:38:24 +00:00
*
2013-03-12 18:53:29 +00:00
* If this function fails , it calls @ ref glfwTerminate before returning . If it
2014-09-18 13:03:29 +00:00
* succeeds , you should call @ ref glfwTerminate before the application exits .
2013-03-12 18:53:29 +00:00
*
2013-03-18 18:11:02 +00:00
* Additional calls to this function after successful initialization but before
2015-08-23 17:30:04 +00:00
* termination will return ` GLFW_TRUE ` immediately .
2012-11-22 15:38:24 +00:00
*
2021-07-13 19:50:09 +00:00
* The @ ref GLFW_PLATFORM init hint controls which platforms are considered during
* initialization . This also depends on which platforms the library was compiled to
* support .
*
2015-08-23 17:30:04 +00:00
* @ return ` GLFW_TRUE ` if successful , or ` GLFW_FALSE ` if an
2014-09-18 13:03:29 +00:00
* [ error ] ( @ ref error_handling ) occurred .
2012-11-22 15:38:24 +00:00
*
2021-07-13 19:50:09 +00:00
* @ errors Possible errors include @ ref GLFW_PLATFORM_UNAVAILABLE and @ ref
* GLFW_PLATFORM_ERROR .
2016-02-04 23:51:40 +00:00
*
2016-10-19 22:50:54 +00:00
* @ remark @ macos This function will change the current directory of the
2013-03-12 14:33:05 +00:00
* application to the ` Contents / Resources ` subdirectory of the application ' s
2017-02-14 14:43:31 +00:00
* bundle , if present . This can be disabled with the @ ref
* GLFW_COCOA_CHDIR_RESOURCES init hint .
2012-11-22 15:38:24 +00:00
*
2020-03-05 19:32:19 +00:00
* @ remark @ macos This function will create the main menu and dock icon for the
* application . If GLFW finds a ` MainMenu . nib ` it is loaded and assumed to
* contain a menu bar . Otherwise a minimal menu bar is created manually with
* common commands like Hide , Quit and About . The About entry opens a minimal
* about dialog with information from the application ' s bundle . The menu bar
* and dock icon can be disabled entirely with the @ ref GLFW_COCOA_MENUBAR init
* hint .
*
2020-02-06 14:46:37 +00:00
* @ 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 .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref intro_init
2021-08-03 18:53:48 +00:00
* @ sa @ ref glfwInitHint
* @ sa @ ref glfwInitAllocator
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwTerminate
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
GLFWAPI int glfwInit ( void ) ;
/*! @brief Terminates the GLFW library.
*
2014-09-18 13:03:29 +00:00
* This function destroys all remaining windows and cursors , restores any
* modified gamma ramps and frees any other allocated resources . Once this
* function is called , you must again call @ ref glfwInit successfully before
* you will be able to use most GLFW functions .
2012-11-22 15:38:24 +00:00
*
2013-03-12 18:53:29 +00:00
* If GLFW has been successfully initialized , this function should be called
2014-09-18 13:03:29 +00:00
* before the application exits . If initialization fails , there is no need to
* call this function , as it is called by @ ref glfwInit before it returns
* failure .
2012-11-22 18:08:30 +00:00
*
2020-05-22 13:37:58 +00:00
* This function has no effect if GLFW is not initialized .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark This function may be called before @ ref glfwInit .
2012-11-22 15:38:24 +00:00
*
2015-12-13 13:07:27 +00:00
* @ warning The contexts of any remaining windows must not be current on any
* other thread when this function is called .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ reentrancy This function must not be called from a callback .
2015-01-01 17:41:22 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref intro_init
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwInit
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
2010-09-08 14:40:43 +00:00
GLFWAPI void glfwTerminate ( void ) ;
2012-11-22 15:38:24 +00:00
2017-02-14 14:43:31 +00:00
/*! @brief Sets the specified init hint to the desired value.
*
2017-12-12 09:54:18 +00:00
* This function sets hints for the next initialization of GLFW .
2017-02-14 14:43:31 +00:00
*
2017-07-24 23:55:08 +00:00
* The values you set hints to are never reset by GLFW , but they only take
* effect during initialization . Once GLFW has been initialized , any values
* you set will be ignored until the library is terminated and initialized
* again .
2017-02-14 14:43:31 +00:00
*
2017-07-24 23:55:08 +00:00
* Some hints are platform specific . These may be set on any platform but they
2017-10-22 14:27:17 +00:00
* will only affect their specific platform . Other platforms will ignore them .
2017-11-17 03:34:18 +00:00
* Setting these hints requires no platform specific headers or functions .
2017-02-14 14:43:31 +00:00
*
* @ param [ in ] hint The [ init hint ] ( @ ref init_hints ) to set .
* @ param [ in ] value The new value of the init hint .
*
* @ errors Possible errors include @ ref GLFW_INVALID_ENUM and @ ref
* GLFW_INVALID_VALUE .
*
* @ remarks This function may be called before @ ref glfwInit .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa init_hints
* @ sa glfwInit
*
* @ since Added in version 3.3 .
*
* @ ingroup init
*/
GLFWAPI void glfwInitHint ( int hint , int value ) ;
2021-08-03 18:53:48 +00:00
/*! @brief Sets the init allocator to the desired value.
*
* To use the default allocator , call this function with a ` NULL ` argument .
*
* If you specify an allocator struct , every member must be a valid function
* pointer . If any member is ` NULL ` , this function emits @ ref
* GLFW_INVALID_VALUE and the init allocator is unchanged .
*
* @ param [ in ] allocator The allocator to use at the next initialization , or
* ` NULL ` to use the default one .
*
* @ errors Possible errors include @ ref GLFW_INVALID_VALUE .
*
* @ pointer_lifetime The specified allocator is copied before this function
* returns .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref init_allocator
* @ sa @ ref glfwInit
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
GLFWAPI void glfwInitAllocator ( const GLFWallocator * allocator ) ;
2021-10-21 18:45:44 +00:00
# if defined(VK_VERSION_1_0)
/*! @brief Sets the desired Vulkan `vkGetInstanceProcAddr` function.
*
* This function sets the ` vkGetInstanceProcAddr ` function that GLFW will use for all
* Vulkan related entry point queries .
*
* This feature is mostly useful on macOS , if your copy of the Vulkan loader is in
* a location where GLFW cannot find it through dynamic loading , or if you are still
* using the static library version of the loader .
*
* If set to ` NULL ` , GLFW will try to load the Vulkan loader dynamically by its standard
* name and get this function from there . This is the default behavior .
*
* The standard name of the loader is ` vulkan - 1. dll ` on Windows , ` libvulkan . so .1 ` on
* Linux and other Unix - like systems and ` libvulkan .1 . dylib ` on macOS . If your code is
* also loading it via these names then you probably don ' t need to use this function .
*
* The function address you set is never reset by GLFW , but it only takes effect during
* initialization . Once GLFW has been initialized , any updates will be ignored until the
* library is terminated and initialized again .
*
* @ param [ in ] loader The address of the function to use , or ` NULL ` .
*
* @ par Loader function signature
* @ code
* PFN_vkVoidFunction vkGetInstanceProcAddr ( VkInstance instance , const char * name )
* @ endcode
* For more information about this function , see the
* [ Vulkan Registry ] ( https : //www.khronos.org/registry/vulkan/).
*
* @ errors None .
*
* @ remark This function may be called before @ ref glfwInit .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref vulkan_loader
* @ sa @ ref glfwInit
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
GLFWAPI void glfwInitVulkanLoader ( PFN_vkGetInstanceProcAddr loader ) ;
# endif /*VK_VERSION_1_0*/
2012-11-22 15:38:24 +00:00
/*! @brief Retrieves the version of the GLFW library.
2013-03-18 18:11:02 +00:00
*
* This function retrieves the major , minor and revision numbers of the GLFW
* library . It is intended for when you are using GLFW as a shared library and
* want to ensure that you are using the minimum required version .
*
2016-02-04 23:51:40 +00:00
* Any or all of the version arguments may be ` NULL ` .
2014-09-18 13:03:29 +00:00
*
2013-03-12 14:33:05 +00:00
* @ param [ out ] major Where to store the major version number , or ` NULL ` .
* @ param [ out ] minor Where to store the minor version number , or ` NULL ` .
* @ param [ out ] rev Where to store the revision number , or ` NULL ` .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors None .
*
2016-01-31 20:32:14 +00:00
* @ remark This function may be called before @ ref glfwInit .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref intro_version
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetVersionString
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
2010-09-08 14:40:43 +00:00
GLFWAPI void glfwGetVersion ( int * major , int * minor , int * rev ) ;
2012-11-22 15:38:24 +00:00
2013-02-14 12:14:17 +00:00
/*! @brief Returns a string describing the compile-time configuration.
2013-03-18 18:11:02 +00:00
*
2014-04-23 11:30:11 +00:00
* This function returns the compile - time generated
2021-07-13 19:50:09 +00:00
* [ version string ] ( @ ref intro_version_string ) of the GLFW library binary . It describes
* the version , platforms , compiler and any platform or operating system specific
* compile - time options . It should not be confused with the OpenGL or OpenGL ES version
* string , queried with ` glGetString ` .
2013-03-18 18:11:02 +00:00
*
2015-01-11 22:33:14 +00:00
* __Do not use the version string__ to parse the GLFW library version . The
2016-02-10 12:48:49 +00:00
* @ ref glfwGetVersion function provides the version of the running library
* binary in numerical format .
2015-01-11 22:33:14 +00:00
*
2021-07-13 19:50:09 +00:00
* __Do not use the version string__ to parse what platforms are supported . The @ ref
* glfwPlatformSupported function lets you query platform support .
*
2016-02-10 12:48:49 +00:00
* @ return The ASCII encoded GLFW version string .
2014-04-23 11:30:11 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors None .
*
2016-01-31 20:32:14 +00:00
* @ remark This function may be called before @ ref glfwInit .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned string is static and compile - time generated .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref intro_version
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetVersion
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
2010-09-13 16:05:59 +00:00
GLFWAPI const char * glfwGetVersionString ( void ) ;
2010-09-07 15:34:51 +00:00
2017-05-01 17:20:57 +00:00
/*! @brief Returns and clears the last error for the calling thread.
*
2017-07-09 12:46:39 +00:00
* This function returns and clears the [ error code ] ( @ ref errors ) of the last
2017-05-25 16:23:09 +00:00
* error that occurred on the calling thread , and optionally a UTF - 8 encoded
* human - readable description of it . If no error has occurred since the last
2017-06-11 16:04:17 +00:00
* call , it returns @ ref GLFW_NO_ERROR ( zero ) and the description pointer is
* set to ` NULL ` .
2017-05-01 17:20:57 +00:00
*
2017-05-25 16:23:09 +00:00
* @ param [ in ] description Where to store the error description pointer , or ` NULL ` .
2017-06-11 16:04:17 +00:00
* @ return The last error code for the calling thread , or @ ref GLFW_NO_ERROR
* ( zero ) .
2017-05-01 17:20:57 +00:00
*
* @ errors None .
*
2017-05-25 16:23:09 +00:00
* @ pointer_lifetime The returned string is allocated and freed by GLFW . You
* should not free it yourself . It is guaranteed to be valid only until the
* next error occurs or the library is terminated .
*
2017-05-01 17:20:57 +00:00
* @ remark This function may be called before @ ref glfwInit .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref error_handling
* @ sa @ ref glfwSetErrorCallback
*
* @ since Added in version 3.3 .
*
* @ ingroup init
*/
2017-05-25 16:23:09 +00:00
GLFWAPI int glfwGetError ( const char * * description ) ;
2017-05-01 17:20:57 +00:00
2012-11-22 15:38:24 +00:00
/*! @brief Sets the error callback.
2013-03-18 18:11:02 +00:00
*
* This function sets the error callback , which is called with an error code
* and a human - readable description each time a GLFW error occurs .
*
2017-05-01 17:20:57 +00:00
* The error code is set before the callback is called . Calling @ ref
* glfwGetError from the error callback will return the same value as the error
* code argument .
*
2014-09-18 13:03:29 +00:00
* The error callback is called on the thread where the error occurred . If you
* are using GLFW from multiple threads , your error callback needs to be
* written accordingly .
*
* Because the description string may have been generated specifically for that
* error , it is not guaranteed to be valid after the callback has returned . If
* you wish to use it after the callback returns , you need to make a copy .
*
2015-01-01 17:41:22 +00:00
* Once set , the error callback remains set even after the library has been
* terminated .
*
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set .
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors None .
*
2016-01-31 20:32:14 +00:00
* @ remark This function may be called before @ ref glfwInit .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref error_handling
2017-05-01 17:20:57 +00:00
* @ sa @ ref glfwGetError
2012-11-22 15:38:24 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* @ ingroup init
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWerrorfun glfwSetErrorCallback ( GLFWerrorfun callback ) ;
2010-09-09 19:06:59 +00:00
2021-07-13 19:50:09 +00:00
/*! @brief Returns the currently selected platform.
*
* This function returns the platform that was selected during initialization . The
* returned value will be one of ` GLFW_PLATFORM_WIN32 ` , ` GLFW_PLATFORM_COCOA ` ,
* ` GLFW_PLATFORM_WAYLAND ` , ` GLFW_PLATFORM_X11 ` or ` GLFW_PLATFORM_NULL ` .
*
* @ return The currently selected platform , or zero if an error occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref platform
* @ sa @ ref glfwPlatformSupported
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
GLFWAPI int glfwGetPlatform ( void ) ;
/*! @brief Returns whether the library includes support for the specified platform.
*
* This function returns whether the library was compiled with support for the specified
* platform . The platform must be one of ` GLFW_PLATFORM_WIN32 ` , ` GLFW_PLATFORM_COCOA ` ,
* ` GLFW_PLATFORM_WAYLAND ` , ` GLFW_PLATFORM_X11 ` or ` GLFW_PLATFORM_NULL ` .
*
* @ param [ in ] platform The platform to query .
* @ return ` GLFW_TRUE ` if the platform is supported , or ` GLFW_FALSE ` otherwise .
*
* @ errors Possible errors include @ ref GLFW_INVALID_ENUM .
*
* @ remark This function may be called before @ ref glfwInit .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref platform
* @ sa @ ref glfwGetPlatform
*
* @ since Added in version 3.4 .
*
* @ ingroup init
*/
GLFWAPI int glfwPlatformSupported ( int platform ) ;
2012-11-27 16:07:28 +00:00
/*! @brief Returns the currently connected monitors.
2013-03-18 18:11:02 +00:00
*
* This function returns an array of handles for all currently connected
2015-09-17 14:37:09 +00:00
* monitors . The primary monitor is always first in the returned array . If no
* monitors were found , this function returns ` NULL ` .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* @ param [ out ] count Where to store the number of monitors in the returned
* array . This is set to zero if an error occurred .
2015-09-17 14:37:09 +00:00
* @ return An array of monitor handles , or ` NULL ` if no monitors were found or
* if an [ error ] ( @ ref error_handling ) occurred .
2014-03-24 10:58:35 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ 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
* monitor configuration changes or the library is terminated .
2013-06-05 14:04:04 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-01-17 22:06:56 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_monitors
* @ sa @ ref monitor_event
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetPrimaryMonitor
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup monitor
2012-11-27 15:55:04 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI GLFWmonitor * * glfwGetMonitors ( int * count ) ;
2012-11-27 15:55:04 +00:00
2012-11-27 16:07:28 +00:00
/*! @brief Returns the primary monitor.
2013-03-18 18:11:02 +00:00
*
* This function returns the primary monitor . This is usually the monitor
2015-09-17 14:37:09 +00:00
* where elements like the task bar or global menu bar are located .
2013-03-18 18:11:02 +00:00
*
2015-09-17 14:37:09 +00:00
* @ return The primary monitor , or ` NULL ` if no monitors were found or if an
* [ error ] ( @ ref error_handling ) occurred .
2013-01-17 22:06:56 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark The primary monitor is always first in the array returned by @ ref
2015-09-17 14:37:09 +00:00
* glfwGetMonitors .
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_monitors
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetMonitors
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup monitor
2012-11-27 15:55:04 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI GLFWmonitor * glfwGetPrimaryMonitor ( void ) ;
2012-11-27 15:55:04 +00:00
2013-01-24 18:10:17 +00:00
/*! @brief Returns the position of the monitor's viewport on the virtual screen.
2013-03-18 18:11:02 +00:00
*
* This function returns the position , in screen coordinates , of the upper - left
* corner of the specified monitor .
*
2014-09-18 13:03:29 +00:00
* Any or all of the position arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` position arguments will be set to zero .
*
2013-01-17 22:06:56 +00:00
* @ param [ in ] monitor The monitor to query .
2013-06-05 15:53:13 +00:00
* @ param [ out ] xpos Where to store the monitor x - coordinate , or ` NULL ` .
* @ param [ out ] ypos Where to store the monitor y - coordinate , or ` NULL ` .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref monitor_properties
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2013-01-24 18:10:17 +00:00
* @ ingroup monitor
*/
GLFWAPI void glfwGetMonitorPos ( GLFWmonitor * monitor , int * xpos , int * ypos ) ;
2019-08-12 10:52:31 +00:00
/*! @brief Retrieves the work area of the monitor.
2017-04-06 19:48:08 +00:00
*
* This function returns the position , in screen coordinates , of the upper - left
2019-02-25 13:01:08 +00:00
* 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
2021-07-13 19:50:09 +00:00
* monitor not occluded by the window system task bar where present . If no
2019-02-25 13:01:08 +00:00
* task bar exists then the work area is the monitor resolution in screen
* coordinates .
2017-04-06 19:48:08 +00:00
*
2019-02-25 13:01:08 +00:00
* 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 .
2017-04-06 19:48:08 +00:00
*
* @ 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 ` .
2018-09-08 15:16:07 +00:00
* @ param [ out ] width Where to store the monitor width , or ` NULL ` .
* @ param [ out ] height Where to store the monitor height , or ` NULL ` .
2017-04-06 19:48:08 +00:00
*
* @ 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 .
*
2019-02-25 13:46:48 +00:00
* @ sa @ ref monitor_workarea
2017-04-06 19:48:08 +00:00
*
2018-09-08 15:24:20 +00:00
* @ since Added in version 3.3 .
2017-04-06 19:48:08 +00:00
*
* @ ingroup monitor
*/
2019-02-25 13:01:08 +00:00
GLFWAPI void glfwGetMonitorWorkarea ( GLFWmonitor * monitor , int * xpos , int * ypos , int * width , int * height ) ;
2017-04-06 19:48:08 +00:00
2013-01-24 18:10:17 +00:00
/*! @brief Returns the physical size of the monitor.
2013-03-18 18:11:02 +00:00
*
* This function returns the size , in millimetres , of the display area of the
* specified monitor .
*
2021-07-13 19:50:09 +00:00
* Some platforms do not provide accurate monitor size information , either
2015-01-18 00:55:25 +00:00
* because the monitor
* [ EDID ] ( https : //en.wikipedia.org/wiki/Extended_display_identification_data)
* data is incorrect or because the driver does not report it accurately .
*
2014-09-18 13:03:29 +00:00
* Any or all of the size arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` size arguments will be set to zero .
*
2013-01-24 18:10:17 +00:00
* @ param [ in ] monitor The monitor to query .
2015-01-11 22:33:14 +00:00
* @ param [ out ] widthMM Where to store the width , in millimetres , of the
* monitor ' s display area , or ` NULL ` .
* @ param [ out ] heightMM Where to store the height , in millimetres , of the
* monitor ' s display area , or ` NULL ` .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2021-10-11 22:23:37 +00:00
* @ 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 .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref monitor_properties
2014-03-24 10:58:35 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-03-18 18:11:02 +00:00
*
2012-11-27 16:07:28 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2015-01-11 22:33:14 +00:00
GLFWAPI void glfwGetMonitorPhysicalSize ( GLFWmonitor * monitor , int * widthMM , int * heightMM ) ;
2012-11-22 15:38:24 +00:00
2017-08-29 17:19:00 +00:00
/*! @brief Retrieves the content scale for the specified monitor.
*
* This function retrieves the content scale for the specified monitor . The
* content scale is the ratio between the current DPI and the platform ' s
2019-04-01 16:36:30 +00:00
* 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 .
2017-08-29 17:19:00 +00:00
*
* 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
* calculated from the physical size and current resolution .
*
* @ param [ in ] monitor The monitor to query .
* @ param [ out ] xscale Where to store the x - axis content scale , or ` NULL ` .
* @ param [ out ] yscale Where to store the y - axis content scale , 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_scale
* @ sa @ ref glfwGetWindowContentScale
*
* @ since Added in version 3.3 .
*
* @ ingroup monitor
*/
GLFWAPI void glfwGetMonitorContentScale ( GLFWmonitor * monitor , float * xscale , float * yscale ) ;
2012-11-27 16:07:28 +00:00
/*! @brief Returns the name of the specified monitor.
2013-03-18 18:11:02 +00:00
*
* This function returns a human - readable name , encoded as UTF - 8 , of the
2014-09-18 13:03:29 +00:00
* specified monitor . The name typically reflects the make and model of the
* monitor and is not guaranteed to be unique among the connected monitors .
2013-03-18 18:11:02 +00:00
*
2012-11-27 16:07:28 +00:00
* @ param [ in ] monitor The monitor to query .
2014-09-18 13:03:29 +00:00
* @ return The UTF - 8 encoded name of the monitor , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned string is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified monitor is
* disconnected or the library is terminated .
2013-03-18 18:11:02 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_properties
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-06-05 14:04:04 +00:00
*
2012-11-27 16:07:28 +00:00
* @ ingroup monitor
2012-11-27 15:55:04 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI const char * glfwGetMonitorName ( GLFWmonitor * monitor ) ;
2012-11-27 15:55:04 +00:00
2017-12-07 15:19:57 +00:00
/*! @brief Sets the user pointer of the specified monitor.
*
* This function sets the user - defined pointer of the specified monitor . The
* current value is retained until the monitor is disconnected . The initial
* value is ` NULL ` .
*
* This function may be called from the monitor callback , even for a monitor
* that is being disconnected .
*
* @ param [ in ] monitor The monitor whose pointer to set .
* @ param [ in ] pointer The new value .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
*
* @ sa @ ref monitor_userptr
* @ sa @ ref glfwGetMonitorUserPointer
*
* @ since Added in version 3.3 .
*
* @ ingroup monitor
*/
GLFWAPI void glfwSetMonitorUserPointer ( GLFWmonitor * monitor , void * pointer ) ;
/*! @brief Returns the user pointer of the specified monitor.
*
* This function returns the current value of the user - defined pointer of the
* specified monitor . The initial value is ` NULL ` .
*
* This function may be called from the monitor callback , even for a monitor
* that is being disconnected .
*
* @ param [ in ] monitor The monitor whose pointer to return .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
*
* @ sa @ ref monitor_userptr
* @ sa @ ref glfwSetMonitorUserPointer
*
* @ since Added in version 3.3 .
*
* @ ingroup monitor
*/
GLFWAPI void * glfwGetMonitorUserPointer ( GLFWmonitor * monitor ) ;
2012-11-27 16:07:28 +00:00
/*! @brief Sets the monitor configuration callback.
2013-03-18 18:11:02 +00:00
*
* This function sets the monitor configuration callback , or removes the
* currently set callback . This is called when a monitor is connected to or
* disconnected from the system .
*
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-01-17 22:06:56 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-03-18 18:11:02 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref monitor_event
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2012-11-27 16:07:28 +00:00
* @ ingroup monitor
2012-11-27 15:55:04 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWmonitorfun glfwSetMonitorCallback ( GLFWmonitorfun callback ) ;
2011-05-07 08:53:50 +00:00
2012-11-27 15:55:04 +00:00
/*! @brief Returns the available video modes for the specified monitor.
2013-03-18 18:11:02 +00:00
*
* This function returns an array of all video modes supported by the specified
2013-04-16 00:02:22 +00:00
* monitor . The returned array is sorted in ascending order , first by color
2021-04-22 21:07:50 +00:00
* 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 .
2013-03-18 18:11:02 +00:00
*
2012-11-27 16:07:28 +00:00
* @ param [ in ] monitor The monitor to query .
2013-06-05 15:53:13 +00:00
* @ param [ out ] count Where to store the number of video modes in the returned
* array . This is set to zero if an error occurred .
2014-09-18 13:03:29 +00:00
* @ return An array of video modes , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned array is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified monitor is
* disconnected , this function is called again for that monitor or the library
* is terminated .
2014-03-24 10:58:35 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-01-17 22:06:56 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_modes
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetVideoMode
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Changed to return an array of modes for a specific monitor .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI const GLFWvidmode * glfwGetVideoModes ( GLFWmonitor * monitor , int * count ) ;
2012-11-27 15:55:04 +00:00
2012-11-27 16:07:28 +00:00
/*! @brief Returns the current mode of the specified monitor.
2013-03-18 18:11:02 +00:00
*
2013-04-16 00:02:22 +00:00
* This function returns the current video mode of the specified monitor . If
2014-09-18 13:03:29 +00:00
* you have created a full screen window for that monitor , the return value
* will depend on whether that window is iconified .
2013-03-18 18:11:02 +00:00
*
2012-11-27 16:07:28 +00:00
* @ param [ in ] monitor The monitor to query .
2014-09-18 13:03:29 +00:00
* @ return The current mode of the monitor , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
2013-01-17 22:06:56 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned array is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified monitor is
* disconnected or the library is terminated .
2014-03-24 10:58:35 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-06-05 14:04:04 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_modes
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetVideoModes
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwGetDesktopMode ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup monitor
2012-11-27 15:55:04 +00:00
*/
2013-05-22 20:16:43 +00:00
GLFWAPI const GLFWvidmode * glfwGetVideoMode ( GLFWmonitor * monitor ) ;
2010-09-07 15:34:51 +00:00
2013-02-12 12:50:41 +00:00
/*! @brief Generates a gamma ramp and sets it for the specified monitor.
2013-03-18 18:11:02 +00:00
*
2018-12-17 16:40:18 +00:00
* 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 .
2013-03-18 18:11:02 +00:00
*
2016-12-06 00:14:23 +00:00
* The software controlled gamma ramp is applied _in addition_ to the hardware
* gamma correction , which today is usually an approximation of sRGB gamma .
* This means that setting a perfectly linear ramp , or gamma 1.0 , will produce
* the default ( usually sRGB - like ) behavior .
*
* For gamma correct rendering with OpenGL or OpenGL ES , see the @ ref
* GLFW_SRGB_CAPABLE hint .
*
2013-02-12 12:50:41 +00:00
* @ param [ in ] monitor The monitor whose gamma ramp to set .
2012-12-02 14:47:10 +00:00
* @ param [ in ] gamma The desired exponent .
2013-01-17 22:06:56 +00:00
*
2022-09-20 14:17:22 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref GLFW_INVALID_VALUE ,
* @ ref GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2019-08-12 10:52:31 +00:00
* @ remark @ wayland Gamma handling is a privileged protocol , this function
2022-09-20 14:17:22 +00:00
* will thus never be implemented and emits @ ref GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-04-23 11:30:11 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_gamma
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2013-06-17 10:56:36 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-02-12 12:50:41 +00:00
GLFWAPI void glfwSetGamma ( GLFWmonitor * monitor , float gamma ) ;
2012-11-22 15:38:24 +00:00
2014-09-18 13:03:29 +00:00
/*! @brief Returns the current gamma ramp for the specified monitor.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function returns the current gamma ramp of the specified monitor .
2013-03-18 18:11:02 +00:00
*
2013-02-12 12:50:41 +00:00
* @ param [ in ] monitor The monitor to query .
2014-09-18 13:03:29 +00:00
* @ return The current gamma ramp , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
2022-09-20 14:17:22 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref GLFW_PLATFORM_ERROR
* and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2019-08-12 10:52:31 +00:00
* @ remark @ wayland Gamma handling is a privileged protocol , this function
2022-09-20 14:17:22 +00:00
* will thus never be implemented and emits @ ref GLFW_FEATURE_UNAVAILABLE while
2017-11-17 12:17:43 +00:00
* returning ` NULL ` .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned structure and its arrays are allocated and
* freed by GLFW . You should not free them yourself . They are valid until the
* specified monitor is disconnected , this function is called again for that
* monitor or the library is terminated .
2013-03-18 18:11:02 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref monitor_gamma
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-06-05 14:04:04 +00:00
*
2013-06-17 10:56:36 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-05-19 13:46:44 +00:00
GLFWAPI const GLFWgammaramp * glfwGetGammaRamp ( GLFWmonitor * monitor ) ;
2012-11-22 15:38:24 +00:00
2013-03-18 18:11:02 +00:00
/*! @brief Sets the current gamma ramp for the specified monitor.
*
2014-09-18 13:03:29 +00:00
* This function sets the current gamma ramp for the specified monitor . The
* original gamma ramp for that monitor is saved by GLFW the first time this
* function is called and is restored by @ ref glfwTerminate .
2013-03-18 18:11:02 +00:00
*
2016-12-06 00:14:23 +00:00
* The software controlled gamma ramp is applied _in addition_ to the hardware
* gamma correction , which today is usually an approximation of sRGB gamma .
* This means that setting a perfectly linear ramp , or gamma 1.0 , will produce
* the default ( usually sRGB - like ) behavior .
*
* For gamma correct rendering with OpenGL or OpenGL ES , see the @ ref
* GLFW_SRGB_CAPABLE hint .
*
2013-02-12 12:50:41 +00:00
* @ param [ in ] monitor The monitor whose gamma ramp to set .
2012-11-22 15:38:24 +00:00
* @ param [ in ] ramp The gamma ramp to use .
2013-02-20 18:44:52 +00:00
*
2022-09-20 14:17:22 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref GLFW_PLATFORM_ERROR
* and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2018-12-17 16:40:18 +00:00
* @ remark The size of the specified gamma ramp should match the size of the
* current ramp for that monitor .
2015-03-10 18:02:28 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark @ win32 The gamma ramp size must be 256.
2013-03-18 18:11:02 +00:00
*
2019-08-12 10:52:31 +00:00
* @ remark @ wayland Gamma handling is a privileged protocol , this function
2022-09-20 14:17:22 +00:00
* will thus never be implemented and emits @ ref GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The specified gamma ramp is copied before this function
* returns .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref monitor_gamma
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-06-17 10:56:36 +00:00
* @ ingroup monitor
2012-11-22 15:38:24 +00:00
*/
2013-02-12 12:50:41 +00:00
GLFWAPI void glfwSetGammaRamp ( GLFWmonitor * monitor , const GLFWgammaramp * ramp ) ;
2010-10-13 02:04:43 +00:00
2013-03-18 18:11:02 +00:00
/*! @brief Resets all window hints to their default values.
2012-11-22 15:38:24 +00:00
*
2013-03-18 18:11:02 +00:00
* This function resets all window hints to their
2013-03-29 13:06:23 +00:00
* [ default values ] ( @ ref window_hints_values ) .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_hints
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwWindowHint
2017-12-12 09:54:18 +00:00
* @ sa @ ref glfwWindowHintString
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2012-10-22 00:59:05 +00:00
GLFWAPI void glfwDefaultWindowHints ( void ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the specified window hint to the desired value.
*
2012-12-23 14:59:09 +00:00
* This function sets hints for the next call to @ ref glfwCreateWindow . The
2017-12-12 09:54:18 +00:00
* hints , once set , retain their values until changed by a call to this
* function or @ ref glfwDefaultWindowHints , or until the library is terminated .
*
* Only integer value hints can be set with this function . String value hints
* are set with @ ref glfwWindowHintString .
2012-12-23 14:59:09 +00:00
*
2016-02-09 06:41:48 +00:00
* This function does not check whether the specified hint values are valid .
* If you set hints to invalid values this will instead be reported by the next
* call to @ ref glfwCreateWindow .
*
2017-12-12 09:54:18 +00:00
* Some hints are platform specific . These may be set on any platform but they
* will only affect their specific platform . Other platforms will ignore them .
* Setting these hints requires no platform specific headers or functions .
*
2016-01-27 02:25:21 +00:00
* @ param [ in ] hint The [ window hint ] ( @ ref window_hints ) to set .
* @ param [ in ] value The new value of the window hint .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_hints
2017-12-12 09:54:18 +00:00
* @ sa @ ref glfwWindowHintString
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwDefaultWindowHints
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwOpenWindowHint ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2016-01-27 02:25:21 +00:00
GLFWAPI void glfwWindowHint ( int hint , int value ) ;
2012-11-22 15:38:24 +00:00
2017-12-12 09:54:18 +00:00
/*! @brief Sets the specified window hint to the desired value.
*
* This function sets hints for the next call to @ ref glfwCreateWindow . The
* hints , once set , retain their values until changed by a call to this
* function or @ ref glfwDefaultWindowHints , or until the library is terminated .
*
* Only string type hints can be set with this function . Integer value hints
* are set with @ ref glfwWindowHint .
*
* This function does not check whether the specified hint values are valid .
* If you set hints to invalid values this will instead be reported by the next
* call to @ ref glfwCreateWindow .
*
* Some hints are platform specific . These may be set on any platform but they
* will only affect their specific platform . Other platforms will ignore them .
* Setting these hints requires no platform specific headers or functions .
*
* @ param [ in ] hint The [ window hint ] ( @ ref window_hints ) to set .
* @ param [ in ] value The new value of the window hint .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
* @ pointer_lifetime The specified string is copied before this function
* returns .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_hints
* @ sa @ ref glfwWindowHint
* @ sa @ ref glfwDefaultWindowHints
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI void glfwWindowHintString ( int hint , const char * value ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Creates a window and its associated context.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function creates a window and its associated OpenGL or OpenGL ES
* context . Most of the options controlling how the window and its context
* should be created are specified with [ window hints ] ( @ ref window_hints ) .
2013-03-18 18:11:02 +00:00
*
* Successful creation does not change which context is current . Before you
2014-09-18 13:03:29 +00:00
* can use the newly created context , you need to
* [ make it current ] ( @ ref context_current ) . For information about the ` share `
* parameter , see @ ref context_sharing .
2013-03-18 18:11:02 +00:00
*
2014-04-23 11:30:11 +00:00
* The created window , framebuffer and context may differ from what you
* requested , as not all parameters and hints are
2013-04-10 23:07:07 +00:00
* [ hard constraints ] ( @ ref window_hints_hard ) . This includes the size of the
2014-09-18 13:03:29 +00:00
* window , especially for full screen windows . To query the actual attributes
2015-04-07 12:37:42 +00:00
* of the created window , framebuffer and context , see @ ref
* glfwGetWindowAttrib , @ ref glfwGetWindowSize and @ ref glfwGetFramebufferSize .
2012-11-22 15:38:24 +00:00
*
2014-04-23 11:30:11 +00:00
* To create a full screen window , you need to specify the monitor the window
2016-02-23 11:26:42 +00:00
* will cover . If no monitor is specified , the window will be windowed mode .
* Unless you have a way for the user to choose a specific monitor , it is
* recommended that you pick the primary monitor . For more information on how
* to query connected monitors , see @ ref monitor_monitors .
2013-07-07 10:06:59 +00:00
*
2014-10-02 15:35:10 +00:00
* For full screen windows , the specified size becomes the resolution of the
2016-02-23 11:26:42 +00:00
* window ' s _desired video mode_ . As long as a full screen window is not
* iconified , the supported video mode most closely matching the desired video
* mode is set for the specified monitor . For more information about full
* screen windows , including the creation of so called _windowed full screen_
* or _borderless full screen_ windows , see @ ref window_windowed_full_screen .
2014-10-02 15:35:10 +00:00
*
2016-08-17 14:48:22 +00:00
* Once you have created the window , you can switch it between windowed and
2016-11-08 11:19:06 +00:00
* full screen mode with @ ref glfwSetWindowMonitor . This will not affect its
* OpenGL or OpenGL ES context .
2016-08-17 14:48:22 +00:00
*
2014-04-23 11:30:11 +00:00
* By default , newly created windows use the placement recommended by the
2021-10-26 12:25:03 +00:00
* window system . To create the window at a specific position , set the @ ref
* GLFW_POSITION_X and @ ref GLFW_POSITION_Y window hints before creation . To
* restore the default behavior , set either or both hints back to
* ` GLFW_ANY_POSITION ` .
2013-06-05 15:53:13 +00:00
*
2016-02-23 11:26:42 +00:00
* As long as at least one full screen window is not iconified , the screensaver
* is prohibited from starting .
2013-06-05 15:53:13 +00:00
*
2014-09-18 13:03:29 +00:00
* Window systems put limits on window sizes . Very large or very small window
* dimensions may be overridden by the window system on creation . Check the
2014-10-02 15:35:10 +00:00
* actual [ size ] ( @ ref window_size ) after creation .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* The [ swap interval ] ( @ ref buffer_swap ) is not set during window creation and
2014-09-18 13:03:29 +00:00
* the initial value may vary depending on driver settings and defaults .
*
2013-04-10 21:01:12 +00:00
* @ param [ in ] width The desired width , in screen coordinates , of the window .
* This must be greater than zero .
* @ param [ in ] height The desired height , in screen coordinates , of the window .
* This must be greater than zero .
2012-11-22 15:38:24 +00:00
* @ param [ in ] title The initial , UTF - 8 encoded window title .
2016-02-23 11:26:42 +00:00
* @ param [ in ] monitor The monitor to use for full screen mode , or ` NULL ` for
2012-11-27 15:55:04 +00:00
* windowed mode .
2013-03-12 14:33:05 +00:00
* @ param [ in ] share The window whose context to share resources with , or ` NULL `
* to not share resources .
2014-09-18 13:03:29 +00:00
* @ return The handle of the created window , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM , @ ref GLFW_INVALID_VALUE , @ ref GLFW_API_UNAVAILABLE , @ ref
* GLFW_VERSION_UNAVAILABLE , @ ref GLFW_FORMAT_UNAVAILABLE and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark @ win32 Window creation will fail if the Microsoft GDI software
* OpenGL implementation is the only one available .
2013-09-26 17:15:36 +00:00
*
2016-05-30 14:04:37 +00:00
* @ remark @ win32 If the executable has an icon resource named ` GLFW_ICON , ` it
* will be set as the initial icon for the window . If no such icon is present ,
2017-11-16 09:08:38 +00:00
* the ` IDI_APPLICATION ` icon will be used instead . To set a different icon ,
* see @ ref glfwSetWindowIcon .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark @ win32 The context to share resources with must not be current on
* any other thread .
2014-12-27 20:14:41 +00:00
*
2019-10-18 11:21:59 +00:00
* @ remark @ macos The OS only supports core profile contexts for OpenGL
* versions 3.2 and later . Before creating an OpenGL context of version 3.2 or
* later you must set the [ GLFW_OPENGL_PROFILE ] ( @ ref GLFW_OPENGL_PROFILE_hint )
* hint accordingly . OpenGL 3.0 and 3.1 contexts are not supported at all
* on macOS .
2016-12-03 18:32:00 +00:00
*
2016-10-19 22:50:54 +00:00
* @ remark @ macos The GLFW window has no icon , as it is not a document
2013-03-12 14:33:05 +00:00
* window , but the dock icon will be the same as the application bundle ' s icon .
2014-09-18 13:03:29 +00:00
* For more information on bundles , see the
2014-04-23 11:30:11 +00:00
* [ Bundle Programming Guide ] ( https : //developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
* in the Mac Developer Library .
2012-11-22 15:38:24 +00:00
*
2016-10-19 22:50:54 +00:00
* @ remark @ macos On OS X 10.10 and later the window frame will not be rendered
2016-12-06 23:41:54 +00:00
* at full resolution on Retina displays unless the
* [ GLFW_COCOA_RETINA_FRAMEBUFFER ] ( @ ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint )
* hint is ` GLFW_TRUE ` and the ` NSHighResolutionCapable ` key is enabled in the
* application bundle ' s ` Info . plist ` . For more information , see
2015-03-16 21:39:14 +00:00
* [ High Resolution Guidelines for OS X ] ( https : //developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html)
2015-07-21 15:42:01 +00:00
* in the Mac Developer Library . The GLFW test and example programs use
* a custom ` Info . plist ` template for this , which can be found as
2019-12-03 21:03:36 +00:00
* ` CMake / Info . plist . in ` in the source tree .
2015-03-16 21:39:14 +00:00
*
2017-01-01 18:41:50 +00:00
* @ remark @ macos When activating frame autosaving with
2017-12-12 15:45:38 +00:00
* [ GLFW_COCOA_FRAME_NAME ] ( @ ref GLFW_COCOA_FRAME_NAME_hint ) , the specified
2019-08-12 10:52:31 +00:00
* window size and position may be overridden by previously saved values .
2017-01-01 18:41:50 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark @ x11 Some window managers will not respect the placement of
2014-04-23 11:30:11 +00:00
* initially hidden windows .
2013-09-19 19:37:01 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark @ x11 Due to the asynchronous nature of X11 , it may take a moment for
* a window to reach its requested state . This means you may not be able to
* query the final size , position or other attributes directly after window
* creation .
2015-08-12 19:31:54 +00:00
*
2017-12-12 09:54:18 +00:00
* @ 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
2019-04-01 16:36:30 +00:00
* 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 .
2017-07-24 23:55:08 +00:00
*
2019-02-15 18:02:32 +00:00
* @ 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 .
2016-10-16 14:52:39 +00:00
*
* @ remark @ wayland A full screen window will not attempt to change the mode ,
* no matter what the requested size or refresh rate .
*
2017-02-17 15:52:50 +00:00
* @ remark @ wayland Screensaver inhibition requires the idle - inhibit protocol
* to be implemented in the user ' s compositor .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_creation
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwDestroyWindow
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwOpenWindow ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI GLFWwindow * glfwCreateWindow ( int width , int height , const char * title , GLFWmonitor * monitor , GLFWwindow * share ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Destroys the specified window and its context.
2013-03-18 18:11:02 +00:00
*
* This function destroys the specified window and its context . On calling
* this function , no further callbacks will be called for that window .
*
2014-09-18 13:03:29 +00:00
* If the context of the specified window is current on the main thread , it is
* detached before being destroyed .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ param [ in ] window The window to destroy .
2012-11-22 18:08:30 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2014-09-18 13:03:29 +00:00
* @ note The context of the specified window must not be current on any other
* thread when this function is called .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ reentrancy This function must not be called from a callback .
2014-12-17 00:31:36 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_creation
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwCreateWindow
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwCloseWindow ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwDestroyWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2013-03-06 22:29:37 +00:00
/*! @brief Checks the close flag of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function returns the value of the close flag of the specified window .
*
2013-03-01 12:45:12 +00:00
* @ param [ in ] window The window to query .
2013-03-06 22:29:37 +00:00
* @ return The value of the close flag .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_close
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-07-11 00:00:48 +00:00
*
2013-03-01 12:45:12 +00:00
* @ ingroup window
*/
GLFWAPI int glfwWindowShouldClose ( GLFWwindow * window ) ;
2013-03-06 22:29:37 +00:00
/*! @brief Sets the close flag of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the value of the close flag of the specified window .
* This can be used to override the user ' s attempt to close the window , or
* to signal that it should be closed .
*
2013-03-06 22:29:37 +00:00
* @ param [ in ] window The window whose flag to change .
2013-03-01 12:45:12 +00:00
* @ param [ in ] value The new value .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_close
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-07-11 00:00:48 +00:00
*
2013-03-01 12:45:12 +00:00
* @ ingroup window
*/
GLFWAPI void glfwSetWindowShouldClose ( GLFWwindow * window , int value ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the title of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the window title , encoded as UTF - 8 , of the specified
* window .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose title to change .
* @ param [ in ] title The UTF - 8 encoded window title .
2012-11-22 18:08:30 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-10-19 22:50:54 +00:00
* @ remark @ macos The window title will not be updated until the next time you
2016-01-31 20:32:14 +00:00
* process events .
2015-04-07 19:52:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_title
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2013-03-18 18:11:02 +00:00
*
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSetWindowTitle ( GLFWwindow * window , const char * title ) ;
2012-11-22 15:38:24 +00:00
2016-03-07 13:55:30 +00:00
/*! @brief Sets the icon for the specified window.
*
* This function sets the icon of the specified window . If passed an array of
* candidate images , those of or closest to the sizes desired by the system are
* selected . If no images are specified , the window reverts to its default
* icon .
*
2017-06-06 16:17:58 +00:00
* The pixels are 32 - bit , little - endian , non - premultiplied RGBA , i . e . eight
* bits per channel with the red channel first . They are arranged canonically
* as packed sequential rows , starting from the top - left corner .
*
2016-03-07 13:55:30 +00:00
* The desired image sizes varies depending on platform and system settings .
* The selected images will be rescaled as needed . Good sizes include 16 x16 ,
* 32 x32 and 48 x48 .
*
* @ param [ in ] window The window whose icon to set .
* @ param [ in ] count The number of images in the specified array , or zero to
* revert to the default window icon .
* @ param [ in ] images The images to create the icon from . This is ignored if
* count is zero .
*
2020-05-20 16:02:58 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2022-03-15 20:22:49 +00:00
* GLFW_INVALID_VALUE , @ ref GLFW_PLATFORM_ERROR and @ ref
* GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-03-07 13:55:30 +00:00
*
* @ pointer_lifetime The specified image data is copied before this function
* returns .
*
2020-05-20 16:02:58 +00:00
* @ remark @ macos Regular windows do not have icons on macOS . This function
* will emit @ ref GLFW_FEATURE_UNAVAILABLE . The dock icon will be the same as
2016-05-30 14:04:37 +00:00
* the application bundle ' s icon . For more information on bundles , see the
2016-03-07 13:55:30 +00:00
* [ Bundle Programming Guide ] ( https : //developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/)
* in the Mac Developer Library .
*
2017-12-03 03:19:15 +00:00
* @ remark @ wayland There is no existing protocol to change an icon , the
* window will thus inherit the one defined in the application ' s desktop file .
2020-05-20 16:02:58 +00:00
* This function will emit @ ref GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-03-07 13:55:30 +00:00
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_icon
*
* @ since Added in version 3.2 .
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowIcon ( GLFWwindow * window , int count , const GLFWimage * images ) ;
2019-01-22 19:54:16 +00:00
/*! @brief Retrieves the position of the content area of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function retrieves the position , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* upper - left corner of the content area of the specified window .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* Any or all of the position arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` position arguments will be set to zero .
*
2013-01-24 18:30:31 +00:00
* @ param [ in ] window The window to query .
2013-06-05 15:53:13 +00:00
* @ param [ out ] xpos Where to store the x - coordinate of the upper - left corner of
2019-01-22 19:54:16 +00:00
* the content area , or ` NULL ` .
2013-06-05 15:53:13 +00:00
* @ param [ out ] ypos Where to store the y - coordinate of the upper - left corner of
2019-01-22 19:54:16 +00:00
* the content area , or ` NULL ` .
2013-01-24 18:30:31 +00:00
*
2020-05-20 16:02:58 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland There is no way for an application to retrieve the global
2020-05-20 16:02:58 +00:00
* position of its windows . This function will emit @ ref
* GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowPos
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2013-01-24 18:30:31 +00:00
*/
GLFWAPI void glfwGetWindowPos ( GLFWwindow * window , int * xpos , int * ypos ) ;
2019-01-22 19:54:16 +00:00
/*! @brief Sets the position of the content area of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the position , in screen coordinates , of the upper - left
2019-01-22 19:54:16 +00:00
* corner of the content area of the specified windowed mode window . If the
2014-09-18 13:03:29 +00:00
* window is a full screen window , this function does nothing .
2013-04-10 21:01:12 +00:00
*
2015-01-11 22:33:14 +00:00
* __Do not use this function__ to move an already visible window unless you
* have very good reasons for doing so , as it will confuse and annoy the user .
*
* The window manager may put limits on what positions are allowed . GLFW
* cannot and should not override these limits .
*
2013-01-24 18:30:31 +00:00
* @ param [ in ] window The window to query .
2019-01-22 19:54:16 +00:00
* @ 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 .
2013-01-24 18:30:31 +00:00
*
2020-05-20 16:02:58 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland There is no way for an application to set the global
2020-05-20 16:02:58 +00:00
* position of its windows . This function will emit @ ref
* GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetWindowPos
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2013-01-24 18:30:31 +00:00
*/
2013-02-12 11:01:12 +00:00
GLFWAPI void glfwSetWindowPos ( GLFWwindow * window , int xpos , int ypos ) ;
2013-01-24 18:30:31 +00:00
2019-01-22 19:54:16 +00:00
/*! @brief Retrieves the size of the content area of the specified window.
2013-03-18 18:11:02 +00:00
*
2019-01-22 19:54:16 +00:00
* This function retrieves the size , in screen coordinates , of the content area
2013-09-26 18:02:19 +00:00
* of the specified window . If you wish to retrieve the size of the
2015-01-11 22:33:14 +00:00
* framebuffer of the window in pixels , see @ ref glfwGetFramebufferSize .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* Any or all of the size arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` size arguments will be set to zero .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose size to retrieve .
2013-06-05 15:53:13 +00:00
* @ param [ out ] width Where to store the width , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* content area , or ` NULL ` .
2013-06-05 15:53:13 +00:00
* @ param [ out ] height Where to store the height , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* content area , or ` NULL ` .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_size
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowSize
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwGetWindowSize ( GLFWwindow * window , int * width , int * height ) ;
2012-11-22 15:38:24 +00:00
2014-02-13 01:57:59 +00:00
/*! @brief Sets the size limits of the specified window.
*
2019-01-22 19:54:16 +00:00
* This function sets the size limits of the content area of the specified
2016-04-08 23:42:58 +00:00
* window . If the window is full screen , the size limits only take effect
2016-02-23 11:26:42 +00:00
* once it is made windowed . If the window is not resizable , this function
* does nothing .
2014-02-13 01:57:59 +00:00
*
2016-02-23 11:26:42 +00:00
* The size limits are applied immediately to a windowed mode window and may
* cause it to be resized .
2014-02-13 01:57:59 +00:00
*
2016-05-04 14:28:08 +00:00
* The maximum dimensions must be greater than or equal to the minimum
* dimensions and all must be greater than or equal to zero .
*
2014-02-13 01:57:59 +00:00
* @ param [ in ] window The window to set limits for .
2019-01-22 19:54:16 +00:00
* @ param [ in ] minwidth The minimum width , in screen coordinates , of the content
2014-02-13 01:57:59 +00:00
* area , or ` GLFW_DONT_CARE ` .
* @ param [ in ] minheight The minimum height , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* content area , or ` GLFW_DONT_CARE ` .
* @ param [ in ] maxwidth The maximum width , in screen coordinates , of the content
2014-02-13 01:57:59 +00:00
* area , or ` GLFW_DONT_CARE ` .
* @ param [ in ] maxheight The maximum height , in screen coordinates , of the
2019-01-22 19:54:16 +00:00
* content area , or ` GLFW_DONT_CARE ` .
2014-02-13 01:57:59 +00:00
*
2016-05-04 14:28:08 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_VALUE and @ ref GLFW_PLATFORM_ERROR .
2016-02-04 23:51:40 +00:00
*
2016-01-31 20:32:14 +00:00
* @ remark If you set size limits and an aspect ratio that conflict , the
2014-02-13 01:57:59 +00:00
* results are undefined .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland The size limits will not be applied until the window is
* actually resized , either by the user or by the compositor .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-02-13 01:57:59 +00:00
*
* @ sa @ ref window_sizelimits
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowAspectRatio
2014-02-13 01:57:59 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.2 .
2014-02-13 01:57:59 +00:00
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowSizeLimits ( GLFWwindow * window , int minwidth , int minheight , int maxwidth , int maxheight ) ;
/*! @brief Sets the aspect ratio of the specified window.
*
2019-01-22 19:54:16 +00:00
* This function sets the required aspect ratio of the content area of the
2016-02-23 11:26:42 +00:00
* 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
2014-02-13 01:57:59 +00:00
* function does nothing .
*
2015-10-19 14:01:42 +00:00
* The aspect ratio is specified as a numerator and a denominator and both
* values must be greater than zero . For example , the common 16 : 9 aspect ratio
* is specified as 16 and 9 , respectively .
2014-02-13 01:57:59 +00:00
*
2015-10-19 14:01:42 +00:00
* If the numerator and denominator is set to ` GLFW_DONT_CARE ` then the aspect
* ratio limit is disabled .
2014-02-13 01:57:59 +00:00
*
2016-02-23 11:26:42 +00:00
* The aspect ratio is applied immediately to a windowed mode window and may
* cause it to be resized .
2014-02-13 01:57:59 +00:00
*
* @ param [ in ] window The window to set limits for .
* @ param [ in ] numer The numerator of the desired aspect ratio , or
* ` GLFW_DONT_CARE ` .
* @ param [ in ] denom The denominator of the desired aspect ratio , or
* ` GLFW_DONT_CARE ` .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_VALUE and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark If you set size limits and an aspect ratio that conflict , the
2014-02-13 01:57:59 +00:00
* results are undefined .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland The aspect ratio will not be applied until the window is
* actually resized , either by the user or by the compositor .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-02-13 01:57:59 +00:00
*
* @ sa @ ref window_sizelimits
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowSizeLimits
2014-02-13 01:57:59 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.2 .
2014-02-13 01:57:59 +00:00
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowAspectRatio ( GLFWwindow * window , int numer , int denom ) ;
2019-01-22 19:54:16 +00:00
/*! @brief Sets the size of the content area of the specified window.
2013-03-18 18:11:02 +00:00
*
2019-01-22 19:54:16 +00:00
* This function sets the size , in screen coordinates , of the content area of
2013-04-10 21:01:12 +00:00
* the specified window .
*
2016-02-23 11:26:42 +00:00
* For full screen windows , this function updates the resolution of its desired
* video mode and switches to the video mode closest to it , without affecting
* the window ' s context . As the context is unaffected , the bit depths of the
* framebuffer remain unchanged .
*
* If you wish to update the refresh rate of the desired video mode in addition
* to its resolution , see @ ref glfwSetWindowMonitor .
2013-03-18 18:11:02 +00:00
*
2015-01-11 22:33:14 +00:00
* The window manager may put limits on what sizes are allowed . GLFW cannot
* and should not override these limits .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window to resize .
2016-02-23 11:26:42 +00:00
* @ param [ in ] width The desired width , in screen coordinates , of the window
2019-01-22 19:54:16 +00:00
* content area .
2016-02-23 11:26:42 +00:00
* @ param [ in ] height The desired height , in screen coordinates , of the window
2019-01-22 19:54:16 +00:00
* content area .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland A full screen window will not attempt to change the mode ,
* no matter what the requested size .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_size
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetWindowSize
* @ sa @ ref glfwSetWindowMonitor
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSetWindowSize ( GLFWwindow * window , int width , int height ) ;
2012-11-22 15:38:24 +00:00
2013-06-03 10:51:57 +00:00
/*! @brief Retrieves the size of the framebuffer of the specified window.
*
* This function retrieves the size , in pixels , of the framebuffer of the
2013-09-26 18:02:19 +00:00
* specified window . If you wish to retrieve the size of the window in screen
* coordinates , see @ ref glfwGetWindowSize .
2013-06-03 10:51:57 +00:00
*
2014-09-18 13:03:29 +00:00
* Any or all of the size arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` size arguments will be set to zero .
*
2013-06-03 10:51:57 +00:00
* @ param [ in ] window The window whose framebuffer to query .
2013-06-05 15:53:13 +00:00
* @ param [ out ] width Where to store the width , in pixels , of the framebuffer ,
* or ` NULL ` .
* @ param [ out ] height Where to store the height , in pixels , of the framebuffer ,
* or ` NULL ` .
2013-06-03 10:51:57 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_fbsize
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetFramebufferSizeCallback
2013-06-03 10:51:57 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-06-03 10:51:57 +00:00
* @ ingroup window
*/
GLFWAPI void glfwGetFramebufferSize ( GLFWwindow * window , int * width , int * height ) ;
2014-03-25 20:30:13 +00:00
/*! @brief Retrieves the size of the frame of the window.
*
* This function retrieves the size , in screen coordinates , of each edge of the
* frame of the specified window . This size includes the title bar , if the
* window has one . The size of the frame may vary depending on the
* [ window - related hints ] ( @ ref window_hints_wnd ) used to create it .
*
2014-09-18 13:03:29 +00:00
* Because this function retrieves the size of each window frame edge and not
* the offset along a particular coordinate axis , the retrieved values will
* always be zero or positive .
*
* Any or all of the size arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` size arguments will be set to zero .
*
2014-03-25 20:30:13 +00:00
* @ param [ in ] window The window whose frame size to query .
* @ param [ out ] left Where to store the size , in screen coordinates , of the left
2014-09-18 13:03:29 +00:00
* edge of the window frame , or ` NULL ` .
2014-04-07 14:27:32 +00:00
* @ param [ out ] top Where to store the size , in screen coordinates , of the top
2014-09-18 13:03:29 +00:00
* edge of the window frame , or ` NULL ` .
2014-04-07 14:27:32 +00:00
* @ param [ out ] right Where to store the size , in screen coordinates , of the
2014-09-18 13:03:29 +00:00
* right edge of the window frame , or ` NULL ` .
2014-04-07 14:27:32 +00:00
* @ param [ out ] bottom Where to store the size , in screen coordinates , of the
2014-09-18 13:03:29 +00:00
* bottom edge of the window frame , or ` NULL ` .
2014-03-25 20:30:13 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-25 20:30:13 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_size
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-03-25 20:30:13 +00:00
*
* @ ingroup window
*/
GLFWAPI void glfwGetWindowFrameSize ( GLFWwindow * window , int * left , int * top , int * right , int * bottom ) ;
2017-08-29 17:19:00 +00:00
/*! @brief Retrieves the content scale for the specified window.
*
* This function retrieves the content scale for the specified window . The
* content scale is the ratio between the current DPI and the platform ' s
2019-04-01 16:36:30 +00:00
* 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 .
2017-08-29 17:19:00 +00:00
*
2021-07-13 19:50:09 +00:00
* On platforms where each monitors can have its own content scale , the window
2017-08-29 17:19:00 +00:00
* content scale will depend on which monitor the system considers the window
* to be on .
*
* @ param [ in ] window The window to query .
* @ param [ out ] xscale Where to store the x - axis content scale , or ` NULL ` .
* @ param [ out ] yscale Where to store the y - axis content scale , 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 window_scale
2017-12-11 20:26:40 +00:00
* @ sa @ ref glfwSetWindowContentScaleCallback
2017-08-29 17:19:00 +00:00
* @ sa @ ref glfwGetMonitorContentScale
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI void glfwGetWindowContentScale ( GLFWwindow * window , float * xscale , float * yscale ) ;
2017-09-25 21:14:45 +00:00
/*! @brief Returns the opacity of the whole window.
*
* This function returns the opacity of the window , including any decorations .
*
* The opacity ( or alpha ) value is a positive finite number between zero and
* one , where zero is fully transparent and one is fully opaque . If the system
* does not support whole window transparency , this function always returns one .
*
* The initial opacity value for newly created windows is one .
*
* @ param [ in ] window The window to query .
* @ return The opacity value of the specified window .
*
* @ 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 window_transparency
* @ sa @ ref glfwSetWindowOpacity
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI float glfwGetWindowOpacity ( GLFWwindow * window ) ;
/*! @brief Sets the opacity of the whole window.
*
* This function sets the opacity of the window , including any decorations .
*
* The opacity ( or alpha ) value is a positive finite number between zero and
* one , where zero is fully transparent and one is fully opaque .
*
* The initial opacity value for newly created windows is one .
*
* A window created with framebuffer transparency may not use whole window
* transparency . The results of doing this are undefined .
*
* @ param [ in ] window The window to set the opacity for .
* @ param [ in ] opacity The desired opacity of the specified window .
*
2020-05-20 16:02:58 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
*
* @ remark @ wayland There is no way to set an opacity factor for a window .
* This function will emit @ ref GLFW_FEATURE_UNAVAILABLE .
2017-09-25 21:14:45 +00:00
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_transparency
* @ sa @ ref glfwGetWindowOpacity
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowOpacity ( GLFWwindow * window , float opacity ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Iconifies the specified window.
*
2014-09-18 13:03:29 +00:00
* This function iconifies ( minimizes ) the specified window if it was
* previously restored . If the window is already iconified , this function does
* nothing .
*
2022-06-24 17:29:29 +00:00
* 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 .
2013-03-18 18:11:02 +00:00
*
* @ param [ in ] window The window to iconify .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2019-03-01 17:46:06 +00:00
* @ remark @ wayland Once a window is iconified , @ ref glfwRestoreWindow won ’ t
* be able to restore it . This is a design decision of the xdg - shell
2017-12-03 03:19:15 +00:00
* protocol .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_iconify
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwRestoreWindow
* @ sa @ ref glfwMaximizeWindow
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.1 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwIconifyWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Restores the specified window.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function restores the specified window if it was previously iconified
2015-10-13 10:50:59 +00:00
* ( minimized ) or maximized . If the window is already restored , this function
* does nothing .
2014-09-18 13:03:29 +00:00
*
2022-06-24 17:29:29 +00:00
* 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 .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window to restore .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_iconify
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwIconifyWindow
* @ sa @ ref glfwMaximizeWindow
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.1 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwRestoreWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2015-10-13 10:50:59 +00:00
/*! @brief Maximizes the specified window.
*
* This function maximizes the specified window if it was previously not
* maximized . If the window is already maximized , this function does nothing .
*
* If the specified window is a full screen window , this function does nothing .
*
* @ param [ in ] window The window to maximize .
*
2016-05-27 12:20:39 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2015-10-13 10:50:59 +00:00
* @ par Thread Safety
* This function may only be called from the main thread .
*
* @ sa @ ref window_iconify
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwIconifyWindow
* @ sa @ ref glfwRestoreWindow
2015-10-13 10:50:59 +00:00
*
* @ since Added in GLFW 3.2 .
*
* @ ingroup window
*/
GLFWAPI void glfwMaximizeWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Makes the specified window visible.
*
2014-09-18 13:03:29 +00:00
* This function makes the specified window visible if it was previously
2013-04-10 21:01:12 +00:00
* hidden . If the window is already visible or is in full screen mode , this
2012-11-23 10:41:53 +00:00
* function does nothing .
2012-11-22 15:38:24 +00:00
*
2018-05-29 13:51:36 +00:00
* By default , windowed mode windows are focused when shown
* Set the [ GLFW_FOCUS_ON_SHOW ] ( @ ref GLFW_FOCUS_ON_SHOW_hint ) window hint
* to change this behavior for all newly created windows , or change the
* behavior for an existing window with @ ref glfwSetWindowAttrib .
*
2013-03-18 18:11:02 +00:00
* @ param [ in ] window The window to make visible .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2021-12-27 00:31:38 +00:00
* @ 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 .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_hide
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwHideWindow
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwShowWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Hides the specified window.
*
2014-09-18 13:03:29 +00:00
* This function hides the specified window if it was previously visible . If
2013-04-10 21:01:12 +00:00
* the window is already hidden or is in full screen mode , this function does
2013-03-18 18:11:02 +00:00
* nothing .
*
* @ param [ in ] window The window to hide .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-11-22 18:08:30 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_hide
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwShowWindow
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwHideWindow ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2016-02-21 14:42:49 +00:00
/*! @brief Brings the specified window to front and sets input focus.
*
* This function brings the specified window to front and sets input focus .
* The window should already be visible and not iconified .
*
* By default , both windowed and full screen mode windows are focused when
2016-12-06 00:14:23 +00:00
* initially created . Set the [ GLFW_FOCUSED ] ( @ ref GLFW_FOCUSED_hint ) to
* disable this behavior .
2016-02-21 14:42:49 +00:00
*
2018-05-29 13:51:36 +00:00
* Also by default , windowed mode windows are focused when shown
* with @ ref glfwShowWindow . Set the
* [ GLFW_FOCUS_ON_SHOW ] ( @ ref GLFW_FOCUS_ON_SHOW_hint ) to disable this behavior .
*
2016-02-21 14:42:49 +00:00
* __Do not use this function__ to steal focus from other applications unless
* you are certain that is what the user wants . Focus stealing can be
* extremely disruptive .
*
2017-05-11 12:36:56 +00:00
* For a less disruptive way of getting the user ' s attention , see
* [ attention requests ] ( @ ref window_attention ) .
*
2016-02-21 14:42:49 +00:00
* @ param [ in ] window The window to give input focus .
*
2020-05-20 16:02:58 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-21 14:42:49 +00:00
*
2020-05-20 16:02:58 +00:00
* @ remark @ wayland It is not possible for an application to set the input
* focus . This function will emit @ ref GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-02-21 14:42:49 +00:00
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_focus
2017-05-11 12:36:56 +00:00
* @ sa @ ref window_attention
2016-02-21 14:42:49 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup window
*/
GLFWAPI void glfwFocusWindow ( GLFWwindow * window ) ;
2017-05-11 12:36:56 +00:00
/*! @brief Requests user attention to the specified window.
*
* This function requests user attention to the specified window . On
* platforms where this is not supported , attention is requested to the
* application as a whole .
2017-03-21 13:02:57 +00:00
*
2017-05-11 12:36:56 +00:00
* Once the user has given attention , usually by focusing the window or
* application , the system will end the request automatically .
2017-03-21 13:02:57 +00:00
*
2017-05-11 12:36:56 +00:00
* @ param [ in ] window The window to request attention to .
2017-03-21 13:02:57 +00:00
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2017-05-11 12:36:56 +00:00
* @ remark @ macos Attention is requested to the application as a whole , not the
* specific window .
2017-03-21 13:02:57 +00:00
*
* @ thread_safety This function must only be called from the main thread .
*
2017-05-11 12:36:56 +00:00
* @ sa @ ref window_attention
*
2017-03-21 13:02:57 +00:00
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI void glfwRequestWindowAttention ( GLFWwindow * window ) ;
2013-04-10 21:01:12 +00:00
/*! @brief Returns the monitor that the window uses for full screen mode.
2013-03-18 18:11:02 +00:00
*
* This function returns the handle of the monitor that the specified window is
2013-04-10 21:01:12 +00:00
* in full screen on .
2013-03-18 18:11:02 +00:00
*
2012-11-27 16:07:28 +00:00
* @ param [ in ] window The window to query .
2016-08-17 14:48:22 +00:00
* @ return The monitor , or ` NULL ` if the window is in windowed mode or an
* [ error ] ( @ ref error_handling ) occurred .
2014-09-18 13:03:29 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_monitor
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowMonitor
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2012-11-27 16:07:28 +00:00
* @ ingroup window
2012-11-27 15:55:04 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI GLFWmonitor * glfwGetWindowMonitor ( GLFWwindow * window ) ;
2012-11-27 15:55:04 +00:00
2016-02-23 11:26:42 +00:00
/*! @brief Sets the mode, monitor, video mode and placement of a window.
*
* This function sets the monitor that the window uses for full screen mode or ,
* if the monitor is ` NULL ` , makes it windowed mode .
*
* When setting a monitor , this function updates the width , height and refresh
* rate of the desired video mode and switches to the video mode closest to it .
* The window position is ignored when setting a monitor .
*
* When the monitor is ` NULL ` , the position , width and height are used to
2019-01-22 19:54:16 +00:00
* place the window content area . The refresh rate is ignored when no monitor
2016-02-23 11:26:42 +00:00
* is specified .
*
* If you only wish to update the resolution of a full screen window or the
* size of a windowed mode window , see @ ref glfwSetWindowSize .
*
* When a window transitions from full screen to windowed mode , this function
* restores any previous window settings such as whether it is decorated ,
2016-10-16 14:52:39 +00:00
* floating , resizable , has size or aspect ratio limits , etc .
2016-02-23 11:26:42 +00:00
*
* @ 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
2019-01-22 19:54:16 +00:00
* content area .
2016-02-23 11:26:42 +00:00
* @ param [ in ] ypos The desired y - coordinate of the upper - left corner of the
2019-01-22 19:54:16 +00:00
* 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
2016-02-23 11:26:42 +00:00
* area or video mode .
2016-05-22 12:25:04 +00:00
* @ param [ in ] refreshRate The desired refresh rate , in Hz , of the video mode ,
* or ` GLFW_DONT_CARE ` .
2016-02-23 11:26:42 +00:00
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-10-28 04:20:20 +00:00
* @ remark The OpenGL or OpenGL ES context will not be destroyed or otherwise
* affected by any resizing or mode switching , although you may need to update
* your viewport if the framebuffer size has changed .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland The desired window position is ignored , as there is no way
* for an application to set this property .
*
* @ remark @ wayland Setting the window to full screen will not attempt to
* change the mode , no matter what the requested size or refresh rate .
*
2016-02-23 11:26:42 +00:00
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_monitor
* @ sa @ ref window_full_screen
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetWindowMonitor
* @ sa @ ref glfwSetWindowSize
2016-02-23 11:26:42 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowMonitor ( GLFWwindow * window , GLFWmonitor * monitor , int xpos , int ypos , int width , int height , int refreshRate ) ;
2013-05-27 13:30:32 +00:00
/*! @brief Returns an attribute of the specified window.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function returns the value of an attribute of the specified window or
* its OpenGL or OpenGL ES context .
2013-03-18 18:11:02 +00:00
*
2012-11-23 10:41:53 +00:00
* @ param [ in ] window The window to query .
2013-05-27 15:10:34 +00:00
* @ param [ in ] attrib The [ window attribute ] ( @ ref window_attribs ) whose value to
* return .
2014-09-18 13:03:29 +00:00
* @ return The value of the attribute , or zero if an
* [ error ] ( @ ref error_handling ) occurred .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark Framebuffer related hints are not window attributes . See @ ref
2015-04-07 12:34:12 +00:00
* window_attribs_fb for more information .
*
2016-01-31 20:32:14 +00:00
* @ remark Zero is a valid value for many window and context related
2015-04-07 12:34:12 +00:00
* attributes so you cannot use a return value of zero as an indication of
* errors . However , this function should not fail as long as it is passed
* valid arguments and the library has been [ initialized ] ( @ ref intro_init ) .
*
2022-06-24 17:29:29 +00:00
* @ remark @ wayland The Wayland protocol provides no way to check whether a
* window is iconfied , so @ ref GLFW_ICONIFIED always returns ` GLFW_FALSE ` .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_attribs
2016-09-29 23:52:22 +00:00
* @ sa @ ref glfwSetWindowAttrib
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwGetWindowParam ` and
2015-01-18 00:55:25 +00:00
* ` glfwGetGLVersion ` .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-05-27 13:30:32 +00:00
GLFWAPI int glfwGetWindowAttrib ( GLFWwindow * window , int attrib ) ;
2012-11-22 15:38:24 +00:00
2016-09-29 23:52:22 +00:00
/*! @brief Sets an attribute of the specified window.
*
* This function sets the value of an attribute of the specified window .
*
* The supported attributes are [ GLFW_DECORATED ] ( @ ref GLFW_DECORATED_attrib ) ,
* [ GLFW_RESIZABLE ] ( @ ref GLFW_RESIZABLE_attrib ) ,
2018-05-29 13:51:36 +00:00
* [ GLFW_FLOATING ] ( @ ref GLFW_FLOATING_attrib ) ,
* [ GLFW_AUTO_ICONIFY ] ( @ ref GLFW_AUTO_ICONIFY_attrib ) and
* [ GLFW_FOCUS_ON_SHOW ] ( @ ref GLFW_FOCUS_ON_SHOW_attrib ) .
2019-09-30 12:44:43 +00:00
* [ GLFW_MOUSE_PASSTHROUGH ] ( @ ref GLFW_MOUSE_PASSTHROUGH_attrib )
2016-09-29 23:52:22 +00:00
*
* Some of these attributes are ignored for full screen windows . The new
* value will take effect if the window is later made windowed .
*
* Some of these attributes are ignored for windowed mode windows . The new
* value will take effect if the window is later made full screen .
*
* @ param [ in ] window The window to set the attribute for .
* @ param [ in ] attrib A supported window attribute .
* @ param [ in ] value ` GLFW_TRUE ` or ` GLFW_FALSE ` .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2022-09-20 15:03:30 +00:00
* GLFW_INVALID_ENUM , @ ref GLFW_INVALID_VALUE , @ ref GLFW_PLATFORM_ERROR and @ ref
* GLFW_FEATURE_UNAVAILABLE .
2016-09-29 23:52:22 +00:00
*
* @ remark Calling @ ref glfwGetWindowAttrib will always return the latest
* value , even if that value is ignored by the current mode of the window .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_attribs
* @ sa @ ref glfwGetWindowAttrib
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
GLFWAPI void glfwSetWindowAttrib ( GLFWwindow * window , int attrib , int value ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the user pointer of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the user - defined pointer of the specified window . The
* current value is retained until the window is destroyed . The initial value
* is ` NULL ` .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose pointer to set .
* @ param [ in ] pointer The new value .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_userptr
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetWindowUserPointer
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSetWindowUserPointer ( GLFWwindow * window , void * pointer ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Returns the user pointer of the specified window.
2013-03-18 18:11:02 +00:00
*
* This function returns the current value of the user - defined pointer of the
* specified window . The initial value is ` NULL ` .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose pointer to return .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_userptr
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetWindowUserPointer
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void * glfwGetWindowUserPointer ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2012-11-30 12:56:42 +00:00
/*! @brief Sets the position callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the position callback of the specified window , which is
2017-10-29 15:27:15 +00:00
* called when the window is moved . The callback is provided with the
2019-01-22 19:54:16 +00:00
* position , in screen coordinates , of the upper - left corner of the content
* area of the window .
2013-03-18 18:11:02 +00:00
*
2012-11-30 12:56:42 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-30 12:56:42 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland This callback will never be called , as there is no way for
* an application to know its global position .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_pos
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2012-11-30 12:56:42 +00:00
* @ ingroup window
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback ( GLFWwindow * window , GLFWwindowposfun callback ) ;
2012-11-30 12:56:42 +00:00
2012-11-22 15:38:24 +00:00
/*! @brief Sets the size callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* 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 ,
2019-01-22 19:54:16 +00:00
* in screen coordinates , of the content area of the window .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_size
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle parameter and return value .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback ( GLFWwindow * window , GLFWwindowsizefun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the close callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the close callback of the specified window , which is
* called when the user attempts to close the window , for example by clicking
* the close widget in the title bar .
*
* The close flag is set before this callback is called , but you can modify it
* at any time with @ ref glfwSetWindowShouldClose .
*
2013-06-05 15:53:13 +00:00
* The close callback is not triggered by @ ref glfwDestroyWindow .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ callback_signature
* @ code
* void function_name ( GLFWwindow * window )
* @ endcode
* For more information about the callback parameters , see the
* [ function pointer type ] ( @ ref GLFWwindowclosefun ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-10-19 22:50:54 +00:00
* @ remark @ macos Selecting Quit from the application menu will trigger the
* close callback for all windows .
2013-03-18 18:11:02 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_close
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.5 .
* @ glfw3 Added window handle parameter and return value .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback ( GLFWwindow * window , GLFWwindowclosefun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the refresh callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the refresh callback of the specified window , which is
2019-01-22 19:54:16 +00:00
* called when the content area of the window needs to be redrawn , for example
2013-03-18 18:11:02 +00:00
* if the window has been exposed after having been covered by another window .
*
2016-10-16 14:52:39 +00:00
* On compositing window systems such as Aero , Compiz , Aqua or Wayland , where
* the window contents are saved off - screen , this callback may be called only
* very infrequently or never at all .
2013-04-10 21:01:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ callback_signature
* @ code
* void function_name ( GLFWwindow * window ) ;
* @ endcode
* For more information about the callback parameters , see the
* [ function pointer type ] ( @ ref GLFWwindowrefreshfun ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref window_refresh
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.5 .
* @ glfw3 Added window handle parameter and return value .
2012-12-02 14:47:10 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback ( GLFWwindow * window , GLFWwindowrefreshfun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the focus callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the focus callback of the specified window , which is
2015-01-18 00:55:25 +00:00
* called when the window gains or loses input focus .
2013-03-18 18:11:02 +00:00
*
2015-01-18 00:55:25 +00:00
* After the focus callback is called for a window that lost input focus ,
* synthetic key and mouse button release events will be generated for all such
* that had been pressed . For more information , see @ ref glfwSetKeyCallback
* and @ ref glfwSetMouseButtonCallback .
2013-04-24 17:49:46 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_focus
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback ( GLFWwindow * window , GLFWwindowfocusfun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the iconify callback for the specified window.
2013-03-18 18:11:02 +00:00
*
* This function sets the iconification callback of the specified window , which
* is called when the window is iconified or restored .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2012-11-22 15:38:24 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_iconify
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback ( GLFWwindow * window , GLFWwindowiconifyfun callback ) ;
2010-09-09 16:15:32 +00:00
2016-06-16 11:09:28 +00:00
/*! @brief Sets the maximize callback for the specified window.
*
* This function sets the maximization callback of the specified window , which
* is called when the window is maximized or restored .
*
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2016-06-16 11:09:28 +00:00
* callback .
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-06-16 11:09:28 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_maximize
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowmaximizefun glfwSetWindowMaximizeCallback ( GLFWwindow * window , GLFWwindowmaximizefun callback ) ;
2016-06-16 11:09:28 +00:00
2013-06-03 10:51:57 +00:00
/*! @brief Sets the framebuffer resize callback for the specified window.
*
* This function sets the framebuffer resize callback of the specified window ,
* which is called when the framebuffer of the specified window is resized .
*
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-06-03 10:51:57 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-06-03 10:51:57 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref window_fbsize
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2013-06-03 10:51:57 +00:00
* @ ingroup window
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback ( GLFWwindow * window , GLFWframebuffersizefun callback ) ;
2013-06-03 10:51:57 +00:00
2017-12-11 20:26:40 +00:00
/*! @brief Sets the window content scale callback for the specified window.
*
* This function sets the window content scale callback of the specified window ,
* which is called when the content scale of the specified window changes .
*
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2017-12-11 20:26:40 +00:00
* callback .
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2017-12-11 20:26:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref window_scale
* @ sa @ ref glfwGetWindowContentScale
*
* @ since Added in version 3.3 .
*
* @ ingroup window
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback ( GLFWwindow * window , GLFWwindowcontentscalefun callback ) ;
2017-12-11 20:26:40 +00:00
2012-11-22 15:38:24 +00:00
/*! @brief Processes all pending events.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function processes only those events that are already in the event
* queue and then returns immediately . Processing events will cause the window
* and input callbacks associated with those events to be called .
2013-06-05 15:53:13 +00:00
*
2014-09-18 13:03:29 +00:00
* On some platforms , a window move , resize or menu operation will cause event
* processing to block . This is due to how event processing is designed on
* those platforms . You can use the
* [ window refresh callback ] ( @ ref window_refresh ) to redraw the contents of
* your window when necessary during such operations .
2013-03-12 18:17:07 +00:00
*
2016-12-06 22:26:53 +00:00
* Do not assume that callbacks you set will _only_ be called in response to
* event processing functions like this one . While it is necessary to poll for
* events , window systems that require GLFW to register callbacks of its own
* can pass events to GLFW in response to many window system function calls .
* GLFW will pass those events on to the application callbacks before
* returning .
2013-12-04 18:12:24 +00:00
*
2014-09-18 13:03:29 +00:00
* Event processing is not required for joystick input to work .
2012-11-22 18:08:30 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ reentrancy This function must not be called from a callback .
2013-02-14 17:49:03 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-04-16 00:02:22 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref events
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwWaitEvents
* @ sa @ ref glfwWaitEventsTimeout
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2010-09-08 14:40:43 +00:00
GLFWAPI void glfwPollEvents ( void ) ;
2012-11-22 15:38:24 +00:00
2014-09-18 13:03:29 +00:00
/*! @brief Waits until events are queued and processes them.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function puts the calling thread to sleep until at least one event is
* available in the event queue . Once one or more events are available ,
* it behaves exactly like @ ref glfwPollEvents , i . e . the events in the queue
* are processed and the function then returns immediately . Processing events
* will cause the window and input callbacks associated with those events to be
* called .
2013-04-16 00:02:22 +00:00
*
* Since not all events are associated with callbacks , this function may return
* without a callback having been called even if you are monitoring all
* callbacks .
*
2014-09-18 13:03:29 +00:00
* On some platforms , a window move , resize or menu operation will cause event
* processing to block . This is due to how event processing is designed on
* those platforms . You can use the
* [ window refresh callback ] ( @ ref window_refresh ) to redraw the contents of
* your window when necessary during such operations .
2012-11-22 15:38:24 +00:00
*
2016-12-06 22:26:53 +00:00
* Do not assume that callbacks you set will _only_ be called in response to
* event processing functions like this one . While it is necessary to poll for
* events , window systems that require GLFW to register callbacks of its own
* can pass events to GLFW in response to many window system function calls .
* GLFW will pass those events on to the application callbacks before
* returning .
2015-01-18 00:55:25 +00:00
*
2014-09-18 13:03:29 +00:00
* Event processing is not required for joystick input to work .
2012-11-22 18:08:30 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ reentrancy This function must not be called from a callback .
2014-12-17 00:31:36 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref events
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwPollEvents
* @ sa @ ref glfwWaitEventsTimeout
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.5 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2010-09-08 14:40:43 +00:00
GLFWAPI void glfwWaitEvents ( void ) ;
2010-09-09 16:15:32 +00:00
2016-02-02 20:11:16 +00:00
/*! @brief Waits with timeout until events are queued and processes them.
*
* This function puts the calling thread to sleep until at least one event is
* available in the event queue , or until the specified timeout is reached . If
* one or more events are available , it behaves exactly like @ ref
* glfwPollEvents , i . e . the events in the queue are processed and the function
* then returns immediately . Processing events will cause the window and input
* callbacks associated with those events to be called .
*
* The timeout value must be a positive finite number .
*
* Since not all events are associated with callbacks , this function may return
* without a callback having been called even if you are monitoring all
* callbacks .
*
* On some platforms , a window move , resize or menu operation will cause event
* processing to block . This is due to how event processing is designed on
* those platforms . You can use the
* [ window refresh callback ] ( @ ref window_refresh ) to redraw the contents of
* your window when necessary during such operations .
*
2016-12-06 22:26:53 +00:00
* Do not assume that callbacks you set will _only_ be called in response to
* event processing functions like this one . While it is necessary to poll for
* events , window systems that require GLFW to register callbacks of its own
* can pass events to GLFW in response to many window system function calls .
* GLFW will pass those events on to the application callbacks before
* returning .
2016-02-02 20:11:16 +00:00
*
* Event processing is not required for joystick input to work .
*
* @ param [ in ] timeout The maximum amount of time , in seconds , to wait .
*
2018-09-13 14:23:44 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2018-12-13 19:33:17 +00:00
* GLFW_INVALID_VALUE and @ ref GLFW_PLATFORM_ERROR .
2018-09-13 14:23:44 +00:00
*
2016-02-02 20:11:16 +00:00
* @ reentrancy This function must not be called from a callback .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref events
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwPollEvents
* @ sa @ ref glfwWaitEvents
2016-02-02 20:11:16 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup window
*/
GLFWAPI void glfwWaitEventsTimeout ( double timeout ) ;
2014-02-10 17:16:58 +00:00
/*! @brief Posts an empty event to the event queue.
*
2014-09-18 13:03:29 +00:00
* This function posts an empty event from the current thread to the event
2016-07-06 11:06:59 +00:00
* queue , causing @ ref glfwWaitEvents or @ ref glfwWaitEventsTimeout to return .
2014-02-10 17:16:58 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2014-02-10 17:16:58 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref events
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwWaitEvents
* @ sa @ ref glfwWaitEventsTimeout
2014-02-10 17:16:58 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-09-18 13:03:29 +00:00
*
2014-02-10 17:16:58 +00:00
* @ ingroup window
*/
GLFWAPI void glfwPostEmptyEvent ( void ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Returns the value of an input option for the specified window.
2014-10-02 15:35:10 +00:00
*
* This function returns the value of an input option for the specified window .
2017-11-29 19:42:37 +00:00
* The mode must be one of @ ref GLFW_CURSOR , @ ref GLFW_STICKY_KEYS ,
2018-12-14 02:08:25 +00:00
* @ ref GLFW_STICKY_MOUSE_BUTTONS , @ ref GLFW_LOCK_KEY_MODS or
2019-02-11 18:10:20 +00:00
* @ ref GLFW_RAW_MOUSE_MOTION .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The window to query .
2017-11-29 19:42:37 +00:00
* @ param [ in ] mode One of ` GLFW_CURSOR ` , ` GLFW_STICKY_KEYS ` ,
2019-02-11 18:10:20 +00:00
* ` GLFW_STICKY_MOUSE_BUTTONS ` , ` GLFW_LOCK_KEY_MODS ` or
* ` GLFW_RAW_MOUSE_MOTION ` .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetInputMode
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI int glfwGetInputMode ( GLFWwindow * window , int mode ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets an input option for the specified window.
2014-10-02 15:35:10 +00:00
*
* This function sets an input mode option for the specified window . The mode
2017-11-29 19:42:37 +00:00
* must be one of @ ref GLFW_CURSOR , @ ref GLFW_STICKY_KEYS ,
2018-12-14 02:08:25 +00:00
* @ ref GLFW_STICKY_MOUSE_BUTTONS , @ ref GLFW_LOCK_KEY_MODS or
2019-02-11 18:10:20 +00:00
* @ ref GLFW_RAW_MOUSE_MOTION .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* If the mode is ` GLFW_CURSOR ` , the value must be one of the following cursor
2013-03-12 18:39:36 +00:00
* modes :
2013-04-07 11:46:38 +00:00
* - ` GLFW_CURSOR_NORMAL ` makes the cursor visible and behaving normally .
2019-01-22 19:54:16 +00:00
* - ` 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 .
2013-12-05 02:27:12 +00:00
* - ` GLFW_CURSOR_DISABLED ` hides and grabs the cursor , providing virtual
* and unlimited cursor movement . This is useful for implementing for
* example 3 D camera controls .
2019-12-03 16:58:20 +00:00
* - ` GLFW_CURSOR_CAPTURED ` makes the cursor visible and confines it to the
* content area of the window .
2013-03-12 18:39:36 +00:00
*
2015-08-23 17:30:04 +00:00
* If the mode is ` GLFW_STICKY_KEYS ` , the value must be either ` GLFW_TRUE ` to
* enable sticky keys , or ` GLFW_FALSE ` to disable it . If sticky keys are
2014-10-02 15:35:10 +00:00
* enabled , a key press will ensure that @ ref glfwGetKey returns ` GLFW_PRESS `
* the next time it is called even if the key had been released before the
* call . This is useful when you are only interested in whether keys have been
* pressed but not when or in which order .
2013-03-12 18:39:36 +00:00
*
2014-09-18 13:03:29 +00:00
* If the mode is ` GLFW_STICKY_MOUSE_BUTTONS ` , the value must be either
2015-08-23 17:30:04 +00:00
* ` GLFW_TRUE ` to enable sticky mouse buttons , or ` GLFW_FALSE ` to disable it .
* If sticky mouse buttons are enabled , a mouse button press will ensure that
* @ ref glfwGetMouseButton returns ` GLFW_PRESS ` the next time it is called even
* if the mouse button had been released before the call . This is useful when
* you are only interested in whether mouse buttons have been pressed but not
* when or in which order .
2014-10-02 15:35:10 +00:00
*
2017-11-29 19:42:37 +00:00
* If the mode is ` GLFW_LOCK_KEY_MODS ` , the value must be either ` GLFW_TRUE ` to
* enable lock key modifier bits , or ` GLFW_FALSE ` to disable them . If enabled ,
* callbacks that receive modifier bits will also have the @ ref
* 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 .
*
2019-02-11 18:10:20 +00:00
* 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 ,
2020-05-20 16:02:58 +00:00
* attempting to set this will emit @ ref GLFW_FEATURE_UNAVAILABLE . Call @ ref
2019-02-11 18:10:20 +00:00
* glfwRawMouseMotionSupported to check for support .
2018-12-14 02:08:25 +00:00
*
2014-10-02 15:35:10 +00:00
* @ param [ in ] window The window whose input mode to set .
2017-11-29 19:42:37 +00:00
* @ param [ in ] mode One of ` GLFW_CURSOR ` , ` GLFW_STICKY_KEYS ` ,
2019-02-11 18:10:20 +00:00
* ` GLFW_STICKY_MOUSE_BUTTONS ` , ` GLFW_LOCK_KEY_MODS ` or
* ` GLFW_RAW_MOUSE_MOTION ` .
2014-10-02 15:35:10 +00:00
* @ param [ in ] value The new value of the specified input mode .
2013-03-12 18:39:36 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2020-05-20 16:02:58 +00:00
* GLFW_INVALID_ENUM , @ ref GLFW_PLATFORM_ERROR and @ ref
* GLFW_FEATURE_UNAVAILABLE ( see above ) .
2016-02-04 23:51:40 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetInputMode
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwEnable ` and ` glfwDisable ` .
2014-09-18 13:03:29 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSetInputMode ( GLFWwindow * window , int mode , int value ) ;
2012-11-22 15:38:24 +00:00
2019-02-11 18:10:20 +00:00
/*! @brief Returns whether raw mouse motion is supported.
2018-12-14 02:08:25 +00:00
*
2019-02-11 18:10:20 +00:00
* 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 .
2018-12-14 02:08:25 +00:00
*
2019-02-11 18:10:20 +00:00
* 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 3 D camera . Because
* of this , raw mouse motion is only provided when the cursor is disabled .
2018-12-14 02:08:25 +00:00
*
2019-02-11 18:10:20 +00:00
* @ return ` GLFW_TRUE ` if raw mouse motion is supported on the current machine ,
* or ` GLFW_FALSE ` otherwise .
2018-12-14 02:08:25 +00:00
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2019-02-11 18:10:20 +00:00
* @ thread_safety This function must only be called from the main thread .
2018-12-14 02:08:25 +00:00
*
2019-02-11 18:10:20 +00:00
* @ sa @ ref raw_mouse_motion
2018-12-14 02:08:25 +00:00
* @ sa @ ref glfwSetInputMode
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
2019-02-11 18:10:20 +00:00
GLFWAPI int glfwRawMouseMotionSupported ( void ) ;
2018-12-14 02:08:25 +00:00
2017-04-04 16:05:36 +00:00
/*! @brief Returns the layout-specific name of the specified printable key.
2015-07-02 12:24:50 +00:00
*
2017-04-04 16:05:36 +00:00
* This function returns the name of the specified printable key , encoded as
* UTF - 8. This is typically the character that key would produce without any
* modifier keys , intended for displaying key bindings to the user . For dead
* keys , it is typically the diacritic it would add to a character .
2016-02-22 10:54:56 +00:00
*
2017-02-28 21:29:10 +00:00
* __Do not use this function__ for [ text input ] ( @ ref input_char ) . You will
* break text input for many languages even if it happens to work for yours .
2016-02-22 10:54:56 +00:00
*
2017-02-28 21:29:10 +00:00
* If the key is ` GLFW_KEY_UNKNOWN ` , the scancode is used to identify the key ,
* otherwise the scancode is ignored . If you specify a non - printable key , or
* ` GLFW_KEY_UNKNOWN ` and a scancode that maps to a non - printable key , this
* function returns ` NULL ` but does not emit an error .
*
* This behavior allows you to always pass in the arguments in the
2016-02-22 10:54:56 +00:00
* [ key callback ] ( @ ref input_key ) without modification .
*
* The printable keys are :
* - ` GLFW_KEY_APOSTROPHE `
* - ` GLFW_KEY_COMMA `
* - ` GLFW_KEY_MINUS `
* - ` GLFW_KEY_PERIOD `
* - ` GLFW_KEY_SLASH `
* - ` GLFW_KEY_SEMICOLON `
* - ` GLFW_KEY_EQUAL `
* - ` GLFW_KEY_LEFT_BRACKET `
* - ` GLFW_KEY_RIGHT_BRACKET `
* - ` GLFW_KEY_BACKSLASH `
* - ` GLFW_KEY_WORLD_1 `
* - ` GLFW_KEY_WORLD_2 `
* - ` GLFW_KEY_0 ` to ` GLFW_KEY_9 `
* - ` GLFW_KEY_A ` to ` GLFW_KEY_Z `
* - ` GLFW_KEY_KP_0 ` to ` GLFW_KEY_KP_9 `
* - ` GLFW_KEY_KP_DECIMAL `
* - ` GLFW_KEY_KP_DIVIDE `
* - ` GLFW_KEY_KP_MULTIPLY `
* - ` GLFW_KEY_KP_SUBTRACT `
* - ` GLFW_KEY_KP_ADD `
* - ` GLFW_KEY_KP_EQUAL `
2015-07-02 12:24:50 +00:00
*
2017-02-28 21:29:10 +00:00
* Names for printable keys depend on keyboard layout , while names for
* non - printable keys are the same across layouts but depend on the application
* language and should be localized along with other user interface text .
*
2015-07-02 12:24:50 +00:00
* @ param [ in ] key The key to query , or ` GLFW_KEY_UNKNOWN ` .
* @ param [ in ] scancode The scancode of the key to query .
2017-04-04 16:05:36 +00:00
* @ return The UTF - 8 encoded , layout - specific name of the key , or ` NULL ` .
2015-07-02 12:24:50 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2019-08-22 19:31:46 +00:00
* @ remark The contents of the returned string may change when a keyboard
* layout change event is received .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned string is allocated and freed by GLFW . You
2019-08-22 19:31:46 +00:00
* should not free it yourself . It is valid until the library is terminated .
2015-07-02 12:24:50 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2015-07-02 12:24:50 +00:00
*
* @ sa @ ref input_key_name
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.2 .
2015-07-02 12:24:50 +00:00
*
* @ ingroup input
*/
GLFWAPI const char * glfwGetKeyName ( int key , int scancode ) ;
2016-12-06 22:26:53 +00:00
/*! @brief Returns the platform-specific scancode of the specified key.
2016-08-11 17:11:40 +00:00
*
2016-12-06 22:26:53 +00:00
* This function returns the platform - specific scancode of the specified key .
2016-08-11 17:11:40 +00:00
*
* If the key is ` GLFW_KEY_UNKNOWN ` or does not exist on the keyboard this
* method will return ` - 1 ` .
*
2016-12-06 22:26:53 +00:00
* @ param [ in ] key Any [ named key ] ( @ ref keys ) .
* @ return The platform - specific scancode for the key , or ` - 1 ` if an
2016-09-06 13:40:31 +00:00
* [ error ] ( @ ref error_handling ) occurred .
2016-08-11 17:11:40 +00:00
*
2016-09-06 13:40:31 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
2016-08-11 17:11:40 +00:00
*
* @ thread_safety This function may be called from any thread .
*
2016-12-06 22:26:53 +00:00
* @ sa @ ref input_key
2016-08-11 17:11:40 +00:00
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
2016-09-06 13:40:31 +00:00
GLFWAPI int glfwGetKeyScancode ( int key ) ;
2016-08-11 17:11:40 +00:00
2012-11-22 15:38:24 +00:00
/*! @brief Returns the last reported state of a keyboard key for the specified
* window .
2013-03-18 18:11:02 +00:00
*
* This function returns the last state reported for the specified key to the
* specified window . The returned state is one of ` GLFW_PRESS ` or
2022-06-28 21:19:30 +00:00
* ` GLFW_RELEASE ` . The action ` GLFW_REPEAT ` is only reported to the key callback .
2013-03-18 18:11:02 +00:00
*
2017-02-20 12:45:11 +00:00
* If the @ ref GLFW_STICKY_KEYS input mode is enabled , this function returns
2014-09-18 13:03:29 +00:00
* ` GLFW_PRESS ` the first time you call it for a key that was pressed , even if
* that key has already been released .
2013-03-18 18:11:02 +00:00
*
* The key functions deal with physical keys , with [ key tokens ] ( @ ref keys )
* named after their use on the standard US keyboard layout . If you want to
* input text , use the Unicode character callback instead .
*
2014-04-23 11:30:11 +00:00
* The [ modifier key bit masks ] ( @ ref mods ) are not key tokens and cannot be
* used with this function .
*
2015-07-02 12:24:50 +00:00
* __Do not use this function__ to implement [ text input ] ( @ ref input_char ) .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The desired window .
2014-09-18 13:03:29 +00:00
* @ param [ in ] key The desired [ keyboard key ] ( @ ref keys ) . ` GLFW_KEY_UNKNOWN ` is
* not a valid key for this function .
2013-03-12 14:33:05 +00:00
* @ return One of ` GLFW_PRESS ` or ` GLFW_RELEASE ` .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_key
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2013-05-30 15:19:12 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2013-01-05 20:13:28 +00:00
GLFWAPI int glfwGetKey ( GLFWwindow * window , int key ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Returns the last reported state of a mouse button for the specified
* window .
2013-03-18 18:11:02 +00:00
*
* This function returns the last state reported for the specified mouse button
2014-09-18 13:03:29 +00:00
* to the specified window . The returned state is one of ` GLFW_PRESS ` or
2015-01-11 22:33:14 +00:00
* ` GLFW_RELEASE ` .
2013-03-18 18:11:02 +00:00
*
2017-02-20 12:45:11 +00:00
* If the @ ref GLFW_STICKY_MOUSE_BUTTONS input mode is enabled , this function
2018-08-06 15:13:24 +00:00
* 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 .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The desired window .
2013-03-12 14:33:05 +00:00
* @ param [ in ] button The desired [ mouse button ] ( @ ref buttons ) .
* @ return One of ` GLFW_PRESS ` or ` GLFW_RELEASE ` .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_mouse_button
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-03-24 10:58:35 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2013-01-05 20:13:28 +00:00
GLFWAPI int glfwGetMouseButton ( GLFWwindow * window , int button ) ;
2012-11-22 15:38:24 +00:00
2019-01-22 19:54:16 +00:00
/*! @brief Retrieves the position of the cursor relative to the content area of
2014-02-11 17:24:01 +00:00
* the window .
2013-03-18 18:11:02 +00:00
*
2014-02-11 17:24:01 +00:00
* This function returns the position of the cursor , in screen coordinates ,
2019-01-22 19:54:16 +00:00
* relative to the upper - left corner of the content area of the specified
2014-02-11 17:24:01 +00:00
* window .
2013-03-18 18:11:02 +00:00
*
2013-04-26 15:20:31 +00:00
* If the cursor is disabled ( with ` GLFW_CURSOR_DISABLED ` ) then the cursor
* position is unbounded and limited only by the minimum and maximum values of
* a ` double ` .
2013-04-16 00:02:22 +00:00
*
2013-04-25 16:03:15 +00:00
* The coordinate can be converted to their integer equivalents with the
* ` floor ` function . Casting directly to an integer type works for positive
* coordinates , but fails for negative ones .
*
2014-09-18 13:03:29 +00:00
* Any or all of the position arguments may be ` NULL ` . If an error occurs , all
* non - ` NULL ` position arguments will be set to zero .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The desired window .
2013-06-05 15:53:13 +00:00
* @ param [ out ] xpos Where to store the cursor x - coordinate , relative to the
2019-01-22 19:54:16 +00:00
* left edge of the content area , or ` NULL ` .
2013-06-05 15:53:13 +00:00
* @ param [ out ] ypos Where to store the cursor y - coordinate , relative to the to
2019-01-22 19:54:16 +00:00
* top edge of the content area , or ` NULL ` .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetCursorPos
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwGetMousePos ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-04-04 14:16:21 +00:00
GLFWAPI void glfwGetCursorPos ( GLFWwindow * window , double * xpos , double * ypos ) ;
2012-11-22 15:38:24 +00:00
2019-01-22 19:54:16 +00:00
/*! @brief Sets the position of the cursor, relative to the content area of the
2013-09-28 20:12:50 +00:00
* window .
2013-03-18 18:11:02 +00:00
*
2013-09-28 20:12:50 +00:00
* This function sets the position , in screen coordinates , of the cursor
2019-01-22 19:54:16 +00:00
* relative to the upper - left corner of the content area of the specified
2015-01-18 00:55:25 +00:00
* window . The window must have input focus . If the window does not have
* input focus when this function is called , it fails silently .
2013-03-18 18:11:02 +00:00
*
2015-01-01 17:41:22 +00:00
* __Do not use this function__ to implement things like camera controls . GLFW
* already provides the ` GLFW_CURSOR_DISABLED ` cursor mode that hides the
* cursor , transparently re - centers it and provides unconstrained cursor
* motion . See @ ref glfwSetInputMode for more information .
*
* If the cursor mode is ` GLFW_CURSOR_DISABLED ` then the cursor position is
* unconstrained and limited only by the minimum and maximum values of
2013-04-26 15:20:31 +00:00
* a ` double ` .
2013-04-16 00:02:22 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] window The desired window .
* @ param [ in ] xpos The desired x - coordinate , relative to the left edge of the
2019-01-22 19:54:16 +00:00
* content area .
2012-11-22 15:38:24 +00:00
* @ param [ in ] ypos The desired y - coordinate , relative to the top edge of the
2019-01-22 19:54:16 +00:00
* content area .
2012-11-22 15:38:24 +00:00
*
2022-09-20 15:03:30 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_PLATFORM_ERROR and @ ref GLFW_FEATURE_UNAVAILABLE ( see remarks ) .
2016-02-04 23:51:40 +00:00
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland This function will only work when the cursor mode is
2022-09-20 15:03:30 +00:00
* ` GLFW_CURSOR_DISABLED ` , otherwise it will emit @ ref GLFW_FEATURE_UNAVAILABLE .
2016-10-16 14:52:39 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_pos
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetCursorPos
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwSetMousePos ` .
2014-09-18 13:03:29 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-04-04 14:16:21 +00:00
GLFWAPI void glfwSetCursorPos ( GLFWwindow * window , double xpos , double ypos ) ;
2012-11-22 15:38:24 +00:00
2014-09-02 14:52:16 +00:00
/*! @brief Creates a custom cursor.
2014-04-23 11:30:11 +00:00
*
2015-01-18 00:55:25 +00:00
* Creates a new custom cursor image that can be set for a window with @ ref
* glfwSetCursor . The cursor can be destroyed with @ ref glfwDestroyCursor .
* Any remaining cursors are destroyed by @ ref glfwTerminate .
*
2015-08-17 19:04:19 +00:00
* The pixels are 32 - bit , little - endian , non - premultiplied RGBA , i . e . eight
2017-06-06 16:17:58 +00:00
* bits per channel with the red channel first . They are arranged canonically
* as packed sequential rows , starting from the top - left corner .
2014-04-23 11:30:11 +00:00
*
2015-01-18 00:55:25 +00:00
* The cursor hotspot is specified in pixels , relative to the upper - left corner
* of the cursor image . Like all other coordinate systems in GLFW , the X - axis
* points to the right and the Y - axis points down .
2013-12-04 13:19:22 +00:00
*
2014-02-23 15:43:17 +00:00
* @ param [ in ] image The desired cursor image .
2015-01-18 00:55:25 +00:00
* @ param [ in ] xhot The desired x - coordinate , in pixels , of the cursor hotspot .
* @ param [ in ] yhot The desired y - coordinate , in pixels , of the cursor hotspot .
* @ return The handle of the created cursor , or ` NULL ` if an
2014-09-18 13:03:29 +00:00
* [ error ] ( @ ref error_handling ) occurred .
*
2022-03-15 20:22:49 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_VALUE and @ ref GLFW_PLATFORM_ERROR .
2016-02-04 23:51:40 +00:00
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The specified image data is copied before this function
* returns .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-12-04 13:19:22 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_object
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwDestroyCursor
* @ sa @ ref glfwCreateStandardCursor
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2013-12-04 13:19:22 +00:00
*
* @ ingroup input
*/
2014-02-23 15:43:17 +00:00
GLFWAPI GLFWcursor * glfwCreateCursor ( const GLFWimage * image , int xhot , int yhot ) ;
2013-12-04 13:19:22 +00:00
2014-09-02 14:52:16 +00:00
/*! @brief Creates a cursor with a standard shape.
*
2019-05-07 18:40:37 +00:00
* Returns a cursor with a standard shape , that can be set for a window with
* @ ref glfwSetCursor . The images for these cursors come from the system
* cursor theme and their exact appearance will vary between platforms .
*
* Most of these shapes are guaranteed to exist on every supported platform but
* a few may not be present . See the table below for details .
*
* Cursor shape | Windows | macOS | X11 | Wayland
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | - - - - - - - | - - - - - | - - - - - - | - - - - - - -
* @ ref GLFW_ARROW_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_IBEAM_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_CROSSHAIR_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_POINTING_HAND_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_RESIZE_EW_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_RESIZE_NS_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_RESIZE_NWSE_CURSOR | Yes | Yes < sup > 1 < / sup > | Maybe < sup > 2 < / sup > | Maybe < sup > 2 < / sup >
* @ ref GLFW_RESIZE_NESW_CURSOR | Yes | Yes < sup > 1 < / sup > | Maybe < sup > 2 < / sup > | Maybe < sup > 2 < / sup >
* @ ref GLFW_RESIZE_ALL_CURSOR | Yes | Yes | Yes | Yes
* @ ref GLFW_NOT_ALLOWED_CURSOR | Yes | Yes | Maybe < sup > 2 < / sup > | Maybe < sup > 2 < / sup >
*
* 1 ) This uses a private system API and may fail in the future .
*
* 2 ) This uses a newer standard that not all cursor themes support .
*
* If the requested shape is not available , this function emits a @ ref
* GLFW_CURSOR_UNAVAILABLE error and returns ` NULL ` .
2014-09-02 14:52:16 +00:00
*
* @ param [ in ] shape One of the [ standard shapes ] ( @ ref shapes ) .
* @ return A new cursor ready to use or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2019-05-07 18:40:37 +00:00
* GLFW_INVALID_ENUM , @ ref GLFW_CURSOR_UNAVAILABLE and @ ref
* GLFW_PLATFORM_ERROR .
2016-02-04 23:51:40 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-02 14:52:16 +00:00
*
2019-05-07 18:40:37 +00:00
* @ sa @ ref cursor_standard
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwCreateCursor
2014-09-02 14:52:16 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-09-02 14:52:16 +00:00
*
* @ ingroup input
*/
GLFWAPI GLFWcursor * glfwCreateStandardCursor ( int shape ) ;
2013-12-04 13:19:22 +00:00
/*! @brief Destroys a cursor.
*
2014-04-23 11:30:11 +00:00
* This function destroys a cursor previously created with @ ref
* glfwCreateCursor . Any remaining cursors will be destroyed by @ ref
* glfwTerminate .
2013-12-04 13:19:22 +00:00
*
2017-02-20 12:45:11 +00:00
* If the specified cursor is current for any window , that window will be
* reverted to the default cursor . This does not affect the cursor mode .
*
2014-04-23 11:30:11 +00:00
* @ param [ in ] cursor The cursor object to destroy .
2013-12-04 13:19:22 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ reentrancy This function must not be called from a callback .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_object
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwCreateCursor
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2013-12-04 13:19:22 +00:00
*
* @ ingroup input
*/
GLFWAPI void glfwDestroyCursor ( GLFWcursor * cursor ) ;
2015-01-18 00:55:25 +00:00
/*! @brief Sets the cursor for the window.
*
* This function sets the cursor image to be used when the cursor is over the
2019-01-22 19:54:16 +00:00
* content area of the specified window . The set cursor will only be visible
2015-01-18 00:55:25 +00:00
* when the [ cursor mode ] ( @ ref cursor_mode ) of the window is
* ` GLFW_CURSOR_NORMAL ` .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* On some platforms , the set cursor may not be visible unless the window also
* has input focus .
2013-12-04 13:19:22 +00:00
*
2015-01-18 00:55:25 +00:00
* @ param [ in ] window The window to set the cursor for .
* @ param [ in ] cursor The cursor to set , or ` NULL ` to switch back to the default
* arrow cursor .
2013-12-04 13:19:22 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_object
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-03-24 10:58:35 +00:00
*
2013-12-04 13:19:22 +00:00
* @ ingroup input
*/
GLFWAPI void glfwSetCursor ( GLFWwindow * window , GLFWcursor * cursor ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the key callback.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function sets the key callback of the specified window , which is called
2013-03-18 18:11:02 +00:00
* when a key is pressed , repeated or released .
*
2013-04-16 00:02:22 +00:00
* The key functions deal with physical keys , with layout independent
* [ key tokens ] ( @ ref keys ) named after their values in the standard US keyboard
2013-06-05 15:53:13 +00:00
* layout . If you want to input text , use the
* [ character callback ] ( @ ref glfwSetCharCallback ) instead .
2013-03-18 18:11:02 +00:00
*
2015-01-18 00:55:25 +00:00
* When a window loses input focus , it will generate synthetic key release
* events for all pressed keys . You can tell these events from user - generated
* events by the fact that the synthetic ones are generated after the focus
* loss event has been processed , i . e . after the
* [ window focus callback ] ( @ ref glfwSetWindowFocusCallback ) has been called .
2013-04-24 17:49:46 +00:00
*
2013-05-30 15:19:12 +00:00
* The scancode of a key is specific to that platform or sometimes even to that
* machine . Scancodes are intended to allow users to bind keys that don ' t have
* a GLFW key token . Such keys have ` key ` set to ` GLFW_KEY_UNKNOWN ` , their
2014-09-18 13:03:29 +00:00
* state is not saved and so it cannot be queried with @ ref glfwGetKey .
2013-05-30 15:19:12 +00:00
*
* Sometimes GLFW needs to generate synthetic key events , in which case the
* scancode may be zero .
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new key callback , or ` NULL ` to remove the currently
2012-11-22 15:38:24 +00:00
* set callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_key
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle parameter and return value .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWkeyfun glfwSetKeyCallback ( GLFWwindow * window , GLFWkeyfun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the Unicode character callback.
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* This function sets the character callback of the specified window , which is
2013-03-18 18:11:02 +00:00
* called when a Unicode character is input .
*
2014-06-12 21:04:20 +00:00
* The character callback is intended for Unicode text input . As it deals with
* characters , it is keyboard layout dependent , whereas the
* [ key callback ] ( @ ref glfwSetKeyCallback ) is not . Characters do not map 1 : 1
* to physical keys , as a key may produce zero , one or more characters . If you
* want to know whether a specific physical key was pressed or released , see
* the key callback instead .
*
* 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
2016-10-19 22:50:54 +00:00
* input on that platform , for example a Super ( Command ) key on macOS or Alt key
2018-12-25 21:11:23 +00:00
* on Windows .
2013-03-18 18:11:02 +00:00
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-01-17 22:06:56 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_char
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.4 .
* @ glfw3 Added window handle parameter and return value .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWcharfun glfwSetCharCallback ( GLFWwindow * window , GLFWcharfun callback ) ;
2012-11-22 15:38:24 +00:00
2014-06-12 21:04:20 +00:00
/*! @brief Sets the Unicode character with modifiers callback.
*
2014-09-18 13:03:29 +00:00
* This function sets the character with modifiers callback of the specified
2014-06-12 21:04:20 +00:00
* window , which is called when a Unicode character is input regardless of what
* modifier keys are used .
*
* The character with modifiers callback is intended for implementing custom
* Unicode character input . For regular Unicode text input , see the
* [ character callback ] ( @ ref glfwSetCharCallback ) . Like the character
* callback , the character with modifiers callback deals with characters and is
* keyboard layout dependent . Characters do not map 1 : 1 to physical keys , as
* a key may produce zero , one or more characters . If you want to know whether
* a specific physical key was pressed or released , see the
* [ key callback ] ( @ ref glfwSetKeyCallback ) instead .
*
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2014-06-12 21:04:20 +00:00
* callback .
* @ return The previously set callback , or ` NULL ` if no callback was set or an
2016-08-17 14:48:22 +00:00
* [ error ] ( @ ref error_handling ) occurred .
2014-06-12 21:04:20 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2017-11-14 22:28:12 +00:00
* @ deprecated Scheduled for removal in version 4.0 .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_char
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-06-12 21:04:20 +00:00
*
* @ ingroup input
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback ( GLFWwindow * window , GLFWcharmodsfun callback ) ;
2014-06-12 21:04:20 +00:00
2012-11-22 15:38:24 +00:00
/*! @brief Sets the mouse button callback.
2013-03-18 18:11:02 +00:00
*
* This function sets the mouse button callback of the specified window , which
* is called when a mouse button is pressed or released .
*
2015-01-18 00:55:25 +00:00
* When a window loses input focus , it will generate synthetic mouse button
* release events for all pressed mouse buttons . You can tell these events
* from user - generated events by the fact that the synthetic ones are generated
* after the focus loss event has been processed , i . e . after the
* [ window focus callback ] ( @ ref glfwSetWindowFocusCallback ) has been called .
2013-04-24 17:49:46 +00:00
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-01-17 22:06:56 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
* @ sa @ ref input_mouse_button
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
* @ glfw3 Added window handle parameter and return value .
2014-03-24 10:58:35 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback ( GLFWwindow * window , GLFWmousebuttonfun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the cursor position callback.
2013-03-18 18:11:02 +00:00
*
* 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
2013-09-28 20:12:50 +00:00
* position , in screen coordinates , relative to the upper - left corner of the
2019-01-22 19:54:16 +00:00
* content area of the window .
2013-03-18 18:11:02 +00:00
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-01-17 22:06:56 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_pos
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwSetMousePosCallback ` .
2014-03-24 10:58:35 +00:00
*
2013-03-18 18:11:02 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback ( GLFWwindow * window , GLFWcursorposfun callback ) ;
2012-11-22 15:38:24 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief Sets the cursor enter/leave callback.
2013-03-18 18:11:02 +00:00
*
* This function sets the cursor boundary crossing callback of the specified
2019-01-22 19:54:16 +00:00
* window , which is called when the cursor enters or leaves the content area of
2013-03-18 18:11:02 +00:00
* the window .
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2013-01-17 22:06:56 +00:00
* callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref cursor_enter
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-03-24 10:58:35 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback ( GLFWwindow * window , GLFWcursorenterfun callback ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the scroll callback.
2013-03-29 13:06:23 +00:00
*
* This function sets the scroll callback of the specified window , which is
* called when a scrolling device is used , such as a mouse wheel or scrolling
* area of a touchpad .
*
2013-06-05 15:53:13 +00:00
* The scroll callback receives all scrolling input , like that from a mouse
* wheel or a touchpad scrolling area .
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new scroll callback , or ` NULL ` to remove the
* currently set callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-04-08 19:21:21 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref scrolling
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwSetMouseWheelCallback ` .
2014-03-24 10:58:35 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWscrollfun glfwSetScrollCallback ( GLFWwindow * window , GLFWscrollfun callback ) ;
2010-09-07 15:34:51 +00:00
2019-05-23 23:52:49 +00:00
/*! @brief Sets the path drop callback.
2013-07-10 09:42:14 +00:00
*
2019-05-23 23:52:49 +00:00
* 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 .
2013-07-10 09:42:14 +00:00
*
2014-09-18 13:03:29 +00:00
* 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
* returned . If you wish to use them after the callback returns , you need to
* make a deep copy .
2013-07-10 09:42:14 +00:00
*
* @ param [ in ] window The window whose callback to set .
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new file drop callback , or ` NULL ` to remove the
2014-03-29 20:35:21 +00:00
* currently set callback .
2014-04-23 11:30:11 +00:00
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
2013-07-10 09:42:14 +00:00
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-10-16 14:52:39 +00:00
* @ remark @ wayland File drop is currently unimplemented .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref path_drop
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.1 .
2014-03-24 10:58:35 +00:00
*
2013-07-10 09:42:14 +00:00
* @ ingroup input
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWdropfun glfwSetDropCallback ( GLFWwindow * window , GLFWdropfun callback ) ;
2013-07-10 09:42:14 +00:00
2013-05-27 13:13:09 +00:00
/*! @brief Returns whether the specified joystick is present.
2013-03-18 18:11:02 +00:00
*
2013-05-27 13:13:09 +00:00
* This function returns whether the specified joystick is present .
2013-03-18 18:11:02 +00:00
*
2017-08-03 23:00:36 +00:00
* There is no need to call this function before other functions that accept
* a joystick ID , as they all check for presence before performing any other
* work .
*
2016-10-10 01:24:07 +00:00
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
2015-08-23 17:30:04 +00:00
* @ return ` GLFW_TRUE ` if the joystick is present , or ` GLFW_FALSE ` otherwise .
2013-03-18 18:11:02 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref joystick
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwGetJoystickParam ` .
2014-03-24 10:58:35 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2016-10-10 01:24:07 +00:00
GLFWAPI int glfwJoystickPresent ( int jid ) ;
2012-11-22 15:38:24 +00:00
2013-04-24 17:25:42 +00:00
/*! @brief Returns the values of all axes of the specified joystick.
2013-06-05 15:53:13 +00:00
*
* This function returns the values of all axes of the specified joystick .
2014-09-18 13:03:29 +00:00
* Each element in the array is a value between - 1.0 and 1.0 .
2013-06-05 15:53:13 +00:00
*
2017-06-18 13:13:25 +00:00
* If the specified joystick is not present this function will return ` NULL `
2017-08-03 23:00:36 +00:00
* but will not generate an error . This can be used instead of first calling
* @ ref glfwJoystickPresent .
2016-02-10 12:48:49 +00:00
*
2016-10-10 01:24:07 +00:00
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
2014-09-18 13:03:29 +00:00
* @ param [ out ] count Where to store the number of axis values in the returned
2016-08-17 14:48:22 +00:00
* array . This is set to zero if the joystick is not present or an error
* occurred .
* @ return An array of axis values , or ` NULL ` if the joystick is not present or
* an [ error ] ( @ ref error_handling ) occurred .
2013-04-24 17:25:42 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned array is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified joystick is
2017-02-01 03:36:38 +00:00
* disconnected or the library is terminated .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-03-24 10:58:35 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref joystick_axis
2013-06-05 14:04:04 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 . Replaces ` glfwGetJoystickPos ` .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2016-10-10 01:24:07 +00:00
GLFWAPI const float * glfwGetJoystickAxes ( int jid , int * count ) ;
2012-11-22 15:38:24 +00:00
2013-06-16 00:33:33 +00:00
/*! @brief Returns the state of all buttons of the specified joystick.
2013-06-05 15:53:13 +00:00
*
2013-06-16 00:33:33 +00:00
* This function returns the state of all buttons of the specified joystick .
2014-09-18 13:03:29 +00:00
* Each element in the array is either ` GLFW_PRESS ` or ` GLFW_RELEASE ` .
2013-06-05 15:53:13 +00:00
*
2017-03-01 22:27:20 +00:00
* For backward compatibility with earlier versions that did not have @ ref
* glfwGetJoystickHats , the button array also includes all hats , each
* represented as four buttons . The hats are in the same order as returned by
* __glfwGetJoystickHats__ and are in the order _up_ , _right_ , _down_ and
* _left_ . To disable these extra buttons , set the @ ref
* GLFW_JOYSTICK_HAT_BUTTONS init hint before initialization .
*
2017-06-18 13:13:25 +00:00
* If the specified joystick is not present this function will return ` NULL `
2017-08-03 23:00:36 +00:00
* but will not generate an error . This can be used instead of first calling
* @ ref glfwJoystickPresent .
2016-02-10 12:48:49 +00:00
*
2016-10-10 01:24:07 +00:00
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
2014-09-18 13:03:29 +00:00
* @ param [ out ] count Where to store the number of button states in the returned
2016-08-17 14:48:22 +00:00
* array . This is set to zero if the joystick is not present or an error
* occurred .
* @ return An array of button states , or ` NULL ` if the joystick is not present
* or an [ error ] ( @ ref error_handling ) occurred .
2013-04-24 17:25:42 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned array is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified joystick is
2017-02-01 03:36:38 +00:00
* disconnected or the library is terminated .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref joystick_button
2014-03-24 10:58:35 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.2 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Changed to return a dynamic array .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ ingroup input
*/
2016-10-10 01:24:07 +00:00
GLFWAPI const unsigned char * glfwGetJoystickButtons ( int jid , int * count ) ;
2010-09-07 15:34:51 +00:00
2016-11-26 03:56:24 +00:00
/*! @brief Returns the state of all hats of the specified joystick.
*
* This function returns the state of all hats of the specified joystick .
2017-03-01 22:27:20 +00:00
* Each element in the array is one of the following values :
*
* Name | Value
2018-11-27 20:49:19 +00:00
* - - - - | - - - - -
2017-03-01 22:27:20 +00:00
* ` GLFW_HAT_CENTERED ` | 0
* ` GLFW_HAT_UP ` | 1
* ` GLFW_HAT_RIGHT ` | 2
* ` GLFW_HAT_DOWN ` | 4
* ` GLFW_HAT_LEFT ` | 8
* ` GLFW_HAT_RIGHT_UP ` | ` GLFW_HAT_RIGHT ` \ | ` GLFW_HAT_UP `
* ` GLFW_HAT_RIGHT_DOWN ` | ` GLFW_HAT_RIGHT ` \ | ` GLFW_HAT_DOWN `
* ` GLFW_HAT_LEFT_UP ` | ` GLFW_HAT_LEFT ` \ | ` GLFW_HAT_UP `
* ` GLFW_HAT_LEFT_DOWN ` | ` GLFW_HAT_LEFT ` \ | ` GLFW_HAT_DOWN `
*
* The diagonal directions are bitwise combinations of the primary ( up , right ,
* down and left ) directions and you can test for these individually by ANDing
* it with the corresponding direction .
*
* @ code
2017-11-17 03:34:18 +00:00
* if ( hats [ 2 ] & GLFW_HAT_RIGHT )
* {
* // State of hat 2 could be right-up, right or right-down
* }
2017-03-01 22:27:20 +00:00
* @ endcode
*
2017-06-18 13:13:25 +00:00
* If the specified joystick is not present this function will return ` NULL `
2017-08-03 23:00:36 +00:00
* but will not generate an error . This can be used instead of first calling
* @ ref glfwJoystickPresent .
2016-11-26 03:56:24 +00:00
*
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
* @ param [ out ] count Where to store the number of hat states in the returned
* array . This is set to zero if the joystick is not present or an error
* occurred .
* @ return An array of hat states , or ` NULL ` if the joystick is not present
* or an [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
* @ pointer_lifetime The returned array is allocated and freed by GLFW . You
* should not free it yourself . It is valid until the specified joystick is
* disconnected , this function is called again for that joystick or the library
* is terminated .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref joystick_hat
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI const unsigned char * glfwGetJoystickHats ( int jid , int * count ) ;
2012-12-02 15:55:09 +00:00
/*! @brief Returns the name of the specified joystick.
2013-03-18 18:11:02 +00:00
*
* This function returns the name , encoded as UTF - 8 , of the specified joystick .
2014-09-18 13:03:29 +00:00
* The returned string is allocated and freed by GLFW . You should not free it
* yourself .
2013-03-18 18:11:02 +00:00
*
2017-06-18 13:13:25 +00:00
* If the specified joystick is not present this function will return ` NULL `
2017-08-03 23:00:36 +00:00
* but will not generate an error . This can be used instead of first calling
* @ ref glfwJoystickPresent .
2016-02-10 12:48:49 +00:00
*
2016-10-10 01:24:07 +00:00
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
2013-03-12 14:33:05 +00:00
* @ return The UTF - 8 encoded name of the joystick , or ` NULL ` if the joystick
2016-08-17 14:48:22 +00:00
* is not present or an [ error ] ( @ ref error_handling ) occurred .
2012-12-02 16:13:41 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ 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
2017-02-01 03:36:38 +00:00
* disconnected or the library is terminated .
2014-03-24 10:58:35 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2013-06-05 14:04:04 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref joystick_name
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2013-03-18 18:11:02 +00:00
*
* @ ingroup input
2012-12-02 15:55:09 +00:00
*/
2016-10-10 01:24:07 +00:00
GLFWAPI const char * glfwGetJoystickName ( int jid ) ;
2010-09-07 15:34:51 +00:00
2019-08-12 10:52:31 +00:00
/*! @brief Returns the SDL compatible GUID of the specified joystick.
2017-07-23 14:34:11 +00:00
*
* This function returns the SDL compatible GUID , as a UTF - 8 encoded
* hexadecimal string , of the specified joystick . The returned string is
* allocated and freed by GLFW . You should not free it yourself .
*
2017-08-03 23:00:36 +00:00
* The GUID is what connects a joystick to a gamepad mapping . A connected
* joystick will always have a GUID even if there is no gamepad mapping
* assigned to it .
*
2017-07-23 14:34:11 +00:00
* If the specified joystick is not present this function will return ` NULL `
2017-08-03 23:00:36 +00:00
* but will not generate an error . This can be used instead of first calling
* @ ref glfwJoystickPresent .
2017-07-23 14:34:11 +00:00
*
* The GUID uses the format introduced in SDL 2.0 .5 . This GUID tries to
* uniquely identify the make and model of a joystick but does not identify
* a specific unit , e . g . all wired Xbox 360 controllers will have the same
* GUID on that platform . The GUID for a unit may vary between platforms
* depending on what hardware information the platform specific APIs provide .
*
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
* @ return The UTF - 8 encoded GUID of the joystick , or ` NULL ` if the joystick
* is not present or an [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_INVALID_ENUM 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 specified joystick is
* disconnected or the library is terminated .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref gamepad
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI const char * glfwGetJoystickGUID ( int jid ) ;
2017-12-07 15:19:57 +00:00
/*! @brief Sets the user pointer of the specified joystick.
*
* This function sets the user - defined pointer of the specified joystick . The
* current value is retained until the joystick is disconnected . The initial
* value is ` NULL ` .
*
* This function may be called from the joystick callback , even for a joystick
* that is being disconnected .
*
2018-02-25 19:37:31 +00:00
* @ param [ in ] jid The joystick whose pointer to set .
2017-12-07 15:19:57 +00:00
* @ param [ in ] pointer The new value .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
*
* @ sa @ ref joystick_userptr
* @ sa @ ref glfwGetJoystickUserPointer
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI void glfwSetJoystickUserPointer ( int jid , void * pointer ) ;
/*! @brief Returns the user pointer of the specified joystick.
*
* This function returns the current value of the user - defined pointer of the
* specified joystick . The initial value is ` NULL ` .
*
* This function may be called from the joystick callback , even for a joystick
* that is being disconnected .
*
2018-02-25 19:37:31 +00:00
* @ param [ in ] jid The joystick whose pointer to return .
2017-12-07 15:19:57 +00:00
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread . Access is not
* synchronized .
*
* @ sa @ ref joystick_userptr
* @ sa @ ref glfwSetJoystickUserPointer
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI void * glfwGetJoystickUserPointer ( int jid ) ;
2017-06-18 13:13:25 +00:00
/*! @brief Returns whether the specified joystick has a gamepad mapping.
*
* This function returns whether the specified joystick is both present and has
* a gamepad mapping .
*
* If the specified joystick is present but does not have a gamepad mapping
* this function will return ` GLFW_FALSE ` but will not generate an error . Call
2017-08-03 23:00:36 +00:00
* @ ref glfwJoystickPresent to check if a joystick is present regardless of
* whether it has a mapping .
2017-06-18 13:13:25 +00:00
*
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
* @ return ` GLFW_TRUE ` if a joystick is both present and has a gamepad mapping ,
* or ` GLFW_FALSE ` otherwise .
*
* @ 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 glfwGetGamepadState
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI int glfwJoystickIsGamepad ( int jid ) ;
2015-12-13 16:38:50 +00:00
/*! @brief Sets the joystick configuration callback.
*
* This function sets the joystick configuration callback , or removes the
* currently set callback . This is called when a joystick is connected to or
* disconnected from the system .
*
2017-02-01 03:55:46 +00:00
* For joystick connection and disconnection events to be delivered on all
* platforms , you need to call one of the [ event processing ] ( @ ref events )
* functions . Joystick disconnection may also be detected and the callback
* called by joystick functions . The function will then return whatever it
2017-06-18 13:13:25 +00:00
* returns if the joystick is not present .
2017-02-01 03:55:46 +00:00
*
2019-05-23 23:52:49 +00:00
* @ param [ in ] callback The new callback , or ` NULL ` to remove the currently set
2015-12-13 16:38:50 +00:00
* callback .
* @ return The previously set callback , or ` NULL ` if no callback was set or the
* library had not been [ initialized ] ( @ ref intro_init ) .
*
2019-05-23 23:52:49 +00:00
* @ 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 ) .
*
2015-12-13 16:38:50 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref joystick_event
*
* @ since Added in version 3.2 .
*
* @ ingroup input
*/
2019-05-23 23:52:49 +00:00
GLFWAPI GLFWjoystickfun glfwSetJoystickCallback ( GLFWjoystickfun callback ) ;
2015-12-13 16:38:50 +00:00
2017-06-18 13:13:25 +00:00
/*! @brief Adds the specified SDL_GameControllerDB gamepad mappings.
*
* This function parses the specified ASCII encoded string and updates the
* internal list with any gamepad mappings it finds . This string may
* contain either a single gamepad mapping or many mappings separated by
* newlines . The parser supports the full format of the ` gamecontrollerdb . txt `
* source file including empty lines and comments .
*
* See @ ref gamepad_mapping for a description of the format .
*
* If there is already a gamepad mapping for a given GUID in the internal list ,
* it will be replaced by the one passed to this function . If the library is
* terminated and re - initialized the internal list will revert to the built - in
* default .
*
* @ param [ in ] string The string containing the gamepad mappings .
* @ return ` GLFW_TRUE ` if successful , or ` GLFW_FALSE ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_VALUE .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref gamepad
* @ sa @ ref glfwJoystickIsGamepad
* @ sa @ ref glfwGetGamepadName
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI int glfwUpdateGamepadMappings ( const char * string ) ;
/*! @brief Returns the human-readable gamepad name for the specified joystick.
*
* This function returns the human - readable name of the gamepad from the
* gamepad mapping assigned to the specified joystick .
*
* If the specified joystick is not present or does not have a gamepad mapping
2017-08-03 23:00:36 +00:00
* this function will return ` NULL ` but will not generate an error . Call
* @ ref glfwJoystickPresent to check whether it is present regardless of
* whether it has a mapping .
2017-06-18 13:13:25 +00:00
*
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
* @ return The UTF - 8 encoded name of the gamepad , or ` NULL ` if the
* joystick is not present , does not have a mapping or an
* [ error ] ( @ ref error_handling ) occurred .
*
2021-12-05 16:51:43 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref GLFW_INVALID_ENUM .
*
2017-06-18 13:13:25 +00:00
* @ 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 .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref gamepad
* @ sa @ ref glfwJoystickIsGamepad
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI const char * glfwGetGamepadName ( int jid ) ;
/*! @brief Retrieves the state of the specified joystick remapped as a gamepad.
*
2019-08-12 10:52:31 +00:00
* This function retrieves the state of the specified joystick remapped to
2017-06-18 13:13:25 +00:00
* an Xbox - like gamepad .
*
2017-08-03 23:00:36 +00:00
* If the specified joystick is not present or does not have a gamepad mapping
* this function will return ` GLFW_FALSE ` but will not generate an error . Call
* @ ref glfwJoystickPresent to check whether it is present regardless of
* whether it has a mapping .
2017-06-18 13:13:25 +00:00
*
* The Guide button may not be available for input as it is often hooked by the
* system or the Steam client .
*
* Not all devices have all the buttons or axes provided by @ ref
* GLFWgamepadstate . Unavailable buttons and axes will always report
2018-03-03 21:24:26 +00:00
* ` GLFW_RELEASE ` and 0.0 respectively .
2017-06-18 13:13:25 +00:00
*
* @ param [ in ] jid The [ joystick ] ( @ ref joysticks ) to query .
* @ param [ out ] state The gamepad input state of the joystick .
* @ return ` GLFW_TRUE ` if successful , or ` GLFW_FALSE ` if no joystick is
* connected , it has no gamepad mapping or an [ error ] ( @ ref error_handling )
* occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_ENUM .
*
2018-08-09 11:57:10 +00:00
* @ thread_safety This function must only be called from the main thread .
*
2017-06-18 13:13:25 +00:00
* @ sa @ ref gamepad
* @ sa @ ref glfwUpdateGamepadMappings
* @ sa @ ref glfwJoystickIsGamepad
*
* @ since Added in version 3.3 .
*
* @ ingroup input
*/
GLFWAPI int glfwGetGamepadState ( int jid , GLFWgamepadstate * state ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the clipboard to the specified string.
2013-03-18 18:11:02 +00:00
*
* This function sets the system clipboard to the specified , UTF - 8 encoded
2014-09-18 13:03:29 +00:00
* string .
2013-03-18 18:11:02 +00:00
*
2017-11-04 20:11:58 +00:00
* @ param [ in ] window Deprecated . Any valid window or ` NULL ` .
2012-11-22 15:38:24 +00:00
* @ param [ in ] string A UTF - 8 encoded string .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The specified string is copied before this function
* returns .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2012-12-02 14:47:10 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref clipboard
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetClipboardString
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2014-09-09 14:26:57 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSetClipboardString ( GLFWwindow * window , const char * string ) ;
2012-11-22 15:38:24 +00:00
2014-09-18 13:03:29 +00:00
/*! @brief Returns the contents of the clipboard as a string.
2013-03-18 18:11:02 +00:00
*
* This function returns the contents of the system clipboard , if it contains
2015-09-16 16:51:49 +00:00
* or is convertible to a UTF - 8 encoded string . If the clipboard is empty or
2015-09-16 14:27:28 +00:00
* if its contents cannot be converted , ` NULL ` is returned and a @ ref
* GLFW_FORMAT_UNAVAILABLE error is generated .
2013-03-18 18:11:02 +00:00
*
2017-11-04 20:11:58 +00:00
* @ param [ in ] window Deprecated . Any valid window or ` NULL ` .
2013-03-12 14:33:05 +00:00
* @ return The contents of the clipboard as a UTF - 8 encoded string , or ` NULL `
2014-09-18 13:03:29 +00:00
* if an [ error ] ( @ ref error_handling ) occurred .
2012-12-02 14:47:10 +00:00
*
2021-11-22 23:32:29 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_FORMAT_UNAVAILABLE and @ ref GLFW_PLATFORM_ERROR .
2016-02-04 23:51:40 +00:00
*
2016-01-31 20:32:14 +00:00
* @ 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
2014-10-06 21:18:33 +00:00
* glfwGetClipboardString or @ ref glfwSetClipboardString , or until the library
* is terminated .
2012-11-22 15:38:24 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function must only be called from the main thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref clipboard
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSetClipboardString
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2014-09-09 14:26:57 +00:00
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI const char * glfwGetClipboardString ( GLFWwindow * window ) ;
2011-09-21 09:09:47 +00:00
2023-02-23 21:48:21 +00:00
// TODO: consider requiring GLFW to be initialized for these GLFWTheme functions to work. That way, implementations can add extra data to the themes, and process them in a platform-specific way.
2023-01-29 20:06:42 +00:00
GLFWAPI GLFWtheme * glfwCreateTheme ( void ) ;
GLFWAPI void glfwDestroyTheme ( GLFWtheme * theme ) ;
GLFWAPI void glfwCopyTheme ( const GLFWtheme * source , GLFWtheme * target ) ;
2023-02-23 21:48:21 +00:00
GLFWAPI int glfwThemeEqual ( const GLFWtheme * first , const GLFWtheme * second ) ;
2023-01-29 20:06:42 +00:00
GLFWAPI int glfwThemeGetVariation ( const GLFWtheme * theme ) ;
GLFWAPI void glfwThemeSetVariation ( GLFWtheme * theme , int value ) ;
2023-01-30 00:12:12 +00:00
GLFWAPI int glfwThemeGetAttribute ( const GLFWtheme * theme , int attribute ) ;
GLFWAPI void glfwThemeSetAttribute ( GLFWtheme * theme , int attribute , int value ) ;
2023-01-29 20:06:42 +00:00
2023-02-23 21:48:21 +00:00
// If the return value of glfwGetAttribute(specifier) is GLFW_FALSE, the return values of this function are undefined.
2023-02-01 03:44:22 +00:00
GLFWAPI void glfwThemeGetColor ( const GLFWtheme * theme ,
int specifier ,
float * red , float * green , float * blue , float * alpha ) ;
2023-02-23 21:48:21 +00:00
// Must execute glfwThemeSetAttribute(specifier, GLFW_TRUE) for this to have an effect.
2023-02-01 03:44:22 +00:00
GLFWAPI void glfwThemeSetColor ( GLFWtheme * theme ,
int specifier ,
float red , float green , float blue , float alpha ) ;
2023-01-25 18:46:16 +00:00
2023-01-29 23:02:44 +00:00
/*! @brief Theme variation type.
*
* Specifies that a theme is of a dark variation .
*
* @ ingroup theme
*/
2023-01-29 20:06:42 +00:00
# define GLFW_THEME_DARK -1
2023-01-29 23:02:44 +00:00
/*! @brief Theme variation type.
*
* Specifies that a theme has no specific variation .
* This is an invalid value for themes returned by GLFW , but this
* variation can be set to make GLFW use the default system theme when
* applying a user - specified theme .
*
* @ ingroup theme
*/
2023-01-29 20:06:42 +00:00
# define GLFW_THEME_DEFAULT 0
2023-01-29 23:02:44 +00:00
/*! @brief Theme variation type.
*
* Specifies that a theme is of a light variation .
*
* @ ingroup theme
*/
2023-01-29 20:06:42 +00:00
# define GLFW_THEME_LIGHT 1
2023-01-25 18:46:16 +00:00
2023-01-30 00:12:12 +00:00
/*! @brief Theme attribute.
2023-01-29 23:02:44 +00:00
*
2023-02-01 03:44:22 +00:00
* Specifies that a theme uses a high contrast mode .
2023-01-29 23:02:44 +00:00
*
* @ ingroup theme
*/
2023-02-01 03:44:22 +00:00
# define GLFW_THEME_ATTRIBUTE_HIGH_CONTRAST 1
2023-01-29 23:02:44 +00:00
2023-01-30 00:12:12 +00:00
/*! @brief Theme attribute.
2023-01-29 23:02:44 +00:00
*
2023-02-23 21:48:21 +00:00
* Specifies that a theme requests reduced transparency .
*
* @ ingroup theme
*/
# define GLFW_THEME_ATTRIBUTE_REDUCE_TRANSPARENCY 2
/*! @brief Theme attribute.
*
* Specifies that a theme requests reduced motion .
2023-01-29 23:02:44 +00:00
*
* @ ingroup theme
*/
2023-02-23 21:48:21 +00:00
# define GLFW_THEME_ATTRIBUTE_REDUCE_MOTION 4
2023-01-25 18:46:16 +00:00
2023-02-01 03:44:22 +00:00
/*! @brief Theme color attribute.
2023-01-29 23:02:44 +00:00
*
2023-02-01 03:44:22 +00:00
* This is both an attribute and color specifier . As an attribute , it specifies
* if this color is present in the theme or not . If this attribute is set on a theme
* returned by GLFW , that theme contains this color . If this attribute is set on a
* theme supplied to GLFW , GLFW applies this color if the platform supports it .
2023-01-29 23:02:44 +00:00
*
* @ ingroup theme
*/
2023-02-23 21:48:21 +00:00
# define GLFW_THEME_COLOR_MAIN 8
2023-01-25 18:46:16 +00:00
2023-01-29 23:02:44 +00:00
/*! @brief Sets the system theme callback.
*
* This function sets the system theme callback , or removes the
* currently set callback . This is called when the system theme changes ,
* either because the user edited it , or the system automatically changed it .
2023-01-25 18:46:16 +00:00
*
2023-01-29 23:02:44 +00:00
* @ 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 ( GLFWtheme * theme )
* @ endcode
* For more information about the callback parameters , see the
* [ function pointer type ] ( @ ref GLFWthemefun ) .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref theme_event
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
2023-01-25 18:46:16 +00:00
*/
GLFWAPI GLFWthemefun glfwSetSystemThemeCallback ( GLFWthemefun callback ) ;
/*! @brief Sets the theme for a window.
*
2023-01-29 23:02:44 +00:00
* @ param [ in ] window The [ window ] ( @ ref window ) to set the theme for .
* @ param [ in ] theme The [ theme ] ( @ ref theme ) to set . Pass ` NULL ` to set it to the system default .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED ,
* and @ ref GLFW_FEATURE_UNIMPLEMENTED .
*
* @ pointer_lifetime The returned theme is allocated and freed by GLFW . You
* should not free it yourself . It is valid until this function or @ ref glfwGetTheme
* is called again for the specified window , or the window is destroyed .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref theme
* @ sa @ ref glfwGetTheme
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
2023-01-25 18:46:16 +00:00
*/
2023-01-29 20:06:42 +00:00
GLFWAPI void glfwSetTheme ( GLFWwindow * handle , const GLFWtheme * theme ) ;
2023-01-29 23:02:44 +00:00
/*! @brief Returns the currently active system theme.
2023-02-23 21:48:21 +00:00
*
* Executing this yields no changes to a window ' s theme settings :
* @ code
* glfwSetTheme ( window , glfwGetTheme ( window , GLFW_FALSE ) )
* @ endcode
*
* Executing this sets a window ' s theme to the current system theme , and disables
* automatic changes to the window ' s theme for when the system changes its theme .
* @ code
* glfwSetTheme ( window , glfwGetTheme ( window , GLFW_TRUE ) )
* @ endcode
*
2023-01-29 23:02:44 +00:00
*
* @ param [ in ] window The [ window ] ( @ ref window ) to retrieve the current theme for .
2023-02-23 21:48:21 +00:00
* @ param [ in ] inlineDefaults Specifies whether or not GLFW should replace unspecified
* theme attributes with the currently active system ones . If ` GLFW_TRUE ` , the returned
* theme describes the active style of the window . If ` GLFW_FALSE ` , the returned theme
* describes the window ' s theme settings .
2023-01-29 23:02:44 +00:00
*
* @ return A mutable [ theme ] ( @ ref theme ) object , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED ,
* and @ ref GLFW_FEATURE_UNIMPLEMENTED .
*
* @ pointer_lifetime The returned theme is allocated and freed by GLFW . You
* should not free it yourself . It is valid until this function or @ ref glfwSetTheme
* is called again for the specified window , or the window is destroyed .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref theme
* @ sa @ ref glfwSetTheme
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
*/
2023-02-23 21:48:21 +00:00
GLFWAPI GLFWtheme * glfwGetTheme ( GLFWwindow * handle , int inlineDefaults ) ;
2023-01-29 23:02:44 +00:00
/*! @brief Returns the currently active system theme.
*
* @ return A mutable [ theme ] ( @ ref theme ) object , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED ,
* and @ ref GLFW_FEATURE_UNIMPLEMENTED .
*
* @ pointer_lifetime The returned theme is allocated and freed by GLFW . You
* should not free it yourself . It is valid until this function is called
* again , or the library is terminated .
*
* @ thread_safety This function must only be called from the main thread .
*
* @ sa @ ref theme
* @ sa @ ref glfwSetSystemThemeCallback
* @ sa @ ref glfwSetTheme
*
* @ since Added in version 3.4 .
*
* @ ingroup theme
*/
2023-02-23 21:48:21 +00:00
GLFWAPI const GLFWtheme * glfwGetSystemDefaultTheme ( ) ;
2023-01-25 18:46:16 +00:00
2019-05-20 15:13:09 +00:00
/*! @brief Returns the GLFW time.
2013-03-18 18:11:02 +00:00
*
2019-05-20 15:13:09 +00:00
* 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 and @ ref glfwSetTime are helper functions on top of @ ref
* glfwGetTimerFrequency and @ ref glfwGetTimerValue .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* 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
2021-07-13 19:50:09 +00:00
* time source on each operating system .
2014-09-18 13:03:29 +00:00
*
2019-05-20 15:13:09 +00:00
* @ return The current time , in seconds , or zero if an
2014-09-18 13:03:29 +00:00
* [ error ] ( @ ref error_handling ) occurred .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-05-30 14:04:37 +00:00
* @ thread_safety This function may be called from any thread . Reading and
2019-05-20 15:13:09 +00:00
* writing of the internal base time is not atomic , so it needs to be
2016-05-30 14:04:37 +00:00
* externally synchronized with calls to @ ref glfwSetTime .
2012-11-22 15:38:24 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref time
2012-11-22 15:38:24 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
2010-09-08 14:40:43 +00:00
GLFWAPI double glfwGetTime ( void ) ;
2010-09-07 15:34:51 +00:00
2019-05-20 15:13:09 +00:00
/*! @brief Sets the GLFW time.
*
* 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 .
2013-03-18 18:11:02 +00:00
*
2019-05-20 15:13:09 +00:00
* This function and @ ref glfwGetTime are helper functions on top of @ ref
* glfwGetTimerFrequency and @ ref glfwGetTimerValue .
2013-03-18 18:11:02 +00:00
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] time The new value , in seconds .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_INVALID_VALUE .
*
2019-05-20 15:13:09 +00:00
* @ remark The upper limit of GLFW time is calculated as
2015-03-10 11:01:38 +00:00
* floor ( ( 2 < sup > 64 < / sup > - 1 ) / 10 < sup > 9 < / sup > ) and is due to implementations
* storing nanoseconds in 64 bits . The limit may be increased in the future .
*
2016-05-30 14:04:37 +00:00
* @ thread_safety This function may be called from any thread . Reading and
2019-05-20 15:13:09 +00:00
* writing of the internal base time is not atomic , so it needs to be
2016-05-30 14:04:37 +00:00
* externally synchronized with calls to @ ref glfwGetTime .
2014-03-24 10:58:35 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref time
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 2.2 .
2014-09-18 13:03:29 +00:00
*
* @ ingroup input
2012-11-22 15:38:24 +00:00
*/
GLFWAPI void glfwSetTime ( double time ) ;
2016-03-06 10:38:55 +00:00
/*! @brief Returns the current value of the raw timer.
*
2016-03-06 13:11:14 +00:00
* This function returns the current value of the raw timer , measured in
* 1 & nbsp ; / & nbsp ; frequency seconds . To get the frequency , call @ ref
* glfwGetTimerFrequency .
2016-03-06 10:38:55 +00:00
*
2017-11-17 03:34:18 +00:00
* @ return The value of the timer , or zero if an
2016-03-06 10:38:55 +00:00
* [ error ] ( @ ref error_handling ) occurred .
*
2016-03-07 12:35:37 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
2016-03-06 10:38:55 +00:00
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref time
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetTimerFrequency
2016-03-06 10:38:55 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup input
*/
2016-03-23 09:09:07 +00:00
GLFWAPI uint64_t glfwGetTimerValue ( void ) ;
2016-03-06 10:38:55 +00:00
/*! @brief Returns the frequency, in Hz, of the raw timer.
2016-03-07 12:36:54 +00:00
*
* This function returns the frequency , in Hz , of the raw timer .
2016-03-06 10:38:55 +00:00
*
* @ return The frequency of the timer , in Hz , or zero if an
* [ error ] ( @ ref error_handling ) occurred .
*
2016-03-07 12:35:37 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
2016-03-06 10:38:55 +00:00
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref time
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetTimerValue
2016-03-06 10:38:55 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup input
*/
2016-03-23 09:09:07 +00:00
GLFWAPI uint64_t glfwGetTimerFrequency ( void ) ;
2016-03-06 10:38:55 +00:00
2013-03-18 18:11:02 +00:00
/*! @brief Makes the context of the specified window current for the calling
* thread .
*
2014-09-18 13:03:29 +00:00
* This function makes the OpenGL or OpenGL ES context of the specified window
2017-11-02 18:30:12 +00:00
* current on the calling thread . A context must only be made current on
2014-09-18 13:03:29 +00:00
* a single thread at a time and each thread can have only a single current
* context at a time .
*
2017-11-02 18:30:12 +00:00
* When moving a context between threads , you must make it non - current on the
* old thread before making it current on the new one .
*
2014-09-18 13:03:29 +00:00
* By default , making a context non - current implicitly forces a pipeline flush .
* On machines that support ` GL_KHR_context_flush_control ` , you can control
* whether a context performs this flush by setting the
2016-12-06 00:14:23 +00:00
* [ GLFW_CONTEXT_RELEASE_BEHAVIOR ] ( @ ref GLFW_CONTEXT_RELEASE_BEHAVIOR_hint )
* hint .
2013-03-18 18:11:02 +00:00
*
2015-11-05 12:44:15 +00:00
* The specified window must have an OpenGL or OpenGL ES context . Specifying
* a window without a context will generate a @ ref GLFW_NO_WINDOW_CONTEXT
* error .
*
2013-03-12 14:33:05 +00:00
* @ param [ in ] window The window whose context to make current , or ` NULL ` to
2012-11-22 15:38:24 +00:00
* detach the current context .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_NO_WINDOW_CONTEXT and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref context_current
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetCurrentContext
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwMakeContextCurrent ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
2013-03-18 18:11:02 +00:00
/*! @brief Returns the window whose context is current on the calling thread.
*
2014-09-18 13:03:29 +00:00
* This function returns the window whose OpenGL or OpenGL ES context is
* current on the calling thread .
2013-03-18 18:11:02 +00:00
*
2013-03-12 14:33:05 +00:00
* @ return The window whose context is current , or ` NULL ` if no window ' s
2012-11-22 15:38:24 +00:00
* context is current .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref context_current
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwMakeContextCurrent
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 3.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI GLFWwindow * glfwGetCurrentContext ( void ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Swaps the front and back buffers of the specified window.
2013-03-18 18:11:02 +00:00
*
2016-02-19 08:13:56 +00:00
* This function swaps the front and back buffers of the specified window when
* rendering with OpenGL or OpenGL ES . If the swap interval is greater than
* zero , the GPU driver waits the specified number of screen updates before
* swapping the buffers .
2013-03-18 18:11:02 +00:00
*
2015-11-05 12:44:15 +00:00
* The specified window must have an OpenGL or OpenGL ES context . Specifying
* a window without a context will generate a @ ref GLFW_NO_WINDOW_CONTEXT
* error .
*
2016-02-19 08:13:56 +00:00
* This function does not apply to Vulkan . If you are rendering with Vulkan ,
* see ` vkQueuePresentKHR ` instead .
*
2013-01-17 16:51:12 +00:00
* @ param [ in ] window The window whose buffers to swap .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_NO_WINDOW_CONTEXT and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark __EGL : __ The context of the specified window must be current on the
2016-01-31 18:17:18 +00:00
* calling thread .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2014-03-24 10:58:35 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref buffer_swap
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSwapInterval
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2016-01-31 20:32:14 +00:00
* @ glfw3 Added window handle parameter .
2014-09-18 13:03:29 +00:00
*
* @ ingroup window
2012-11-22 15:38:24 +00:00
*/
2013-01-05 20:13:28 +00:00
GLFWAPI void glfwSwapBuffers ( GLFWwindow * window ) ;
2012-11-22 15:38:24 +00:00
/*! @brief Sets the swap interval for the current context.
2013-03-18 18:11:02 +00:00
*
2016-02-19 08:13:56 +00:00
* This function sets the swap interval for the current OpenGL or OpenGL ES
* context , i . e . the number of screen updates to wait from the time @ ref
* glfwSwapBuffers was called before swapping the buffers and returning . This
* is sometimes called _vertical synchronization_ , _vertical retrace
* synchronization_ or just _vsync_ .
2013-03-18 18:11:02 +00:00
*
2017-11-27 14:53:59 +00:00
* A context that supports either of the ` WGL_EXT_swap_control_tear ` and
2017-11-27 00:18:51 +00:00
* ` GLX_EXT_swap_control_tear ` extensions also accepts _negative_ swap
* intervals , which allows the driver to swap immediately even if a frame
* arrives a little bit late . You can check for these extensions with @ ref
* glfwExtensionSupported .
2013-04-10 21:01:12 +00:00
*
2014-09-18 13:03:29 +00:00
* A context must be current on the calling thread . Calling this function
2015-01-11 22:33:14 +00:00
* without a current context will cause a @ ref GLFW_NO_CURRENT_CONTEXT error .
2014-09-18 13:03:29 +00:00
*
2016-02-19 08:13:56 +00:00
* This function does not apply to Vulkan . If you are rendering with Vulkan ,
* see the present mode of your swapchain instead .
*
2013-06-05 15:53:13 +00:00
* @ param [ in ] interval The minimum number of screen updates to wait for
* until the buffers are swapped by @ ref glfwSwapBuffers .
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_NO_CURRENT_CONTEXT and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark This function is not called during context creation , leaving the
2021-07-13 19:50:09 +00:00
* swap interval set to whatever is the default for that API . This is done
2013-09-19 19:37:01 +00:00
* because some swap interval extensions used by GLFW do not allow the swap
* interval to be reset to zero once it has been set to a non - zero value .
*
2016-01-31 20:32:14 +00:00
* @ remark Some GPU drivers do not honor the requested swap interval , either
2015-02-19 14:33:51 +00:00
* because of a user setting that overrides the application ' s request or due to
* bugs in the driver .
2013-04-10 21:01:12 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2014-09-18 13:03:29 +00:00
*
2015-01-18 00:55:25 +00:00
* @ sa @ ref buffer_swap
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwSwapBuffers
2013-03-29 13:06:23 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2014-09-18 13:03:29 +00:00
*
2013-03-29 13:06:23 +00:00
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
GLFWAPI void glfwSwapInterval ( int interval ) ;
2013-03-18 18:11:02 +00:00
/*! @brief Returns whether the specified extension is available.
*
2013-04-11 18:18:46 +00:00
* This function returns whether the specified
2016-02-19 08:13:56 +00:00
* [ API extension ] ( @ ref context_glext ) is supported by the current OpenGL or
* OpenGL ES context . It searches both for client API extension and context
* creation API extensions .
2014-09-18 13:03:29 +00:00
*
* A context must be current on the calling thread . Calling this function
2015-01-11 22:33:14 +00:00
* without a current context will cause a @ ref GLFW_NO_CURRENT_CONTEXT error .
2014-09-18 13:03:29 +00:00
*
* As this functions retrieves and searches one or more extension strings each
* call , it is recommended that you cache its results if it is going to be used
* frequently . The extension strings will not change during the lifetime of
* a context , so there is no danger in doing this .
2013-03-18 18:11:02 +00:00
*
2016-02-19 08:13:56 +00:00
* This function does not apply to Vulkan . If you are using Vulkan , see @ ref
* glfwGetRequiredInstanceExtensions , ` vkEnumerateInstanceExtensionProperties `
* and ` vkEnumerateDeviceExtensionProperties ` instead .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] extension The ASCII encoded name of the extension .
2015-08-23 17:30:04 +00:00
* @ return ` GLFW_TRUE ` if the extension is available , or ` GLFW_FALSE `
* otherwise .
2012-11-22 15:38:24 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_NO_CURRENT_CONTEXT , @ ref GLFW_INVALID_VALUE and @ ref
* GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref context_glext
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetProcAddress
2014-09-18 13:03:29 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2013-03-29 13:06:23 +00:00
*
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
GLFWAPI int glfwExtensionSupported ( const char * extension ) ;
2013-03-18 18:11:02 +00:00
/*! @brief Returns the address of the specified function for the current
* context .
*
2016-02-19 08:13:56 +00:00
* This function returns the address of the specified OpenGL or OpenGL ES
2015-02-19 14:33:51 +00:00
* [ core or extension function ] ( @ ref context_glext ) , if it is supported
2013-05-27 15:10:34 +00:00
* by the current context .
2013-03-18 18:11:02 +00:00
*
2014-09-18 13:03:29 +00:00
* A context must be current on the calling thread . Calling this function
2015-01-11 22:33:14 +00:00
* without a current context will cause a @ ref GLFW_NO_CURRENT_CONTEXT error .
2014-09-18 13:03:29 +00:00
*
2016-02-19 08:13:56 +00:00
* This function does not apply to Vulkan . If you are rendering with Vulkan ,
* see @ ref glfwGetInstanceProcAddress , ` vkGetInstanceProcAddr ` and
* ` vkGetDeviceProcAddr ` instead .
*
2012-11-22 15:38:24 +00:00
* @ param [ in ] procname The ASCII encoded name of the function .
2015-11-05 16:14:26 +00:00
* @ return The address of the function , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
2014-09-18 13:03:29 +00:00
*
2016-02-04 23:51:40 +00:00
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_NO_CURRENT_CONTEXT and @ ref GLFW_PLATFORM_ERROR .
*
2016-01-31 20:32:14 +00:00
* @ remark The address of a given function is not guaranteed to be the same
2014-09-18 13:03:29 +00:00
* between contexts .
*
2016-01-31 20:32:14 +00:00
* @ remark This function may return a non - ` NULL ` address despite the
2015-02-19 14:33:51 +00:00
* associated version or extension not being available . Always check the
2015-08-27 19:40:22 +00:00
* context version or extension string first .
2015-02-19 14:33:51 +00:00
*
2016-01-31 20:32:14 +00:00
* @ pointer_lifetime The returned function pointer is valid until the context
* is destroyed or the library is terminated .
2014-09-18 13:03:29 +00:00
*
2016-01-31 20:32:14 +00:00
* @ thread_safety This function may be called from any thread .
2012-11-22 15:38:24 +00:00
*
2014-09-18 13:03:29 +00:00
* @ sa @ ref context_glext
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwExtensionSupported
2013-03-18 18:11:02 +00:00
*
2016-01-31 21:35:11 +00:00
* @ since Added in version 1.0 .
2013-03-18 18:11:02 +00:00
*
* @ ingroup context
2012-11-22 15:38:24 +00:00
*/
2012-06-04 22:16:40 +00:00
GLFWAPI GLFWglproc glfwGetProcAddress ( const char * procname ) ;
2010-09-07 15:34:51 +00:00
2017-02-07 19:56:48 +00:00
/*! @brief Returns whether the Vulkan loader and an ICD have been found.
2015-08-10 18:19:04 +00:00
*
2017-02-07 19:56:48 +00:00
* This function returns whether the Vulkan loader and any minimally functional
* ICD have been found .
2015-08-10 18:19:04 +00:00
*
2021-10-12 10:54:19 +00:00
* 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 .
2015-08-10 18:19:04 +00:00
*
2017-02-07 19:56:48 +00:00
* @ return ` GLFW_TRUE ` if Vulkan is minimally available , or ` GLFW_FALSE `
* otherwise .
2015-08-10 18:19:04 +00:00
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref vulkan_support
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
GLFWAPI int glfwVulkanSupported ( void ) ;
/*! @brief Returns the Vulkan instance extensions required by GLFW.
*
* This function returns an array of names of Vulkan instance extensions required
* by GLFW for creating Vulkan surfaces for GLFW windows . If successful , the
2019-06-14 10:53:57 +00:00
* list will always contain ` VK_KHR_surface ` , so if you don ' t require any
2015-08-10 18:19:04 +00:00
* additional extensions you can pass this list directly to the
* ` VkInstanceCreateInfo ` struct .
*
* If Vulkan is not available on the machine , this function returns ` NULL ` and
* generates a @ ref GLFW_API_UNAVAILABLE error . Call @ ref glfwVulkanSupported
2017-02-07 19:56:48 +00:00
* to check whether Vulkan is at least minimally available .
2015-08-10 18:19:04 +00:00
*
* If Vulkan is available but no set of extensions allowing window surface
* creation was found , this function returns ` NULL ` . You may still use Vulkan
* for off - screen rendering and compute work .
*
* @ param [ out ] count Where to store the number of extensions in the returned
* array . This is set to zero if an error occurred .
* @ return An array of ASCII encoded extension names , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_API_UNAVAILABLE .
*
2016-10-26 14:58:56 +00:00
* @ remark Additional extensions may be required by future versions of GLFW .
2015-08-10 18:19:04 +00:00
* You should check if any extensions you wish to enable are already in the
* returned array , as it is an error to specify an extension more than once in
* the ` VkInstanceCreateInfo ` struct .
*
* @ 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 .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref vulkan_ext
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwCreateWindowSurface
2015-08-10 18:19:04 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
2016-03-23 09:24:01 +00:00
GLFWAPI const char * * glfwGetRequiredInstanceExtensions ( uint32_t * count ) ;
2015-08-10 18:19:04 +00:00
# if defined(VK_VERSION_1_0)
/*! @brief Returns the address of the specified Vulkan instance function.
*
* This function returns the address of the specified Vulkan core or extension
* function for the specified instance . If instance is set to ` NULL ` it can
* return any function exported from the Vulkan loader , including at least the
* following functions :
*
* - ` vkEnumerateInstanceExtensionProperties `
* - ` vkEnumerateInstanceLayerProperties `
* - ` vkCreateInstance `
* - ` vkGetInstanceProcAddr `
*
* If Vulkan is not available on the machine , this function returns ` NULL ` and
* generates a @ ref GLFW_API_UNAVAILABLE error . Call @ ref glfwVulkanSupported
2017-02-07 19:56:48 +00:00
* to check whether Vulkan is at least minimally available .
2015-08-10 18:19:04 +00:00
*
* This function is equivalent to calling ` vkGetInstanceProcAddr ` with
* a platform - specific query of the Vulkan loader as a fallback .
*
* @ param [ in ] instance The Vulkan instance to query , or ` NULL ` to retrieve
* functions related to instance creation .
* @ param [ in ] procname The ASCII encoded name of the function .
* @ return The address of the function , or ` NULL ` if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED and @ ref
* GLFW_API_UNAVAILABLE .
*
* @ pointer_lifetime The returned function pointer is valid until the library
* is terminated .
*
* @ thread_safety This function may be called from any thread .
*
* @ sa @ ref vulkan_proc
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
GLFWAPI GLFWvkproc glfwGetInstanceProcAddress ( VkInstance instance , const char * procname ) ;
/*! @brief Returns whether the specified queue family can present images.
*
* This function returns whether the specified queue family of the specified
* physical device supports presentation to the platform GLFW was built for .
*
* If Vulkan or the required window surface creation instance extensions are
* not available on the machine , or if the specified instance was not created
* with the required extensions , this function returns ` GLFW_FALSE ` and
* generates a @ ref GLFW_API_UNAVAILABLE error . Call @ ref glfwVulkanSupported
2017-02-07 19:56:48 +00:00
* to check whether Vulkan is at least minimally available and @ ref
2015-08-10 18:19:04 +00:00
* glfwGetRequiredInstanceExtensions to check what instance extensions are
* required .
*
* @ param [ in ] instance The instance that the physical device belongs to .
* @ param [ in ] device The physical device that the queue family belongs to .
* @ param [ in ] queuefamily The index of the queue family to query .
* @ return ` GLFW_TRUE ` if the queue family supports presentation , or
* ` GLFW_FALSE ` otherwise .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
* GLFW_API_UNAVAILABLE and @ ref GLFW_PLATFORM_ERROR .
*
2016-10-13 23:46:56 +00:00
* @ remark @ macos This function currently always returns ` GLFW_TRUE ` , as the
2020-12-09 23:28:09 +00:00
* ` VK_MVK_macos_surface ` and ` VK_EXT_metal_surface ` extensions do not provide
2016-10-13 23:46:56 +00:00
* a ` vkGetPhysicalDevice * PresentationSupport ` type function .
*
2015-08-10 18:19:04 +00:00
* @ thread_safety This function may be called from any thread . For
* synchronization details of Vulkan objects , see the Vulkan specification .
*
* @ sa @ ref vulkan_present
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
GLFWAPI int glfwGetPhysicalDevicePresentationSupport ( VkInstance instance , VkPhysicalDevice device , uint32_t queuefamily ) ;
/*! @brief Creates a Vulkan surface for the specified window.
*
* This function creates a Vulkan surface for the specified window .
*
2017-02-07 19:56:48 +00:00
* If the Vulkan loader or at least one minimally functional ICD were not found ,
* this function returns ` VK_ERROR_INITIALIZATION_FAILED ` and generates a @ ref
* GLFW_API_UNAVAILABLE error . Call @ ref glfwVulkanSupported to check whether
* Vulkan is at least minimally available .
2015-08-10 18:19:04 +00:00
*
* If the required window surface creation instance extensions are not
* available or if the specified instance was not created with these extensions
* enabled , this function returns ` VK_ERROR_EXTENSION_NOT_PRESENT ` and
* generates a @ ref GLFW_API_UNAVAILABLE error . Call @ ref
* glfwGetRequiredInstanceExtensions to check what instance extensions are
* required .
*
2018-01-30 18:25:17 +00:00
* The window surface cannot be shared with another API so the window must
* have been created with the [ client api hint ] ( @ ref GLFW_CLIENT_API_attrib )
* set to ` GLFW_NO_API ` otherwise it generates a @ ref GLFW_INVALID_VALUE error
* and returns ` VK_ERROR_NATIVE_WINDOW_IN_USE_KHR ` .
*
2015-08-10 18:19:04 +00:00
* The window surface must be destroyed before the specified Vulkan instance .
* It is the responsibility of the caller to destroy the window surface . GLFW
* does not destroy it for you . Call ` vkDestroySurfaceKHR ` to destroy the
* surface .
*
* @ param [ in ] instance The Vulkan instance to create the surface in .
* @ param [ in ] window The window to create the surface for .
* @ param [ in ] allocator The allocator to use , or ` NULL ` to use the default
* allocator .
* @ param [ out ] surface Where to store the handle of the surface . This is set
* to ` VK_NULL_HANDLE ` if an error occurred .
* @ return ` VK_SUCCESS ` if successful , or a Vulkan error code if an
* [ error ] ( @ ref error_handling ) occurred .
*
* @ errors Possible errors include @ ref GLFW_NOT_INITIALIZED , @ ref
2018-01-30 18:25:17 +00:00
* GLFW_API_UNAVAILABLE , @ ref GLFW_PLATFORM_ERROR and @ ref GLFW_INVALID_VALUE
2015-08-10 18:19:04 +00:00
*
2016-10-26 14:58:56 +00:00
* @ remark If an error occurs before the creation call is made , GLFW returns
2015-08-10 18:19:04 +00:00
* the Vulkan error code most appropriate for the error . Appropriate use of
* @ ref glfwVulkanSupported and @ ref glfwGetRequiredInstanceExtensions should
2016-03-07 13:42:51 +00:00
* eliminate almost all occurrences of these errors .
2015-08-10 18:19:04 +00:00
*
2021-12-26 17:02:00 +00:00
* @ 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 .
2016-10-13 23:46:56 +00:00
*
* @ remark @ macos This function creates and sets a ` CAMetalLayer ` instance for
* the window content view , which is required for MoltenVK to function .
*
2021-12-26 17:02:00 +00:00
* @ remark @ x11 By default GLFW prefers the ` VK_KHR_xcb_surface ` extension ,
* with the ` VK_KHR_xlib_surface ` extension as a fallback . You can make
* ` VK_KHR_xlib_surface ` the preferred extension by setting the
2020-12-09 23:11:44 +00:00
* [ GLFW_X11_XCB_VULKAN_SURFACE ] ( @ ref GLFW_X11_XCB_VULKAN_SURFACE_hint ) init
2021-12-26 17:02:00 +00:00
* hint . The name of the selected extension , if any , is included in the array
* returned by @ ref glfwGetRequiredInstanceExtensions .
2020-12-09 23:11:44 +00:00
*
2015-08-10 18:19:04 +00:00
* @ thread_safety This function may be called from any thread . For
* synchronization details of Vulkan objects , see the Vulkan specification .
*
* @ sa @ ref vulkan_surface
2016-09-14 18:17:26 +00:00
* @ sa @ ref glfwGetRequiredInstanceExtensions
2015-08-10 18:19:04 +00:00
*
* @ since Added in version 3.2 .
*
* @ ingroup vulkan
*/
GLFWAPI VkResult glfwCreateWindowSurface ( VkInstance instance , GLFWwindow * window , const VkAllocationCallbacks * allocator , VkSurfaceKHR * surface ) ;
# endif /*VK_VERSION_1_0*/
2010-09-07 15:34:51 +00:00
2011-07-27 15:09:17 +00:00
/*************************************************************************
* Global definition cleanup
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */
# ifdef GLFW_WINGDIAPI_DEFINED
# undef WINGDIAPI
# undef GLFW_WINGDIAPI_DEFINED
# endif
# ifdef GLFW_CALLBACK_DEFINED
# undef CALLBACK
# undef GLFW_CALLBACK_DEFINED
# endif
2017-07-03 12:25:47 +00:00
/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally
* defined by some gl . h variants ( OpenBSD ) so define it after if needed .
*/
# ifndef GLAPIENTRY
# define GLAPIENTRY APIENTRY
2022-05-03 17:54:08 +00:00
# define GLFW_GLAPIENTRY_DEFINED
2017-07-03 12:25:47 +00:00
# endif
2011-07-27 15:09:17 +00:00
/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
2010-09-07 15:34:51 +00:00
# ifdef __cplusplus
}
# endif
2013-01-15 00:59:56 +00:00
# endif /* _glfw3_h_ */
2010-09-07 15:34:51 +00:00