From e9ea3f50bfeb2effd760df2ee1b9ada21c6599ba Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 24 Jan 2015 14:40:39 +0100 Subject: [PATCH] Updated GLFW to version 3.1 --- external/glfw3/glfw3.dll | Bin 172569 -> 187203 bytes external/glfw3/include/GLFW/glfw3.h | 1982 ++++++++++++++++----- external/glfw3/include/GLFW/glfw3native.h | 212 ++- external/glfw3/lib/win32/libglfw3.a | Bin 83006 -> 89824 bytes external/glfw3/lib/win32/libglfw3dll.a | Bin 48318 -> 54834 bytes 5 files changed, 1728 insertions(+), 466 deletions(-) diff --git a/external/glfw3/glfw3.dll b/external/glfw3/glfw3.dll index 5941d1a0aff6088a7b5d79a8c99de9f63f9cded5..13aa21eb9c6aae03515881b48e1382ed81aeb133 100644 GIT binary patch literal 187203 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P%bZ7z`L0W@?_A?mZm68k$3<^vP3{ngX3=6QR zGcg6L`zyx4z~I2d08S*ku&6UN2dlGTXJBARU}9hZrL{}w>I|Ip%?-fnz)mkGO>9jyvIS61Vi%?3Bv=?hntT`>;NT|=))62 zJD-M!1vkHu=?>*-y;Pd9kU=0euk`?bA1E(2zhE@H-EEp+9GkZoB>tLr!f_Ur7t9O{ z|F1Q_VF71{&Kn>2H;NvR0qH7zxbTQfY+myZCjOSo3=9m%Sybd17#Lo}A7fwuTiBcW zB|0uX_7D$4^DjoQNa>rDg`o1+@LP8TOSdh^s@EcxH~3pP7{U6%mR)at!_xWT1OG-@ zs6F=#Z$oWjP-+R38wV(~f# zhSmd}$4VR*fs~Y_B#J>{=ryo z3^J-SMui1rOx)l9|C`_Nv>xDZJ<7nq&|Ah}cH6fw;y?fYcZWU!yB^#q<9E66@;@kOYg9O(>R$9gw1WJn{{R1fuyduL#v?fwWL_}b zyq7znrhrs{Vhj{gEKm;}dfD~w|Nq`H259_&a(0M{%5hd1f!I7y>@@#kERpK=QPJpj zQBimy`|tn%<|8tPco=%OsDY$ALsWQPeBa2x&>f<}^ZNRPg%S_IxyCuP^C_gLVfYY} z_g_@OI5uw=NJH}*mevC$Vj#EheTd2HWKsDqs$m?P*ZhW~^HA%h63*i+Dj+ldUpo2u za2lw*i9I|40YK#!$R*tZyB>(xO)GXY{B z*d3Z+`(F1=0Oen>b6Y{>Q+I$!>!lLz##f92%pgCOTXhFOis{x%{4KHn|Nn1%#TWpV z;&1c&|NlS8+zUwlyU4`=E8sy=OOT|tae=)4QUa95elqg+odKmF9~B-@`3F)ff~2+! zqV^3W88!c8U4|KYy@YL~im+}}MX#K`Nk9Rv8fDMrVsWAYnVK%(f{NsNKhqfz2 z=OO;}7rLEUpnMko^#>RabvtuF`5a)r;eqBF6`ubkT-`1zJld{2{Ob=i{{!hS72se0 zjqyYCPY}mfgn#`>#uMG%5>UPblrID2%Ru=GP`(0`uL9+(K=?i?Far!A0^TOACrj9y zYfTuNFECiwsBjcHmV|Vds0diT<9BsYk>Pg@Q4!&Htx@5ChH9saicDvSiU_DY=5L(` ziqmcv6@lg>3gBu36#kt#DgwyLUS|LM|KB=9MWl$w+C@dCcmarAIty9ZOAko80Y~%e zbOA)P8l=7Pjp2Uj$L1pfVB4eP;tw|;5imReVnF0U?rpGT0Tu4uF)9ir zVlSd%85k@Nmne3|s3?FO`_gj}1Gt$0btNOnl}p*cu8ckm)my^;QYn^!A#FnQ8yO@Y zfz?*BfpTB-5t+liWem-4WT09=rFID@>=l}i$h>q}#J~XZFS=$MuthS5CqRQ4)4i)= zKp|1026wL{7WaN-g}N8Xd?t`b?yxd2ync$P??CMpP67#QGoxu}2!lR%AkaCKG1 z0+s_Oy4b_$;UB{Sa{tRTW6()HGhECTDouMZ>eUH4b zS_lgp*DL%j+nE>`dSmbG=Vf4E*ax!XwIsMcXg_UhQ_hz*u_)Vk2lUs@wGp$oI28#pHFms0ehsoΞ-L6MET~s(g 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
    gcck-pwt3S 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 literal 172569 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

    lda^CZYx=t@nN4jG)Dt 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 Wk!Nw{R-COFxGPZVS+FQ{(>wq=)NC;T diff --git a/external/glfw3/include/GLFW/glfw3.h b/external/glfw3/include/GLFW/glfw3.h index c54abde84..89414491e 100644 --- a/external/glfw3/include/GLFW/glfw3.h +++ b/external/glfw3/include/GLFW/glfw3.h @@ -1,7 +1,6 @@ /************************************************************************* - * GLFW - An OpenGL library - * API version: 3.0 - * WWW: http://www.glfw.org/ + * GLFW 3.1 - www.glfw.org + * A library for OpenGL, window and input *------------------------------------------------------------------------ * Copyright (c) 2002-2006 Marcus Geelnard * Copyright (c) 2006-2010 Camilla Berglund @@ -39,27 +38,32 @@ extern "C" { * Doxygen documentation *************************************************************************/ -/*! @defgroup clipboard Clipboard support - */ /*! @defgroup context Context handling + * + * This is the reference documentation for context related functions. For more + * information, see the @ref context. */ -/*! @defgroup error Error handling - */ -/*! @defgroup gamma Gamma ramp support - */ -/*! @defgroup init Initialization and version information +/*! @defgroup init Initialization, version and errors + * + * This is the reference documentation for initialization and termination of + * the library, version management and error handling. For more information, + * see the @ref intro. */ /*! @defgroup input Input handling + * + * This is the reference documentation for input related functions and types. + * For more information, see the @ref input. */ /*! @defgroup monitor Monitor handling - */ -/*! @defgroup time Time input + * + * This is the reference documentation for monitor related functions and types. + * For more information, see the @ref monitor. */ /*! @defgroup window Window handling * - * This is the reference documentation for the window handling API, including - * creation, deletion and event polling. For more information, see the - * [article on window handling](@ref window). + * This is the reference documentation for window related functions and types, + * including creation, deletion and event polling. For more information, see + * the @ref window. */ @@ -131,74 +135,94 @@ extern "C" { #define GLFW_CALLBACK_DEFINED #endif /* CALLBACK */ -/* Most variants on Windows need wchar_t */ -#if defined(_WIN32) +/* Most GL/glu.h variants on Windows need wchar_t + * OpenGL/gl.h blocks the definition of ptrdiff_t by glext.h on OS X */ +#if !defined(GLFW_INCLUDE_NONE) #include #endif - -/* ---------------- GLFW related system specific defines ----------------- */ +/* Include the chosen client API headers. + */ +#if defined(__APPLE_CC__) + #if defined(GLFW_INCLUDE_GLCOREARB) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #elif !defined(GLFW_INCLUDE_NONE) + #if !defined(GLFW_INCLUDE_GLEXT) + #define GL_GLEXT_LEGACY + #endif + #include + #endif + #if defined(GLFW_INCLUDE_GLU) + #include + #endif +#else + #if defined(GLFW_INCLUDE_GLCOREARB) + #include + #elif defined(GLFW_INCLUDE_ES1) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #elif defined(GLFW_INCLUDE_ES2) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #elif defined(GLFW_INCLUDE_ES3) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #elif defined(GLFW_INCLUDE_ES31) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #elif !defined(GLFW_INCLUDE_NONE) + #include + #if defined(GLFW_INCLUDE_GLEXT) + #include + #endif + #endif + #if defined(GLFW_INCLUDE_GLU) + #include + #endif +#endif #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) + /* GLFW_DLL must be defined by applications that are linking against the DLL + * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW + * configuration header when compiling the DLL version of the library. + */ #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined" #endif +/* GLFWAPI is used to declare public API functions for export + * from the DLL / shared library / dynamic library. + */ #if defined(_WIN32) && defined(_GLFW_BUILD_DLL) - - /* We are building a Win32 DLL */ + /* We are building GLFW as a Win32 DLL */ #define GLFWAPI __declspec(dllexport) - #elif defined(_WIN32) && defined(GLFW_DLL) - - /* We are calling a Win32 DLL */ + /* We are calling GLFW as a Win32 DLL */ #if defined(__LCC__) #define GLFWAPI extern #else #define GLFWAPI __declspec(dllimport) #endif - #elif defined(__GNUC__) && defined(_GLFW_BUILD_DLL) - + /* We are building GLFW as a shared / dynamic library */ #define GLFWAPI __attribute__((visibility("default"))) - #else - - /* We are either building/calling a static lib or we are non-win32 */ + /* We are building or calling GLFW as a static library */ #define GLFWAPI - #endif /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ -/* Include the chosen client API headers. - */ -#if defined(__APPLE_CC__) - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #elif !defined(GLFW_INCLUDE_NONE) - #define GL_GLEXT_LEGACY - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#else - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #elif defined(GLFW_INCLUDE_ES1) - #include - #elif defined(GLFW_INCLUDE_ES2) - #include - #elif defined(GLFW_INCLUDE_ES3) - #include - #elif !defined(GLFW_INCLUDE_NONE) - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#endif - /************************************************************************* * GLFW API tokens @@ -218,27 +242,36 @@ extern "C" { * backward-compatible. * @ingroup init */ -#define GLFW_VERSION_MINOR 0 +#define GLFW_VERSION_MINOR 1 /*! @brief The revision number of the GLFW library. * * This is incremented when a bug fix release is made that does not contain any * API changes. * @ingroup init */ -#define GLFW_VERSION_REVISION 1 +#define GLFW_VERSION_REVISION 0 /*! @} */ /*! @name Key and button actions * @{ */ -/*! @brief The key or button was released. +/*! @brief The key or mouse button was released. + * + * The key or mouse button was released. + * * @ingroup input */ #define GLFW_RELEASE 0 -/*! @brief The key or button was pressed. +/*! @brief The key or mouse button was pressed. + * + * The key or mouse button was pressed. + * * @ingroup input */ #define GLFW_PRESS 1 /*! @brief The key was held down until it repeated. + * + * The key was held down until it repeated. + * * @ingroup input */ #define GLFW_REPEAT 2 @@ -246,20 +279,22 @@ extern "C" { /*! @defgroup keys Keyboard keys * - * 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). + * See [key input](@ref input_key) for how these are used. * - * The naming of the key codes follow these rules: - * - The US keyboard layout is used - * - Names of printable alpha-numeric characters are used (e.g. "A", "R", - * "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.) + * 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 + * - Names of printable alpha-numeric characters are used (e.g. "A", "R", + * "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.) * * @ingroup input * @{ @@ -396,6 +431,9 @@ extern "C" { /*! @} */ /*! @defgroup mods Modifier key flags + * + * See [key input](@ref input_key) for how these are used. + * * @ingroup input * @{ */ @@ -415,6 +453,9 @@ extern "C" { /*! @} */ /*! @defgroup buttons Mouse buttons + * + * See [mouse button input](@ref input_mouse_button) for how these are used. + * * @ingroup input * @{ */ #define GLFW_MOUSE_BUTTON_1 0 @@ -432,6 +473,9 @@ extern "C" { /*! @} */ /*! @defgroup joysticks Joysticks + * + * See [joystick input](@ref joystick) for how these are used. + * * @ingroup input * @{ */ #define GLFW_JOYSTICK_1 0 @@ -454,36 +498,128 @@ extern "C" { /*! @} */ /*! @defgroup errors Error codes - * @ingroup error + * + * See [error handling](@ref error_handling) for how these are used. + * + * @ingroup init * @{ */ /*! @brief GLFW has not been initialized. + * + * This occurs if a GLFW function was called that may not be called unless the + * library is [initialized](@ref intro_init). + * + * @par Analysis + * Application programmer error. Initialize GLFW before calling any function + * that requires initialization. */ #define GLFW_NOT_INITIALIZED 0x00010001 /*! @brief No context is current for this thread. + * + * 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. + * + * @par Analysis + * Application programmer error. Ensure a context is current before calling + * functions that require a current context. */ #define GLFW_NO_CURRENT_CONTEXT 0x00010002 -/*! @brief One of the enum parameters for the function was given an invalid - * enum. +/*! @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 + * requesting [GLFW_RED_BITS](@ref window_hints_fb) with @ref + * glfwGetWindowAttrib. + * + * @par Analysis + * Application programmer error. Fix the offending call. */ #define GLFW_INVALID_ENUM 0x00010003 -/*! @brief One of the parameters for the function was given an invalid value. +/*! @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. + * + * @par Analysis + * Application programmer error. Fix the offending call. */ #define GLFW_INVALID_VALUE 0x00010004 /*! @brief A memory allocation failed. + * + * A memory allocation failed. + * + * @par Analysis + * A bug in GLFW or the underlying operating system. Report the bug to our + * [issue tracker](https://github.com/glfw/glfw/issues). */ #define GLFW_OUT_OF_MEMORY 0x00010005 /*! @brief GLFW could not find support for the requested client API on the * system. + * + * GLFW could not find support for the requested client API on the system. + * + * @par Analysis + * The installed graphics driver does not support the requested client API, or + * does not support it via the chosen context creation backend. Below are + * a few examples. + * + * @par + * Some pre-installed Windows graphics drivers do not support OpenGL. AMD only + * supports OpenGL ES via EGL, while Nvidia and Intel only supports it via + * a WGL or GLX extension. OS X does not provide OpenGL ES at all. The Mesa + * EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary + * driver. */ #define GLFW_API_UNAVAILABLE 0x00010006 -/*! @brief The requested client API version is not available. +/*! @brief The requested OpenGL or OpenGL ES version is not available. + * + * The requested OpenGL or OpenGL ES version (including any requested profile + * or context option) is not available on this machine. + * + * @par 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 + * requirements. + * + * @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. */ #define GLFW_VERSION_UNAVAILABLE 0x00010007 /*! @brief A platform-specific error occurred that does not match any of the * more specific categories. + * + * A platform-specific error occurred that does not match any of the more + * specific categories. + * + * @par Analysis + * A bug in GLFW or the underlying operating system. Report the bug to our + * [issue tracker](https://github.com/glfw/glfw/issues). */ #define GLFW_PLATFORM_ERROR 0x00010008 -/*! @brief The clipboard did not contain data in the requested format. +/*! @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. + * + * @par Analysis + * If emitted during window creation, one or more + * [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. */ #define GLFW_FORMAT_UNAVAILABLE 0x00010009 /*! @} */ @@ -493,6 +629,8 @@ extern "C" { #define GLFW_RESIZABLE 0x00020003 #define GLFW_VISIBLE 0x00020004 #define GLFW_DECORATED 0x00020005 +#define GLFW_AUTO_ICONIFY 0x00020006 +#define GLFW_FLOATING 0x00020007 #define GLFW_RED_BITS 0x00021001 #define GLFW_GREEN_BITS 0x00021002 @@ -509,6 +647,7 @@ extern "C" { #define GLFW_SAMPLES 0x0002100D #define GLFW_SRGB_CAPABLE 0x0002100E #define GLFW_REFRESH_RATE 0x0002100F +#define GLFW_DOUBLEBUFFER 0x00021010 #define GLFW_CLIENT_API 0x00022001 #define GLFW_CONTEXT_VERSION_MAJOR 0x00022002 @@ -518,6 +657,7 @@ extern "C" { #define GLFW_OPENGL_FORWARD_COMPAT 0x00022006 #define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007 #define GLFW_OPENGL_PROFILE 0x00022008 +#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009 #define GLFW_OPENGL_API 0x00030001 #define GLFW_OPENGL_ES_API 0x00030002 @@ -538,9 +678,54 @@ extern "C" { #define GLFW_CURSOR_HIDDEN 0x00034002 #define GLFW_CURSOR_DISABLED 0x00034003 +#define GLFW_ANY_RELEASE_BEHAVIOR 0 +#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001 +#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002 + +/*! @defgroup shapes Standard cursor shapes + * + * See [standard cursor creation](@ref cursor_standard) for how these are used. + * + * @ingroup input + * @{ */ + +/*! @brief The regular arrow cursor shape. + * + * The regular arrow cursor. + */ +#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 +/*! @brief The crosshair shape. + * + * The crosshair shape. + */ +#define GLFW_CROSSHAIR_CURSOR 0x00036003 +/*! @brief The hand shape. + * + * The hand shape. + */ +#define GLFW_HAND_CURSOR 0x00036004 +/*! @brief The horizontal resize arrow shape. + * + * The horizontal resize arrow shape. + */ +#define GLFW_HRESIZE_CURSOR 0x00036005 +/*! @brief The vertical resize arrow shape. + * + * The vertical resize arrow shape. + */ +#define GLFW_VRESIZE_CURSOR 0x00036006 +/*! @} */ + #define GLFW_CONNECTED 0x00040001 #define GLFW_DISCONNECTED 0x00040002 +#define GLFW_DONT_CARE -1 + /************************************************************************* * GLFW API types @@ -571,6 +756,14 @@ typedef struct GLFWmonitor GLFWmonitor; */ typedef struct GLFWwindow GLFWwindow; +/*! @brief Opaque cursor object. + * + * Opaque cursor object. + * + * @ingroup cursor + */ +typedef struct GLFWcursor GLFWcursor; + /*! @brief The function signature for error callbacks. * * This is the function signature for error callback functions. @@ -580,7 +773,7 @@ typedef struct GLFWwindow GLFWwindow; * * @sa glfwSetErrorCallback * - * @ingroup error + * @ingroup init */ typedef void (* GLFWerrorfun)(int,const char*); @@ -588,7 +781,7 @@ typedef void (* GLFWerrorfun)(int,const char*); * * This is the function signature for window position callback functions. * - * @param[in] window The window that the user moved. + * @param[in] window The window that was moved. * @param[in] xpos The new x-coordinate, in screen coordinates, of the * upper-left corner of the client area of the window. * @param[in] ypos The new y-coordinate, in screen coordinates, of the @@ -604,7 +797,7 @@ typedef void (* GLFWwindowposfun)(GLFWwindow*,int,int); * * This is the function signature for window size callback functions. * - * @param[in] window The window that the user resized. + * @param[in] window The window that was resized. * @param[in] width The new width, in screen coordinates, of the window. * @param[in] height The new height, in screen coordinates, of the window. * @@ -642,9 +835,9 @@ typedef void (* GLFWwindowrefreshfun)(GLFWwindow*); * * This is the function signature for window focus callback functions. * - * @param[in] window The window that was focused or defocused. - * @param[in] focused `GL_TRUE` if the window was focused, or `GL_FALSE` if - * it was defocused. + * @param[in] window The window that gained or lost input focus. + * @param[in] focused `GL_TRUE` if the window was given input focus, or + * `GL_FALSE` if it lost it. * * @sa glfwSetWindowFocusCallback * @@ -704,8 +897,8 @@ typedef void (* GLFWmousebuttonfun)(GLFWwindow*,int,int,int); * This is the function signature for cursor position callback functions. * * @param[in] window The window that received the event. - * @param[in] xpos The new x-coordinate of the cursor. - * @param[in] ypos The new y-coordinate of the cursor. + * @param[in] xpos The new x-coordinate, in screen coordinates, of the cursor. + * @param[in] ypos The new y-coordinate, in screen coordinates, of the cursor. * * @sa glfwSetCursorPosCallback * @@ -748,7 +941,7 @@ typedef void (* GLFWscrollfun)(GLFWwindow*,double,double); * @param[in] window The window that received the event. * @param[in] key The [keyboard key](@ref keys) that was pressed or released. * @param[in] scancode The system-specific scancode of the key. - * @param[in] action @ref GLFW_PRESS, @ref GLFW_RELEASE or @ref GLFW_REPEAT. + * @param[in] action `GLFW_PRESS`, `GLFW_RELEASE` or `GLFW_REPEAT`. * @param[in] mods Bit field describing which [modifier keys](@ref mods) were * held down. * @@ -763,7 +956,7 @@ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); * This is the function signature for Unicode character callback functions. * * @param[in] window The window that received the event. - * @param[in] character The Unicode code point of the character. + * @param[in] codepoint The Unicode code point of the character. * * @sa glfwSetCharCallback * @@ -771,6 +964,38 @@ typedef void (* GLFWkeyfun)(GLFWwindow*,int,int,int,int); */ typedef void (* GLFWcharfun)(GLFWwindow*,unsigned int); +/*! @brief The function signature for Unicode character with modifiers + * callbacks. + * + * This is the function signature for Unicode character with modifiers callback + * functions. It is called for each input character, regardless of what + * modifier keys are held down. + * + * @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. + * + * @sa glfwSetCharModsCallback + * + * @ingroup input + */ +typedef void (* GLFWcharmodsfun)(GLFWwindow*,unsigned int,int); + +/*! @brief The function signature for file drop callbacks. + * + * This is the function signature for file drop callbacks. + * + * @param[in] window The window that received the event. + * @param[in] count The number of dropped files. + * @param[in] names The UTF-8 encoded path names of the dropped files. + * + * @sa glfwSetDropCallback + * + * @ingroup input + */ +typedef void (* GLFWdropfun)(GLFWwindow*,int,const char**); + /*! @brief The function signature for monitor configuration callbacks. * * This is the function signature for monitor configuration callback functions. @@ -790,7 +1015,7 @@ typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); * * @ingroup monitor */ -typedef struct +typedef struct GLFWvidmode { /*! The width, in screen coordinates, of the video mode. */ @@ -818,9 +1043,9 @@ typedef struct * * @sa glfwGetGammaRamp glfwSetGammaRamp * - * @ingroup gamma + * @ingroup monitor */ -typedef struct +typedef struct GLFWgammaramp { /*! An array of value describing the response of the red channel. */ @@ -836,6 +1061,21 @@ typedef struct unsigned int size; } GLFWgammaramp; +/*! @brief Image data. + */ +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; + /************************************************************************* * GLFW API functions @@ -844,56 +1084,70 @@ typedef struct /*! @brief Initializes the GLFW library. * * This function initializes the GLFW library. Before most GLFW functions can - * be used, GLFW must be initialized, and before a program terminates GLFW + * be used, GLFW must be initialized, and before an application terminates GLFW * should be terminated in order to free any resources allocated during or * after initialization. * * If this function fails, it calls @ref glfwTerminate before returning. If it - * succeeds, you should call @ref glfwTerminate before the program exits. + * succeeds, you should call @ref glfwTerminate before the application exits. * * Additional calls to this function after successful initialization but before - * termination will succeed but will do nothing. + * termination will return `GL_TRUE` immediately. * - * @return `GL_TRUE` if successful, or `GL_FALSE` if an error occurred. + * @return `GL_TRUE` if successful, or `GL_FALSE` if an + * [error](@ref error_handling) occurred. * - * @par New in GLFW 3 - * This function no longer registers @ref glfwTerminate with `atexit`. - * - * @note This function may only be called from the main thread. - * - * @note This function may take several seconds to complete on some systems, - * while on other systems it may take only a fraction of a second to complete. - * - * @note **Mac OS X:** This function will change the current directory of the + * @remarks __OS X:__ This function will change the current directory of the * application to the `Contents/Resources` subdirectory of the application's - * bundle, if present. + * bundle, if present. This can be disabled with a + * [compile-time option](@ref compile_options_osx). * + * @remarks __X11:__ If the `LC_CTYPE` category of the current locale is set to + * `"C"` then the environment's locale will be applied to that category. This + * is done because character input will not function when `LC_CTYPE` is set to + * `"C"`. If another locale was set before this function was called, it will + * be left untouched. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref intro_init * @sa glfwTerminate * + * @since Added in GLFW 1.0. + * * @ingroup init */ GLFWAPI int glfwInit(void); /*! @brief Terminates the GLFW library. * - * This function destroys all remaining windows, frees any allocated resources - * and sets the library to an uninitialized state. Once this is called, you - * must again call @ref glfwInit successfully before you will be able to use - * most GLFW functions. + * 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. * * If GLFW has been successfully initialized, this function should be called - * before the program exits. If initialization fails, there is no need to call - * this function, as it is called by @ref glfwInit before it returns failure. + * 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. * * @remarks This function may be called before @ref glfwInit. * - * @note This function may only be called from the main thread. - * * @warning No window's context may be current on another thread when this * function is called. * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref intro_init * @sa glfwInit * + * @since Added in GLFW 1.0. + * * @ingroup init */ GLFWAPI void glfwTerminate(void); @@ -904,46 +1158,55 @@ GLFWAPI void glfwTerminate(void); * 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. * + * Any or all of the version arguments may be `NULL`. This function always + * succeeds. + * * @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`. * * @remarks This function may be called before @ref glfwInit. * - * @remarks This function may be called from any thread. + * @par Thread Safety + * This function may be called from any thread. * + * @sa @ref intro_version * @sa glfwGetVersionString * + * @since Added in GLFW 1.0. + * * @ingroup init */ GLFWAPI void glfwGetVersion(int* major, int* minor, int* rev); /*! @brief Returns a string describing the compile-time configuration. * - * This function returns a static string generated at compile-time according to - * which configuration macros were defined. This is intended for use when - * submitting bug reports, to allow developers to see which code paths are - * enabled in a binary. + * This function returns the compile-time generated + * [version string](@ref intro_version_string) of the GLFW library binary. It + * describes the version, platform, compiler and any platform-specific + * compile-time options. * - * The format of the string is as follows: - * - The version of GLFW - * - The name of the window system API - * - The name of the context creation API - * - Any additional options or APIs + * __Do not use the version string__ to parse the GLFW library version. The + * @ref glfwGetVersion function already provides the version of the running + * library binary. * - * For example, when compiling GLFW 3.0 with MinGW using the Win32 and WGL - * back ends, the version string may look something like this: - * - * 3.0.0 Win32 WGL MinGW + * This function always succeeds. * * @return The GLFW version string. * * @remarks This function may be called before @ref glfwInit. * - * @remarks This function may be called from any thread. + * @par Pointer Lifetime + * The returned string is static and compile-time generated. * + * @par Thread Safety + * This function may be called from any thread. + * + * @sa @ref intro_version * @sa glfwGetVersion * + * @since Added in GLFW 3.0. + * * @ingroup init */ GLFWAPI const char* glfwGetVersionString(void); @@ -953,23 +1216,31 @@ GLFWAPI const char* glfwGetVersionString(void); * This function sets the error callback, which is called with an error code * and a human-readable description each time a GLFW error occurs. * + * 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. + * + * Once set, the error callback remains set even after the library has been + * terminated. + * * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set. * * @remarks This function may be called before @ref glfwInit. * - * @note The error callback is called by the thread where the error was - * generated. If you are using GLFW from multiple threads, your error callback - * needs to be written accordingly. + * @par Thread Safety + * This function may only be called from the main thread. * - * @note Because the description string provided to the callback 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 that, you need - * to make your own copy of it before returning. + * @sa @ref error_handling * - * @ingroup error + * @since Added in GLFW 3.0. + * + * @ingroup init */ GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); @@ -978,19 +1249,25 @@ GLFWAPI GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun cbfun); * This function returns an array of handles for all currently connected * monitors. * - * @param[out] count Where to store the size of the returned array. This is - * set to zero if an error occurred. - * @return An array of monitor handles, or `NULL` if an error occurred. + * @param[out] count Where to store the number of monitors in the returned + * array. This is set to zero if an error occurred. + * @return An array of monitor handles, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @note The returned array is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. * - * @note The returned array is valid only until the monitor configuration - * changes. See @ref glfwSetMonitorCallback to receive notifications of - * configuration changes. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref monitor_monitors + * @sa @ref monitor_event * @sa glfwGetPrimaryMonitor * + * @since Added in GLFW 3.0. + * * @ingroup monitor */ GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); @@ -1000,10 +1277,17 @@ GLFWAPI GLFWmonitor** glfwGetMonitors(int* count); * This function returns the primary monitor. This is usually the monitor * where elements like the Windows task bar or the OS X menu bar is located. * - * @return The primary monitor, or `NULL` if an error occurred. + * @return The primary monitor, or `NULL` if an [error](@ref error_handling) + * occurred. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_monitors * @sa glfwGetMonitors * + * @since Added in GLFW 3.0. + * * @ingroup monitor */ GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); @@ -1013,10 +1297,20 @@ GLFWAPI GLFWmonitor* glfwGetPrimaryMonitor(void); * This function returns the position, in screen coordinates, of the upper-left * corner of the specified monitor. * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * * @param[in] 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`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in GLFW 3.0. + * * @ingroup monitor */ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); @@ -1026,31 +1320,55 @@ GLFWAPI void glfwGetMonitorPos(GLFWmonitor* monitor, int* xpos, int* ypos); * This function returns the size, in millimetres, of the display area of the * specified monitor. * - * @param[in] monitor The monitor to query. - * @param[out] width Where to store the width, in mm, of the monitor's display - * area, or `NULL`. - * @param[out] height Where to store the height, in mm, of the monitor's - * display area, or `NULL`. + * Some systems do not provide accurate monitor size information, either + * 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. * - * @note Some operating systems do not provide accurate information, either - * because the monitor's EDID data is incorrect, or because the driver does not - * report it accurately. + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. + * + * @param[in] monitor The monitor to query. + * @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`. + * + * @remarks __Windows:__ The OS calculates the returned physical size from the + * current resolution and system DPI instead of querying the monitor EDID data. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in GLFW 3.0. * * @ingroup monitor */ -GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* width, int* height); +GLFWAPI void glfwGetMonitorPhysicalSize(GLFWmonitor* monitor, int* widthMM, int* heightMM); /*! @brief Returns the name of the specified monitor. * * This function returns a human-readable name, encoded as UTF-8, of the - * specified monitor. + * specified monitor. The name typically reflects the make and model of the + * monitor and is not guaranteed to be unique among the connected monitors. * * @param[in] monitor The monitor to query. - * @return The UTF-8 encoded name of the monitor, or `NULL` if an error - * occurred. + * @return The UTF-8 encoded name of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @note The returned string is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_properties + * + * @since Added in GLFW 3.0. * * @ingroup monitor */ @@ -1064,12 +1382,19 @@ GLFWAPI const char* glfwGetMonitorName(GLFWmonitor* monitor); * * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). * - * @bug **X11:** This callback is not yet called on monitor configuration + * @bug __X11:__ This callback is not yet called on monitor configuration * changes. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_event + * + * @since Added in GLFW 3.0. + * * @ingroup monitor */ GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); @@ -1084,16 +1409,25 @@ GLFWAPI GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun cbfun); * @param[in] monitor The monitor to query. * @param[out] count Where to store the number of video modes in the returned * array. This is set to zero if an error occurred. - * @return An array of video modes, or `NULL` if an error occurred. + * @return An array of video modes, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @note The returned array is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. * - * @note The returned array is valid only until this function is called again - * for the specified monitor. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref monitor_modes * @sa glfwGetVideoMode * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Changed to return an array of modes for a specific monitor. + * * @ingroup monitor */ GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); @@ -1101,17 +1435,26 @@ GLFWAPI const GLFWvidmode* glfwGetVideoModes(GLFWmonitor* monitor, int* count); /*! @brief Returns the current mode of the specified monitor. * * This function returns the current video mode of the specified monitor. If - * you are using a full screen window, the return value will therefore depend - * on whether it is focused. + * you have created a full screen window for that monitor, the return value + * will depend on whether that window is iconified. * * @param[in] monitor The monitor to query. - * @return The current mode of the monitor, or `NULL` if an error occurred. + * @return The current mode of the monitor, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @note The returned struct is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_modes * @sa glfwGetVideoModes * + * @since Added in GLFW 3.0. Replaces `glfwGetDesktopMode`. + * * @ingroup monitor */ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); @@ -1124,34 +1467,64 @@ GLFWAPI const GLFWvidmode* glfwGetVideoMode(GLFWmonitor* monitor); * @param[in] monitor The monitor whose gamma ramp to set. * @param[in] gamma The desired exponent. * - * @ingroup gamma + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in GLFW 3.0. + * + * @ingroup monitor */ GLFWAPI void glfwSetGamma(GLFWmonitor* monitor, float gamma); -/*! @brief Retrieves the current gamma ramp for the specified monitor. +/*! @brief Returns the current gamma ramp for the specified monitor. * - * This function retrieves the current gamma ramp of the specified monitor. + * This function returns the current gamma ramp of the specified monitor. * * @param[in] monitor The monitor to query. - * @return The current gamma ramp, or `NULL` if an error occurred. + * @return The current gamma ramp, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @note The value arrays of the returned ramp are allocated and freed by GLFW. - * You should not free them yourself. + * @par 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. * - * @ingroup gamma + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in GLFW 3.0. + * + * @ingroup monitor */ GLFWAPI const GLFWgammaramp* glfwGetGammaRamp(GLFWmonitor* monitor); /*! @brief Sets the current gamma ramp for the specified monitor. * - * This function sets the current gamma ramp for the specified monitor. + * 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. * * @param[in] monitor The monitor whose gamma ramp to set. * @param[in] ramp The gamma ramp to use. * * @note Gamma ramp sizes other than 256 are not supported by all hardware. * - * @ingroup gamma + * @par Pointer Lifetime + * The specified gamma ramp is copied before this function returns. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref monitor_gamma + * + * @since Added in GLFW 3.0. + * + * @ingroup monitor */ GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); @@ -1160,10 +1533,14 @@ GLFWAPI void glfwSetGammaRamp(GLFWmonitor* monitor, const GLFWgammaramp* ramp); * This function resets all window hints to their * [default values](@ref window_hints_values). * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_hints * @sa glfwWindowHint * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwDefaultWindowHints(void); @@ -1173,46 +1550,70 @@ GLFWAPI void glfwDefaultWindowHints(void); * This function sets hints for the next call to @ref glfwCreateWindow. The * hints, once set, retain their values until changed by a call to @ref * glfwWindowHint or @ref glfwDefaultWindowHints, or until the library is - * terminated with @ref glfwTerminate. + * terminated. * * @param[in] target The [window hint](@ref window_hints) to set. * @param[in] hint The new value of the window hint. * - * @par New in GLFW 3 - * Hints are no longer reset to their default values on window creation. To - * set default hint values, use @ref glfwDefaultWindowHints. - * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_hints * @sa glfwDefaultWindowHints * + * @since Added in GLFW 3.0. Replaces `glfwOpenWindowHint`. + * * @ingroup window */ GLFWAPI void glfwWindowHint(int target, int hint); /*! @brief Creates a window and its associated context. * - * This function creates a window and its associated context. Most of the - * options controlling how the window and its context should be created are - * specified through @ref glfwWindowHint. + * 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). * * Successful creation does not change which context is current. Before you - * can use the newly created context, you need to make it current using @ref - * glfwMakeContextCurrent. + * 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. * - * Note that the created window and context may differ from what you requested, - * as not all parameters and hints are + * The created window, framebuffer and context may differ from what you + * requested, as not all parameters and hints are * [hard constraints](@ref window_hints_hard). This includes the size of the - * window, especially for full screen windows. To retrieve the actual - * attributes of the created window and context, use queries like @ref + * window, especially for full screen windows. To query the actual attributes + * of the created window, framebuffer and context, use queries like @ref * glfwGetWindowAttrib and @ref glfwGetWindowSize. * - * To create the window at a specific position, make it initially invisible - * using the `GLFW_VISIBLE` window hint, set its position and then show it. + * To create a full screen window, you need to specify the monitor the window + * will cover. If no monitor is specified, windowed mode will be used. 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. * - * If a fullscreen window is active, the screensaver is prohibited from + * For full screen windows, the specified size becomes the resolution of the + * window's _desired video mode_. As long as a full screen window has input + * focus, 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. + * + * By default, newly created windows use the placement recommended by the + * window system. To create the window at a specific position, make it + * initially invisible using the [GLFW_VISIBLE](@ref window_hints_wnd) window + * hint, set its [position](@ref window_pos) and then [show](@ref window_hide) + * it. + * + * If a full screen window has input focus, the screensaver is prohibited from * starting. * + * 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 + * actual [size](@ref window_size) after creation. + * + * The [swap interval](@ref buffer_swap) is not set during window creation and + * the initial value may vary depending on driver settings and defaults. + * * @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. @@ -1222,23 +1623,47 @@ GLFWAPI void glfwWindowHint(int target, int hint); * windowed mode. * @param[in] share The window whose context to share resources with, or `NULL` * to not share resources. - * @return The handle of the created window, or `NULL` if an error occurred. + * @return The handle of the created window, or `NULL` if an + * [error](@ref error_handling) occurred. * - * @remarks **Windows:** If the executable has an icon resource named + * @remarks __Windows:__ Window creation will fail if the Microsoft GDI + * software OpenGL implementation is the only one available. + * + * @remarks __Windows:__ If the executable has an icon resource named * `GLFW_ICON,` it will be set as the icon for the window. If no such icon is * present, the `IDI_WINLOGO` icon will be used instead. * - * @remarks **Mac OS X:** The GLFW window has no icon, as it is not a document + * @remarks __Windows:__ The context to share resources with may not be current + * on any other thread. + * + * @remarks __OS X:__ The GLFW window has no icon, as it is not a document * window, but the dock icon will be the same as the application bundle's icon. - * Also, the first time a window is opened the menu bar is populated with - * common commands like Hide, Quit and About. The (minimal) about dialog uses - * information from the application's bundle. For more information on bundles, - * see the Bundle Programming Guide provided by Apple. + * For more information on bundles, see the + * [Bundle Programming Guide](https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/) + * in the Mac Developer Library. * - * @note This function may only be called from the main thread. + * @remarks __OS X:__ The first time a window is created the menu bar is + * populated 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 can be disabled with a + * [compile-time option](@ref compile_options_osx). * + * @remarks __X11:__ There is no mechanism for setting the window icon yet. + * + * @remarks __X11:__ Some window managers will not respect the placement of + * initially hidden windows. + * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_creation * @sa glfwDestroyWindow * + * @since Added in GLFW 3.0. Replaces `glfwOpenWindow`. + * * @ingroup window */ GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, GLFWmonitor* monitor, GLFWwindow* share); @@ -1248,19 +1673,25 @@ GLFWAPI GLFWwindow* glfwCreateWindow(int width, int height, const char* title, G * This function destroys the specified window and its context. On calling * this function, no further callbacks will be called for that window. * - * @param[in] window The window to destroy. - * - * @note This function may only be called from the main thread. - * - * @note This function may not be called from a callback. - * - * @note If the window's context is current on the main thread, it is + * If the context of the specified window is current on the main thread, it is * detached before being destroyed. * - * @warning The window's context must not be current on any other thread. + * @param[in] window The window to destroy. * + * @note The context of the specified window must not be current on any other + * thread when this function is called. + * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_creation * @sa glfwCreateWindow * + * @since Added in GLFW 3.0. Replaces `glfwCloseWindow`. + * * @ingroup window */ GLFWAPI void glfwDestroyWindow(GLFWwindow* window); @@ -1272,6 +1703,13 @@ GLFWAPI void glfwDestroyWindow(GLFWwindow* window); * @param[in] window The window to query. * @return The value of the close flag. * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @sa @ref window_close + * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); @@ -1285,6 +1723,13 @@ GLFWAPI int glfwWindowShouldClose(GLFWwindow* window); * @param[in] window The window whose flag to change. * @param[in] value The new value. * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @sa @ref window_close + * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); @@ -1297,7 +1742,15 @@ GLFWAPI void glfwSetWindowShouldClose(GLFWwindow* window, int value); * @param[in] window The window whose title to change. * @param[in] title The UTF-8 encoded window title. * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_title + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. * * @ingroup window */ @@ -1308,14 +1761,23 @@ GLFWAPI void glfwSetWindowTitle(GLFWwindow* window, const char* title); * This function retrieves the position, in screen coordinates, of the * upper-left corner of the client area of the specified window. * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * * @param[in] window The window to query. * @param[out] xpos Where to store the x-coordinate of the upper-left corner of * the client area, or `NULL`. * @param[out] ypos Where to store the y-coordinate of the upper-left corner of * the client area, or `NULL`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_pos * @sa glfwSetWindowPos * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); @@ -1323,31 +1785,30 @@ GLFWAPI void glfwGetWindowPos(GLFWwindow* window, int* xpos, int* ypos); /*! @brief Sets the position of the client area of the specified window. * * This function sets the position, in screen coordinates, of the upper-left - * corner of the client area of the window. + * corner of the client area of the specified windowed mode window. If the + * window is a full screen window, this function does nothing. * - * If the specified window is a full screen window, this function does nothing. + * __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. * - * If you wish to set an initial window position you should create a hidden - * window (using @ref glfwWindowHint and `GLFW_VISIBLE`), set its position and - * then show it. + * The window manager may put limits on what positions are allowed. GLFW + * cannot and should not override these limits. * * @param[in] window The window to query. * @param[in] xpos The x-coordinate of the upper-left corner of the client area. * @param[in] ypos The y-coordinate of the upper-left corner of the client area. * - * @note It is very rarely a good idea to move an already visible window, as it - * will confuse and annoy the user. - * - * @note This function may only be called from the main thread. - * - * @note The window manager may put limits on what positions are allowed. - * - * @bug **X11:** Some window managers ignore the set position of hidden (i.e. - * unmapped) windows, instead placing them where it thinks is appropriate once - * they are shown. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_pos * @sa glfwGetWindowPos * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup window */ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); @@ -1355,7 +1816,11 @@ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); /*! @brief Retrieves the size of the client area of the specified window. * * This function retrieves the size, in screen coordinates, of the client area - * of the specified window. + * of the specified window. If you wish to retrieve the size of the + * framebuffer of the window in pixels, see @ref glfwGetFramebufferSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. * * @param[in] window The window whose size to retrieve. * @param[out] width Where to store the width, in screen coordinates, of the @@ -1363,8 +1828,17 @@ GLFWAPI void glfwSetWindowPos(GLFWwindow* window, int xpos, int ypos); * @param[out] height Where to store the height, in screen coordinates, of the * client area, or `NULL`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_size * @sa glfwSetWindowSize * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup window */ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); @@ -1379,16 +1853,24 @@ GLFWAPI void glfwGetWindowSize(GLFWwindow* window, int* width, int* height); * the context is unaffected, the bit depths of the framebuffer remain * unchanged. * + * The window manager may put limits on what sizes are allowed. GLFW cannot + * and should not override these limits. + * * @param[in] window The window to resize. * @param[in] width The desired width of the specified window. * @param[in] height The desired height of the specified window. * - * @note This function may only be called from the main thread. - * - * @note The window manager may put limits on what window sizes are allowed. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_size * @sa glfwGetWindowSize * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup window */ GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); @@ -1396,7 +1878,11 @@ GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); /*! @brief Retrieves the size of the framebuffer of the specified window. * * This function retrieves the size, in pixels, of the framebuffer of the - * specified window. + * specified window. If you wish to retrieve the size of the window in screen + * coordinates, see @ref glfwGetWindowSize. + * + * Any or all of the size arguments may be `NULL`. If an error occurs, all + * non-`NULL` size arguments will be set to zero. * * @param[in] window The window whose framebuffer to query. * @param[out] width Where to store the width, in pixels, of the framebuffer, @@ -1404,74 +1890,140 @@ GLFWAPI void glfwSetWindowSize(GLFWwindow* window, int width, int height); * @param[out] height Where to store the height, in pixels, of the framebuffer, * or `NULL`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_fbsize * @sa glfwSetFramebufferSizeCallback * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwGetFramebufferSize(GLFWwindow* window, int* width, int* height); +/*! @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. + * + * 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. + * + * @param[in] window The window whose frame size to query. + * @param[out] left Where to store the size, in screen coordinates, of the left + * edge of the window frame, or `NULL`. + * @param[out] top Where to store the size, in screen coordinates, of the top + * edge of the window frame, or `NULL`. + * @param[out] right Where to store the size, in screen coordinates, of the + * right edge of the window frame, or `NULL`. + * @param[out] bottom Where to store the size, in screen coordinates, of the + * bottom edge of the window frame, or `NULL`. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in GLFW 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwGetWindowFrameSize(GLFWwindow* window, int* left, int* top, int* right, int* bottom); + /*! @brief Iconifies the specified window. * - * This function iconifies/minimizes the specified window, if it was previously - * restored. If it is a full screen window, the original monitor resolution is - * restored until the window is restored. If the window is already iconified, - * this function does nothing. + * This function iconifies (minimizes) the specified window if it was + * previously restored. If the window is already iconified, this function does + * nothing. + * + * If the specified window is a full screen window, the original monitor + * resolution is restored until the window is restored. * * @param[in] window The window to iconify. * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_iconify * @sa glfwRestoreWindow * + * @since Added in GLFW 2.1. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup window */ GLFWAPI void glfwIconifyWindow(GLFWwindow* window); /*! @brief Restores the specified window. * - * This function restores the specified window, if it was previously - * iconified/minimized. If it is a full screen window, the resolution chosen - * for the window is restored on the selected monitor. If the window is - * already restored, this function does nothing. + * This function restores the specified window if it was previously iconified + * (minimized). If the window is already restored, this function does nothing. + * + * If the specified window is a full screen window, the resolution chosen for + * the window is restored on the selected monitor. * * @param[in] window The window to restore. * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_iconify * @sa glfwIconifyWindow * + * @since Added in GLFW 2.1. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup window */ GLFWAPI void glfwRestoreWindow(GLFWwindow* window); /*! @brief Makes the specified window visible. * - * This function makes the specified window visible, if it was previously + * This function makes the specified window visible if it was previously * hidden. If the window is already visible or is in full screen mode, this * function does nothing. * * @param[in] window The window to make visible. * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_hide * @sa glfwHideWindow * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwShowWindow(GLFWwindow* window); /*! @brief Hides the specified window. * - * This function hides the specified window, if it was previously visible. If + * This function hides the specified window if it was previously visible. If * the window is already hidden or is in full screen mode, this function does * nothing. * * @param[in] window The window to hide. * - * @note This function may only be called from the main thread. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref window_hide * @sa glfwShowWindow * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwHideWindow(GLFWwindow* window); @@ -1482,7 +2034,15 @@ GLFWAPI void glfwHideWindow(GLFWwindow* window); * in full screen on. * * @param[in] window The window to query. - * @return The monitor, or `NULL` if the window is in windowed mode. + * @return The monitor, or `NULL` if the window is in windowed mode or an error + * occurred. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_monitor + * + * @since Added in GLFW 3.0. * * @ingroup window */ @@ -1490,13 +2050,22 @@ GLFWAPI GLFWmonitor* glfwGetWindowMonitor(GLFWwindow* window); /*! @brief Returns an attribute of the specified window. * - * This function returns an attribute of the specified window. There are many - * attributes, some related to the window and others to its context. + * This function returns the value of an attribute of the specified window or + * its OpenGL or OpenGL ES context. * * @param[in] window The window to query. * @param[in] attrib The [window attribute](@ref window_attribs) whose value to * return. - * @return The value of the attribute, or zero if an error occurred. + * @return The value of the attribute, or zero if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_attribs + * + * @since Added in GLFW 3.0. Replaces `glfwGetWindowParam` and + * `glfwGetGLVersion`. * * @ingroup window */ @@ -1511,8 +2080,14 @@ GLFWAPI int glfwGetWindowAttrib(GLFWwindow* window, int attrib); * @param[in] window The window whose pointer to set. * @param[in] pointer The new value. * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @sa @ref window_userptr * @sa glfwGetWindowUserPointer * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); @@ -1524,8 +2099,14 @@ GLFWAPI void glfwSetWindowUserPointer(GLFWwindow* window, void* pointer); * * @param[in] window The window whose pointer to return. * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @sa @ref window_userptr * @sa glfwSetWindowUserPointer * + * @since Added in GLFW 3.0. + * * @ingroup window */ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); @@ -1539,8 +2120,15 @@ GLFWAPI void* glfwGetWindowUserPointer(GLFWwindow* window); * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_pos + * + * @since Added in GLFW 3.0. * * @ingroup window */ @@ -1555,8 +2143,18 @@ GLFWAPI GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow* window, GLFWwindow * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_size + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. * * @ingroup window */ @@ -1576,12 +2174,22 @@ GLFWAPI GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow* window, GLFWwind * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). * - * @remarks **Mac OS X:** Selecting Quit from the application menu will + * @remarks __OS X:__ Selecting Quit from the application menu will * trigger the close callback for all windows. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_close + * + * @since Added in GLFW 2.5. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. + * * @ingroup window */ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwindowclosefun cbfun); @@ -1599,12 +2207,18 @@ GLFWAPI GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow* window, GLFWwi * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). * - * @note On compositing window systems such as Aero, Compiz or Aqua, where the - * window contents are saved off-screen, this callback may be called only very - * infrequently or never at all. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_refresh + * + * @since Added in GLFW 2.5. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. * * @ingroup window */ @@ -1613,18 +2227,25 @@ GLFWAPI GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow* window, GL /*! @brief Sets the focus callback for the specified window. * * This function sets the focus callback of the specified window, which is - * called when the window gains or loses focus. + * called when the window gains or loses input focus. * - * After the focus callback is called for a window that lost 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. + * 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. * * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_focus + * + * @since Added in GLFW 3.0. * * @ingroup window */ @@ -1638,8 +2259,15 @@ GLFWAPI GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow* window, GLFWwi * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_iconify + * + * @since Added in GLFW 3.0. * * @ingroup window */ @@ -1653,8 +2281,15 @@ GLFWAPI GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow* window, GL * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref window_fbsize + * + * @since Added in GLFW 3.0. * * @ingroup window */ @@ -1662,99 +2297,164 @@ GLFWAPI GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow* window /*! @brief Processes all pending events. * - * This function processes only those events that have already been received - * and then returns immediately. Processing events will cause the window and - * input callbacks associated with those events to be called. + * 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. * - * This function is not required for joystick input to work. + * 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. * - * @par New in GLFW 3 - * This function is no longer called by @ref glfwSwapBuffers. You need to call - * it or @ref glfwWaitEvents yourself. + * On some platforms, certain events are sent directly to the application + * without going through the event queue, causing callbacks to be called + * outside of a call to one of the event processing functions. * - * @note This function may only be called from the main thread. + * Event processing is not required for joystick input to work. * - * @note This function may not be called from a callback. + * @par Reentrancy + * This function may not be called from a callback. * - * @note On some platforms, certain callbacks may be called outside of a call - * to one of the event processing functions. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref events * @sa glfwWaitEvents * + * @since Added in GLFW 1.0. + * * @ingroup window */ GLFWAPI void glfwPollEvents(void); -/*! @brief Waits until events are pending and processes them. +/*! @brief Waits until events are queued and processes them. * - * This function puts the calling thread to sleep until at least one event has - * been received. Once one or more events have been recevied, it behaves as if - * @ref glfwPollEvents was called, i.e. the events are processed and the - * function then returns immediately. Processing events will cause the window - * and input callbacks associated with those events to be called. + * 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. * * 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. * - * This function is not required for joystick input to work. + * 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. * - * @note This function may only be called from the main thread. + * On some platforms, certain callbacks may be called outside of a call to one + * of the event processing functions. * - * @note This function may not be called from a callback. + * If no windows exist, this function returns immediately. For synchronization + * of threads in applications that do not create windows, use your threading + * library of choice. * - * @note On some platforms, certain callbacks may be called outside of a call - * to one of the event processing functions. + * Event processing is not required for joystick input to work. * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref events * @sa glfwPollEvents * + * @since Added in GLFW 2.5. + * * @ingroup window */ GLFWAPI void glfwWaitEvents(void); +/*! @brief Posts an empty event to the event queue. + * + * This function posts an empty event from the current thread to the event + * queue, causing @ref glfwWaitEvents to return. + * + * If no windows exist, this function returns immediately. For synchronization + * of threads in applications that do not create windows, use your threading + * library of choice. + * + * @par Thread Safety + * This function may be called from any thread. + * + * @sa @ref events + * @sa glfwWaitEvents + * + * @since Added in GLFW 3.1. + * + * @ingroup window + */ +GLFWAPI void glfwPostEmptyEvent(void); + /*! @brief Returns the value of an input option for the specified window. + * + * This function returns the value of an input option for the specified window. + * The mode must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or + * `GLFW_STICKY_MOUSE_BUTTONS`. * * @param[in] window The window to query. * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or * `GLFW_STICKY_MOUSE_BUTTONS`. * + * @par Thread Safety + * This function may only be called from the main thread. + * * @sa glfwSetInputMode * + * @since Added in GLFW 3.0. + * * @ingroup input */ GLFWAPI int glfwGetInputMode(GLFWwindow* window, int mode); /*! @brief Sets an input option for the specified window. + * + * This function sets an input mode option for the specified window. The mode + * must be one of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or + * `GLFW_STICKY_MOUSE_BUTTONS`. + * + * If the mode is `GLFW_CURSOR`, the value must be one of the following cursor + * modes: + * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. + * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the client + * area of the window but does not restrict the cursor from leaving. + * - `GLFW_CURSOR_DISABLED` hides and grabs the cursor, providing virtual + * and unlimited cursor movement. This is useful for implementing for + * example 3D camera controls. + * + * If the mode is `GLFW_STICKY_KEYS`, the value must be either `GL_TRUE` to + * enable sticky keys, or `GL_FALSE` to disable it. If sticky keys are + * 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. + * + * If the mode is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either + * `GL_TRUE` to enable sticky mouse buttons, or `GL_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. + * * @param[in] window The window whose input mode to set. * @param[in] mode One of `GLFW_CURSOR`, `GLFW_STICKY_KEYS` or * `GLFW_STICKY_MOUSE_BUTTONS`. * @param[in] value The new value of the specified input mode. * - * If `mode` is `GLFW_CURSOR`, the value must be one of the supported input - * modes: - * - `GLFW_CURSOR_NORMAL` makes the cursor visible and behaving normally. - * - `GLFW_CURSOR_HIDDEN` makes the cursor invisible when it is over the client - * area of the window. - * - `GLFW_CURSOR_DISABLED` disables the cursor and removes any limitations on - * cursor movement. - * - * If `mode` is `GLFW_STICKY_KEYS`, the value must be either `GL_TRUE` to - * enable sticky keys, or `GL_FALSE` to disable it. If sticky keys are - * enabled, a key press will ensure that @ref glfwGetKey returns @ref - * 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. - * - * If `mode` is `GLFW_STICKY_MOUSE_BUTTONS`, the value must be either `GL_TRUE` - * to enable sticky mouse buttons, or `GL_FALSE` to disable it. If sticky - * mouse buttons are enabled, a mouse button press will ensure that @ref - * glfwGetMouseButton returns @ref 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. + * @par Thread Safety + * This function may only be called from the main thread. * * @sa glfwGetInputMode * + * @since Added in GLFW 3.0. Replaces `glfwEnable` and `glfwDisable`. + * * @ingroup input */ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); @@ -1764,22 +2464,34 @@ GLFWAPI void glfwSetInputMode(GLFWwindow* window, int mode, int value); * * This function returns the last state reported for the specified key to the * specified window. The returned state is one of `GLFW_PRESS` or - * `GLFW_RELEASE`. The higher-level state `GLFW_REPEAT` is only reported to + * `GLFW_RELEASE`. The higher-level action `GLFW_REPEAT` is only reported to * the key callback. * * If the `GLFW_STICKY_KEYS` input mode is enabled, this function returns - * `GLFW_PRESS` the first time you call this function after a key has been - * pressed, even if the key has already been released. + * `GLFW_PRESS` the first time you call it for a key that was pressed, even if + * that key has already been released. * * 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. * + * The [modifier key bit masks](@ref mods) are not key tokens and cannot be + * used with this function. + * * @param[in] window The desired window. - * @param[in] key The desired [keyboard key](@ref keys). + * @param[in] key The desired [keyboard key](@ref keys). `GLFW_KEY_UNKNOWN` is + * not a valid key for this function. * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. * - * @note `GLFW_KEY_UNKNOWN` is not a valid key for this function. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. * * @ingroup input */ @@ -1789,25 +2501,37 @@ GLFWAPI int glfwGetKey(GLFWwindow* window, int key); * window. * * This function returns the last state reported for the specified mouse button - * to the specified window. + * to the specified window. The returned state is one of `GLFW_PRESS` or + * `GLFW_RELEASE`. * * If the `GLFW_STICKY_MOUSE_BUTTONS` input mode is enabled, this function - * returns `GLFW_PRESS` the first time you call this function after a mouse - * button has been pressed, even if the mouse button has already been released. + * `GLFW_PRESS` the first time you call it for a mouse button that was pressed, + * even if that mouse button has already been released. * * @param[in] window The desired window. * @param[in] button The desired [mouse button](@ref buttons). * @return One of `GLFW_PRESS` or `GLFW_RELEASE`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * * @ingroup input */ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); -/*! @brief Retrieves the last reported cursor position, relative to the client - * area of the window. +/*! @brief Retrieves the position of the cursor relative to the client area of + * the window. * - * This function returns the last reported position of the cursor to the - * specified window. + * This function returns the position of the cursor, in screen coordinates, + * relative to the upper-left corner of the client area of the specified + * window. * * 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 @@ -1817,43 +2541,182 @@ GLFWAPI int glfwGetMouseButton(GLFWwindow* window, int button); * `floor` function. Casting directly to an integer type works for positive * coordinates, but fails for negative ones. * + * Any or all of the position arguments may be `NULL`. If an error occurs, all + * non-`NULL` position arguments will be set to zero. + * * @param[in] window The desired window. * @param[out] xpos Where to store the cursor x-coordinate, relative to the * left edge of the client area, or `NULL`. * @param[out] ypos Where to store the cursor y-coordinate, relative to the to * top edge of the client area, or `NULL`. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_pos * @sa glfwSetCursorPos * + * @since Added in GLFW 3.0. Replaces `glfwGetMousePos`. + * * @ingroup input */ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); -/*! @brief Sets the position of the cursor, relative to the client area of the window. +/*! @brief Sets the position of the cursor, relative to the client area of the + * window. * - * This function sets the position of the cursor. The specified window must be - * focused. If the window does not have focus when this function is called, it - * fails silently. + * This function sets the position, in screen coordinates, of the cursor + * relative to the upper-left corner of the client area of the specified + * window. The window must have input focus. If the window does not have + * input focus when this function is called, it fails silently. * - * 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 + * __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 * a `double`. * * @param[in] window The desired window. * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * client area, or `NULL`. + * client area. * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * client area, or `NULL`. + * client area. * + * @remarks __X11:__ Due to the asynchronous nature of a modern X desktop, it + * may take a moment for the window focus event to arrive. This means you will + * not be able to set the cursor position directly after window creation. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_pos * @sa glfwGetCursorPos * + * @since Added in GLFW 3.0. Replaces `glfwSetMousePos`. + * * @ingroup input */ GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); +/*! @brief Creates a custom cursor. + * + * 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. + * + * The pixels are 32-bit little-endian RGBA, i.e. eight bits per channel. They + * are arranged canonically as packed sequential rows, starting from the + * top-left corner. + * + * 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. + * + * @param[in] image The desired cursor image. + * @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 + * [error](@ref error_handling) occurred. + * + * @par Pointer Lifetime + * The specified image data is copied before this function returns. + * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_object + * @sa glfwDestroyCursor + * @sa glfwCreateStandardCursor + * + * @since Added in GLFW 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateCursor(const GLFWimage* image, int xhot, int yhot); + +/*! @brief Creates a cursor with a standard shape. + * + * Returns a cursor with a [standard shape](@ref shapes), that can be set for + * a window with @ref glfwSetCursor. + * + * @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. + * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_object + * @sa glfwCreateCursor + * + * @since Added in GLFW 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWcursor* glfwCreateStandardCursor(int shape); + +/*! @brief Destroys a cursor. + * + * This function destroys a cursor previously created with @ref + * glfwCreateCursor. Any remaining cursors will be destroyed by @ref + * glfwTerminate. + * + * @param[in] cursor The cursor object to destroy. + * + * @par Reentrancy + * This function may not be called from a callback. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_object + * @sa glfwCreateCursor + * + * @since Added in GLFW 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwDestroyCursor(GLFWcursor* cursor); + +/*! @brief Sets the cursor for the window. + * + * This function sets the cursor image to be used when the cursor is over the + * client area of the specified window. The set cursor will only be visible + * when the [cursor mode](@ref cursor_mode) of the window is + * `GLFW_CURSOR_NORMAL`. + * + * On some platforms, the set cursor may not be visible unless the window also + * has input focus. + * + * @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. + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_object + * + * @since Added in GLFW 3.1. + * + * @ingroup input + */ +GLFWAPI void glfwSetCursor(GLFWwindow* window, GLFWcursor* cursor); + /*! @brief Sets the key callback. * - * This function sets the key callback of the specific window, which is called + * This function sets the key callback of the specified window, which is called * when a key is pressed, repeated or released. * * The key functions deal with physical keys, with layout independent @@ -1861,16 +2724,16 @@ GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); * layout. If you want to input text, use the * [character callback](@ref glfwSetCharCallback) instead. * - * When a window loses 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 window has lost - * focus, i.e. `GLFW_FOCUSED` will be false and the focus callback will have - * already been called. + * 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. * * 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 - * state is not saved and so it cannot be retrieved with @ref glfwGetKey. + * state is not saved and so it cannot be queried with @ref glfwGetKey. * * Sometimes GLFW needs to generate synthetic key events, in which case the * scancode may be zero. @@ -1878,8 +2741,18 @@ GLFWAPI void glfwSetCursorPos(GLFWwindow* window, double xpos, double ypos); * @param[in] window The window whose callback to set. * @param[in] cbfun The new key callback, or `NULL` to remove the currently * set callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_key + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. * * @ingroup input */ @@ -1887,11 +2760,56 @@ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); /*! @brief Sets the Unicode character callback. * - * This function sets the character callback of the specific window, which is + * This function sets the character callback of the specified window, which is * called when a Unicode character is input. * - * The character callback is intended for text input. If you want to know - * whether a specific key was pressed or released, use the + * 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 + * input on that platform, for example a Super (Command) key on OS X or Alt key + * on Windows. There is a + * [character with modifiers callback](@ref glfwSetCharModsCallback) that + * receives these events. + * + * @param[in] window The window whose callback to set. + * @param[in] cbfun 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). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in GLFW 2.4. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. + * + * @ingroup input + */ +GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); + +/*! @brief Sets the Unicode character with modifiers callback. + * + * This function sets the character with modifiers callback of the specified + * 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. @@ -1900,26 +2818,43 @@ GLFWAPI GLFWkeyfun glfwSetKeyCallback(GLFWwindow* window, GLFWkeyfun cbfun); * @return The previously set callback, or `NULL` if no callback was set or an * error occurred. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_char + * + * @since Added in GLFW 3.1. + * * @ingroup input */ -GLFWAPI GLFWcharfun glfwSetCharCallback(GLFWwindow* window, GLFWcharfun cbfun); +GLFWAPI GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow* window, GLFWcharmodsfun cbfun); /*! @brief Sets the mouse button callback. * * This function sets the mouse button callback of the specified window, which * is called when a mouse button is pressed or released. * - * When a window loses 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 window has lost focus, i.e. `GLFW_FOCUSED` will be false and the - * focus callback will have already been called. + * 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. * * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref input_mouse_button + * + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. Updated callback signature. * * @ingroup input */ @@ -1929,13 +2864,21 @@ GLFWAPI GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow* window, GLFWmo * * This function sets the cursor position callback of the specified window, * which is called when the cursor is moved. The callback is provided with the - * position relative to the upper-left corner of the client area of the window. + * position, in screen coordinates, relative to the upper-left corner of the + * client area of the window. * * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_pos + * + * @since Added in GLFW 3.0. Replaces `glfwSetMousePosCallback`. * * @ingroup input */ @@ -1950,8 +2893,15 @@ GLFWAPI GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow* window, GLFWcursor * @param[in] window The window whose callback to set. * @param[in] cbfun The new callback, or `NULL` to remove the currently set * callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref cursor_enter + * + * @since Added in GLFW 3.0. * * @ingroup input */ @@ -1969,20 +2919,61 @@ GLFWAPI GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow* window, GLFWcu * @param[in] window The window whose callback to set. * @param[in] cbfun The new scroll callback, or `NULL` to remove the currently * set callback. - * @return The previously set callback, or `NULL` if no callback was set or an - * error occurred. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref scrolling + * + * @since Added in GLFW 3.0. Replaces `glfwSetMouseWheelCallback`. * * @ingroup input */ GLFWAPI GLFWscrollfun glfwSetScrollCallback(GLFWwindow* window, GLFWscrollfun cbfun); +/*! @brief Sets the file drop callback. + * + * This function sets the file drop callback of the specified window, which is + * called when one or more dragged files are dropped on the window. + * + * 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. + * + * @param[in] window The window whose callback to set. + * @param[in] cbfun The new file drop callback, or `NULL` to remove the + * currently set callback. + * @return The previously set callback, or `NULL` if no callback was set or the + * library had not been [initialized](@ref intro_init). + * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref path_drop + * + * @since Added in GLFW 3.1. + * + * @ingroup input + */ +GLFWAPI GLFWdropfun glfwSetDropCallback(GLFWwindow* window, GLFWdropfun cbfun); + /*! @brief Returns whether the specified joystick is present. * * This function returns whether the specified joystick is present. * - * @param[in] joy The joystick to query. + * @param[in] joy The [joystick](@ref joysticks) to query. * @return `GL_TRUE` if the joystick is present, or `GL_FALSE` otherwise. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref joystick + * + * @since Added in GLFW 3.0. Replaces `glfwGetJoystickParam`. + * * @ingroup input */ GLFWAPI int glfwJoystickPresent(int joy); @@ -1990,17 +2981,24 @@ GLFWAPI int glfwJoystickPresent(int joy); /*! @brief Returns the values of all axes of the specified joystick. * * This function returns the values of all axes of the specified joystick. + * Each element in the array is a value between -1.0 and 1.0. * - * @param[in] joy The joystick to query. - * @param[out] count Where to store the size of the returned array. This is - * set to zero if an error occurred. + * @param[in] joy The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of axis values in the returned + * array. This is set to zero if an error occurred. * @return An array of axis values, or `NULL` if the joystick is not present. * - * @note The returned array is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. * - * @note The returned array is valid only until the next call to @ref - * glfwGetJoystickAxes for that joystick. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref joystick_axis + * + * @since Added in GLFW 3.0. Replaces `glfwGetJoystickPos`. * * @ingroup input */ @@ -2009,17 +3007,27 @@ GLFWAPI const float* glfwGetJoystickAxes(int joy, int* count); /*! @brief Returns the state of all buttons of the specified joystick. * * This function returns the state of all buttons of the specified joystick. + * Each element in the array is either `GLFW_PRESS` or `GLFW_RELEASE`. * - * @param[in] joy The joystick to query. - * @param[out] count Where to store the size of the returned array. This is - * set to zero if an error occurred. + * @param[in] joy The [joystick](@ref joysticks) to query. + * @param[out] count Where to store the number of button states in the returned + * array. This is set to zero if an error occurred. * @return An array of button states, or `NULL` if the joystick is not present. * - * @note The returned array is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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. * - * @note The returned array is valid only until the next call to @ref - * glfwGetJoystickButtons for that joystick. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref joystick_button + * + * @since Added in GLFW 2.2. + * + * @par + * __GLFW 3:__ Changed to return a dynamic array. * * @ingroup input */ @@ -2028,16 +3036,24 @@ GLFWAPI const unsigned char* glfwGetJoystickButtons(int joy, int* count); /*! @brief Returns the name of the specified joystick. * * This function returns the name, encoded as UTF-8, of the specified joystick. + * The returned string is allocated and freed by GLFW. You should not free it + * yourself. * - * @param[in] joy The joystick to query. + * @param[in] joy The [joystick](@ref joysticks) to query. * @return The UTF-8 encoded name of the joystick, or `NULL` if the joystick * is not present. * - * @note The returned string is allocated and freed by GLFW. You should not - * free it yourself. + * @par 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, this + * function is called again for that joystick or the library is terminated. * - * @note The returned string is valid only until the next call to @ref - * glfwGetJoystickName for that joystick. + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref joystick_name + * + * @since Added in GLFW 3.0. * * @ingroup input */ @@ -2046,40 +3062,50 @@ GLFWAPI const char* glfwGetJoystickName(int joy); /*! @brief Sets the clipboard to the specified string. * * This function sets the system clipboard to the specified, UTF-8 encoded - * string. The string is copied before returning, so you don't have to retain - * it afterwards. + * string. * * @param[in] window The window that will own the clipboard contents. * @param[in] string A UTF-8 encoded string. * - * @note This function may only be called from the main thread. + * @par Pointer Lifetime + * The specified string is copied before this function returns. * + * @par Thread Safety + * This function may only be called from the main thread. + * + * @sa @ref clipboard * @sa glfwGetClipboardString * - * @ingroup clipboard + * @since Added in GLFW 3.0. + * + * @ingroup input */ GLFWAPI void glfwSetClipboardString(GLFWwindow* window, const char* string); -/*! @brief Retrieves the contents of the clipboard as a string. +/*! @brief Returns the contents of the clipboard as a string. * * This function returns the contents of the system clipboard, if it contains * or is convertible to a UTF-8 encoded string. * * @param[in] window The window that will request the clipboard contents. * @return The contents of the clipboard as a UTF-8 encoded string, or `NULL` - * if an error occurred. + * if an [error](@ref error_handling) occurred. * - * @note This function may only be called from the main thread. + * @par 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 + * glfwGetClipboardString or @ref glfwSetClipboardString, or until the library + * is terminated. * - * @note The returned string is allocated and freed by GLFW. You should not - * free it yourself. - * - * @note The returned string is valid only until the next call to @ref - * glfwGetClipboardString or @ref glfwSetClipboardString. + * @par Thread Safety + * This function may only be called from the main thread. * + * @sa @ref clipboard * @sa glfwSetClipboardString * - * @ingroup clipboard + * @since Added in GLFW 3.0. + * + * @ingroup input */ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); @@ -2089,15 +3115,21 @@ GLFWAPI const char* glfwGetClipboardString(GLFWwindow* window); * been set using @ref glfwSetTime, the timer measures time elapsed since GLFW * was initialized. * - * @return The current value, in seconds, or zero if an error occurred. + * The resolution of the timer is system dependent, but is usually on the order + * of a few micro- or nanoseconds. It uses the highest-resolution monotonic + * time source on each supported platform. * - * @remarks This function may be called from secondary threads. + * @return The current value, in seconds, or zero if an + * [error](@ref error_handling) occurred. * - * @note The resolution of the timer is system dependent, but is usually on the - * order of a few micro- or nanoseconds. It uses the highest-resolution - * monotonic time source on each supported platform. + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. * - * @ingroup time + * @sa @ref time + * + * @since Added in GLFW 1.0. + * + * @ingroup input */ GLFWAPI double glfwGetTime(void); @@ -2108,44 +3140,61 @@ GLFWAPI double glfwGetTime(void); * * @param[in] time The new value, in seconds. * - * @note The resolution of the timer is system dependent, but is usually on the - * order of a few micro- or nanoseconds. It uses the highest-resolution - * monotonic time source on each supported platform. + * @par Thread Safety + * This function may only be called from the main thread. * - * @ingroup time + * @sa @ref time + * + * @since Added in GLFW 2.2. + * + * @ingroup input */ GLFWAPI void glfwSetTime(double time); /*! @brief Makes the context of the specified window current for the calling * thread. * - * This function makes the context of the specified window current on the - * calling thread. A context can only be made current on a single thread at - * a time and each thread can have only a single current context at a time. + * This function makes the OpenGL or OpenGL ES context of the specified window + * current on the calling thread. A context can only be made current on + * a single thread at a time and each thread can have only a single current + * context at a time. + * + * 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 + * [GLFW_CONTEXT_RELEASE_BEHAVIOR](@ref window_hints_ctx) window hint. * * @param[in] window The window whose context to make current, or `NULL` to * detach the current context. * - * @remarks This function may be called from secondary threads. + * @par Thread Safety + * This function may be called from any thread. * + * @sa @ref context_current * @sa glfwGetCurrentContext * + * @since Added in GLFW 3.0. + * * @ingroup context */ GLFWAPI void glfwMakeContextCurrent(GLFWwindow* window); /*! @brief Returns the window whose context is current on the calling thread. * - * This function returns the window whose context is current on the calling - * thread. + * This function returns the window whose OpenGL or OpenGL ES context is + * current on the calling thread. * * @return The window whose context is current, or `NULL` if no window's * context is current. * - * @remarks This function may be called from secondary threads. + * @par Thread Safety + * This function may be called from any thread. * + * @sa @ref context_current * @sa glfwMakeContextCurrent * + * @since Added in GLFW 3.0. + * * @ingroup context */ GLFWAPI GLFWwindow* glfwGetCurrentContext(void); @@ -2158,24 +3207,28 @@ GLFWAPI GLFWwindow* glfwGetCurrentContext(void); * * @param[in] window The window whose buffers to swap. * - * @remarks This function may be called from secondary threads. - * - * @par New in GLFW 3 - * This function no longer calls @ref glfwPollEvents. You need to call it or - * @ref glfwWaitEvents yourself. + * @par Thread Safety + * This function may be called from any thread. * + * @sa @ref buffer_swap * @sa glfwSwapInterval * - * @ingroup context + * @since Added in GLFW 1.0. + * + * @par + * __GLFW 3:__ Added window handle parameter. + * + * @ingroup window */ GLFWAPI void glfwSwapBuffers(GLFWwindow* window); /*! @brief Sets the swap interval for the current context. * * This function sets the swap interval for the current context, i.e. the - * number of screen updates to wait before swapping the buffers of a window and - * returning from @ref glfwSwapBuffers. This is sometimes called 'vertical - * synchronization', 'vertical retrace synchronization' or 'vsync'. + * 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_. * * Contexts that support either of the `WGL_EXT_swap_control_tear` and * `GLX_EXT_swap_control_tear` extensions also accept negative swap intervals, @@ -2184,17 +3237,29 @@ GLFWAPI void glfwSwapBuffers(GLFWwindow* window); * glfwExtensionSupported. For more information about swap tearing, see the * extension specifications. * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * * @param[in] interval The minimum number of screen updates to wait for * until the buffers are swapped by @ref glfwSwapBuffers. * - * @remarks This function may be called from secondary threads. + * @note This function is not called during window creation, leaving the swap + * interval set to whatever is the default on that platform. This is done + * 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. * * @note Some GPU drivers do not honor the requested swap interval, either * because of user settings that override the request or due to bugs in the * driver. * + * @par Thread Safety + * This function may be called from any thread. + * + * @sa @ref buffer_swap * @sa glfwSwapBuffers * + * @since Added in GLFW 1.0. + * * @ingroup context */ GLFWAPI void glfwSwapInterval(int interval); @@ -2202,19 +3267,28 @@ GLFWAPI void glfwSwapInterval(int interval); /*! @brief Returns whether the specified extension is available. * * This function returns whether the specified - * [OpenGL or context creation API extension](@ref context_glext) is supported - * by the current context. For example, on Windows both the OpenGL and WGL - * extension strings are checked. + * [API extension](@ref context_glext) is supported by the current OpenGL or + * OpenGL ES context. It searches both for OpenGL and OpenGL ES extension and + * platform-specific context creation API extensions. + * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * + * 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. * * @param[in] extension The ASCII encoded name of the extension. * @return `GL_TRUE` if the extension is available, or `GL_FALSE` otherwise. * - * @remarks This function may be called from secondary threads. + * @par Thread Safety + * This function may be called from any thread. * - * @note As this functions searches one or more extension strings on each call, - * it is recommended that you cache its results if it's 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. + * @sa @ref context_glext + * @sa glfwGetProcAddress + * + * @since Added in GLFW 1.0. * * @ingroup context */ @@ -2227,15 +3301,27 @@ GLFWAPI int glfwExtensionSupported(const char* extension); * [client API or extension function](@ref context_glext), if it is supported * by the current context. * + * A context must be current on the calling thread. Calling this function + * without a current context will cause a @ref GLFW_NO_CURRENT_CONTEXT error. + * * @param[in] procname The ASCII encoded name of the function. * @return The address of the function, or `NULL` if the function is - * unavailable. + * unavailable or an [error](@ref error_handling) occurred. * - * @remarks This function may be called from secondary threads. + * @note The addresses of a given function is not guaranteed to be the same + * between contexts. * - * @note The addresses of these functions are not guaranteed to be the same for - * all contexts, especially if they use different client APIs or even different - * context creation hints. + * @par Pointer Lifetime + * The returned function pointer is valid until the context is destroyed or the + * library is terminated. + * + * @par Thread Safety + * This function may be called from any thread. + * + * @sa @ref context_glext + * @sa glfwExtensionSupported + * + * @since Added in GLFW 1.0. * * @ingroup context */ diff --git a/external/glfw3/include/GLFW/glfw3native.h b/external/glfw3/include/GLFW/glfw3native.h index d570f5876..b3ce7482d 100644 --- a/external/glfw3/include/GLFW/glfw3native.h +++ b/external/glfw3/include/GLFW/glfw3native.h @@ -1,5 +1,5 @@ /************************************************************************* - * GLFW 3.0 - www.glfw.org + * GLFW 3.1 - www.glfw.org * A library for OpenGL, window and input *------------------------------------------------------------------------ * Copyright (c) 2002-2006 Marcus Geelnard @@ -40,13 +40,13 @@ extern "C" { /*! @defgroup native Native access * - * **By using the native API, you assert that you know what you're doing and - * how to fix problems caused by using it. If you don't, you shouldn't be - * using it.** + * **By using the native access functions you assert that you know what you're + * doing and how to fix problems caused by using them. If you don't, you + * shouldn't be using them.** * * Before the inclusion of @ref glfw3native.h, you must define exactly one - * window API macro and exactly one context API macro. Failure to do this - * will cause a compile-time error. + * window system API macro and exactly one context creation API macro. Failure + * to do this will cause a compile-time error. * * The available window API macros are: * * `GLFW_EXPOSE_NATIVE_WIN32` @@ -71,8 +71,13 @@ extern "C" { *************************************************************************/ #if defined(GLFW_EXPOSE_NATIVE_WIN32) + // This is a workaround for the fact that glfw3.h needs to export APIENTRY (for + // example to allow applications to correctly declare a GL_ARB_debug_output + // callback) but windows.h assumes no one will define APIENTRY before it does + #undef APIENTRY #include #elif defined(GLFW_EXPOSE_NATIVE_COCOA) + #include #if defined(__OBJC__) #import #else @@ -80,8 +85,9 @@ extern "C" { #endif #elif defined(GLFW_EXPOSE_NATIVE_X11) #include + #include #else - #error "No window API specified" + #error "No window API selected" #endif #if defined(GLFW_EXPOSE_NATIVE_WGL) @@ -93,7 +99,7 @@ extern "C" { #elif defined(GLFW_EXPOSE_NATIVE_EGL) #include #else - #error "No context API specified" + #error "No context API selected" #endif @@ -102,8 +108,49 @@ extern "C" { *************************************************************************/ #if defined(GLFW_EXPOSE_NATIVE_WIN32) +/*! @brief Returns the adapter device name of the specified monitor. + * + * @return The UTF-8 encoded adapter device name (for example `\\.\DISPLAY1`) + * of the specified monitor, or `NULL` if an [error](@ref error_handling) + * occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the display device name of the specified monitor. + * + * @return The UTF-8 encoded display device name (for example + * `\\.\DISPLAY1\Monitor0`) of the specified monitor, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.1. + * + * @ingroup native + */ +GLFWAPI const char* glfwGetWin32Monitor(GLFWmonitor* monitor); + /*! @brief Returns the `HWND` of the specified window. - * @return The `HWND` of the specified window. + * + * @return The `HWND` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); @@ -111,15 +158,48 @@ GLFWAPI HWND glfwGetWin32Window(GLFWwindow* window); #if defined(GLFW_EXPOSE_NATIVE_WGL) /*! @brief Returns the `HGLRC` of the specified window. - * @return The `HGLRC` of the specified window. + * + * @return The `HGLRC` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI HGLRC glfwGetWGLContext(GLFWwindow* window); #endif #if defined(GLFW_EXPOSE_NATIVE_COCOA) +/*! @brief Returns the `CGDirectDisplayID` of the specified monitor. + * + * @return The `CGDirectDisplayID` of the specified monitor, or + * `kCGNullDirectDisplay` if an [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.1. + * + * @ingroup native + */ +GLFWAPI CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor* monitor); + /*! @brief Returns the `NSWindow` of the specified window. - * @return The `NSWindow` of the specified window. + * + * @return The `NSWindow` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); @@ -127,7 +207,16 @@ GLFWAPI id glfwGetCocoaWindow(GLFWwindow* window); #if defined(GLFW_EXPOSE_NATIVE_NSGL) /*! @brief Returns the `NSOpenGLContext` of the specified window. - * @return The `NSOpenGLContext` of the specified window. + * + * @return The `NSOpenGLContext` of the specified window, or `nil` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); @@ -135,12 +224,61 @@ GLFWAPI id glfwGetNSGLContext(GLFWwindow* window); #if defined(GLFW_EXPOSE_NATIVE_X11) /*! @brief Returns the `Display` used by GLFW. - * @return The `Display` used by GLFW. + * + * @return The `Display` used by GLFW, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI Display* glfwGetX11Display(void); + +/*! @brief Returns the `RRCrtc` of the specified monitor. + * + * @return The `RRCrtc` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.1. + * + * @ingroup native + */ +GLFWAPI RRCrtc glfwGetX11Adapter(GLFWmonitor* monitor); + +/*! @brief Returns the `RROutput` of the specified monitor. + * + * @return The `RROutput` of the specified monitor, or `None` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.1. + * + * @ingroup native + */ +GLFWAPI RROutput glfwGetX11Monitor(GLFWmonitor* monitor); + /*! @brief Returns the `Window` of the specified window. - * @return The `Window` of the specified window. + * + * @return The `Window` of the specified window, or `None` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI Window glfwGetX11Window(GLFWwindow* window); @@ -148,7 +286,16 @@ GLFWAPI Window glfwGetX11Window(GLFWwindow* window); #if defined(GLFW_EXPOSE_NATIVE_GLX) /*! @brief Returns the `GLXContext` of the specified window. - * @return The `GLXContext` of the specified window. + * + * @return The `GLXContext` of the specified window, or `NULL` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); @@ -156,17 +303,46 @@ GLFWAPI GLXContext glfwGetGLXContext(GLFWwindow* window); #if defined(GLFW_EXPOSE_NATIVE_EGL) /*! @brief Returns the `EGLDisplay` used by GLFW. - * @return The `EGLDisplay` used by GLFW. + * + * @return The `EGLDisplay` used by GLFW, or `EGL_NO_DISPLAY` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI EGLDisplay glfwGetEGLDisplay(void); + /*! @brief Returns the `EGLContext` of the specified window. - * @return The `EGLContext` of the specified window. + * + * @return The `EGLContext` of the specified window, or `EGL_NO_CONTEXT` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI EGLContext glfwGetEGLContext(GLFWwindow* window); + /*! @brief Returns the `EGLSurface` of the specified window. - * @return The `EGLSurface` of the specified window. + * + * @return The `EGLSurface` of the specified window, or `EGL_NO_SURFACE` if an + * [error](@ref error_handling) occurred. + * + * @par Thread Safety + * This function may be called from any thread. Access is not synchronized. + * + * @par History + * Added in GLFW 3.0. + * * @ingroup native */ GLFWAPI EGLSurface glfwGetEGLSurface(GLFWwindow* window); diff --git a/external/glfw3/lib/win32/libglfw3.a b/external/glfw3/lib/win32/libglfw3.a index 7138ee9b5cf629ea307cf221f2469dde8edef091..4af1f9720bcea20c70739cd3d57a5929c47126b1 100644 GIT binary patch literal 89824 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 literal 83006 zcmY$iNi0gvu;bEKKm~@z78a&PCZ;Av3JL~bDP&SX!Nkba2rR6Sz{SA8FqeTra1R8F zykKA;7VCyFFrZ_TPYewBu>Ca#25MmcX$%a=IOH7z1GzY@je!A#Gt(Ft1{JFkcic(WiM4=%I7K0lH<^?6@7C=OTQ%jIU zzyau)S5R8wT2z!@1X1FdmkIS>NNQ1TW?o`RDn!CPwInRH2oyNzeB{6iPK6leoS2i7 zl$e|i4PcO|nTa`>RUof|?S)Gel$Lm>Rw8qqGZKrC`N7FW`8herBEI>h#i`CYnMmdr zl$JP`78U0g`R12o=I0@+hKRd@q5$r6u(y5lQ=py;PAx$baZiOf3lyyGsU=_=ok~ke zKt@BwAm#?-!{Rv=>H=gD@6<{}P=NG-5`RWw5r!a=1sHO0i*U$*y@nwN2{u$=ul&m5 zlFa1nfTGl5NPb~!xakc2WSi!+lGbAmIgph*QG2k}41h+t3x0ULoD+@L%I zb34KjaCgJq8IlPKNvKH>4%nmMG#Q?mmy%!ZmY-Y-^Cyxp*vaT>A&x~C^-Rvs%S=Pb zX>LV{xv5Fu!V0^du*~Ajq|BVm5)^F^7r7+nCc@(x$w|&R`NgS0sfDGf#n6%jk_aHW zAbxg9O-n4zDS-%iWagDXLkA%MQwL5e5MhWAgdLobUz(EwwhAH~oC-A!w@gT8Ne&_s zA?AR?4;t`jBJOY#;c<_!1TN&BT7nUZAoHN14KWkq#GusTlKi4nWTD`U{BmTzM`j9& zJlqYCN(^ESTo9VPA);`%g%+n41>|R<6n79iFl69*0`iMdQ!ZQvlrC^cfkPjM9IOh4 zR|B9hfg1`=%s6yH0}ewLEtFB^1M+inT+31s=_oO?1jYyFgMggGlC=DyTu||g-u6II z0IJmqDL}77kqk$d@+<}wR{6!5pi0R#FEJ?xUIW5%MM^590(C3O&kYT6vw)V85NVJA zNFqEFrVJ_#vlCRaq6r~Y+~{6|*5D8eq1r$uz>0cU2?I9*T>@q;OdMX3pxXpf0I5-M z$-=7^TnZp%ELb);wFIf;1PeiP6uL0Xk%*!i<}a9xXK`?1E?Tt&lSAkN7Y<;HkmTT& zp__?Z*dqlks5pl;XON5m2}4!EM1xaHu!us^0VD&XX@FLwSmoe(4O;4tEDv!Kn!(U0#wv$gdZHMJT#TYfAeR#;65;p?3~;*= zGdw_L30TS(-j0L>k+Bhqb3qvl+C^{-@Pzsgp2IL?AQ27~hN_0fG^(IuUSdvV6|8Rp zRS8Q>*m^A}J_Z$ZXx$eSd6a$(h76)ZgCd2kXM>^uy^8~?7C?dK?gR51gFgDe24v6z zCuwK~8Rt+?NZ=~Z%riEMPlgrXddYhENm=?(;dD?Z3RNgGFS7(yBn#R?MitG4G;L7@ zOEPm)QANtZO*Ob!dQN;Yq|XWyLU$Q#%*NP4LBY_#zyOIfGci$6FgG=X`a6Nkhmn~9 z1UwiS82CX91{Ov=P=^@Ih7b)53=BOC3=BMs5I!3N1A_uXK!RRMVo4%I2q)>lU~oV$ zskj)Y0;og-gTa9YTQH~FMTMn1M1`Y-zcWOIqtiu&~W0|PGu1A_>I6etA1EJL_h1Oo#DA6QH;Ei)$-WFP|r!@vIw4C#zW zu>utbQ7j;Wfq{XML4kn@8lF%gI3>ftz~BH=!+;zcAPvlnRbV&5l`}9fAjbsA7tA1q z$O=GekYWK8=h)PMw3vVhCc}0PTfnf^+ z1H&0eW@3n?QC`t2Ld|?Xm>3wY@PHi!Cma|I9Kypoj|DfsQ2;0Q)&rf#`CD`u85ml> z@wfbBU|?vlW8iQ3z`(%Jyki3+0|QfCeXom(3@FbXXHk)DVqgI4YktGg?V=*ndVs(0 zAp--0;qBLooh2$Poh&L~>DB}MEek+q9A>nRQIX;A-NV4Z&>5q`a-2nlS)PI6|MU}# z3=GY0I9d;s9`B4%;Q(bs6$S=|<18v142%#v3=h1lg9w4NfX!`w!vb;fWCjL?-YwuD z2it1{v$ykbNpPnLgvWTp@_vaxL-l`!60XkUudnrP0|f;CHi4E)C9Dm<6iQz;A5qu= z${5jc@rOZ90LdR`QDH$iq4|gcND^iwl#8U638D7&B_weqZ@k_GvAK6Y$o$~uHxk`0 zDhk~J0=-@T|Nr^l{FAXfw(%Du12aRnheUUPNJ&oXCH_7iP^6sX?{EQy)GtQVCS|@V*vR<1swXVm-t)q|NsBr_=-`0 znW6a?BY#`M|Ns9%#(R-+=%P{P(wp~FyezdMu1@OJClIj5aSa6l*8SX0;MMZPkzyJS1eE!xLkWnrw0-Yf$;7ECy1xufh^bi9s50AU3 zcz_baaTgUIC~fiylnh-|EEt#=7>>KB*zhqiFm$@8fD#F)2>~i%ndITcIH){5%HML5 ziGiWFM8#r1F9QR^ZjceL<)P`b`4~%g+#gVK1GP>%Wgum1=kd-O6%J65-l+o-X+2PS zh4JrhCI)7PUKbS~kl%YtR9t#pR6IIeRCqc|Af>z;$T@H={4F7%a>YeOr#nPNr`tzG zr*p;{h=@yP6Q}~}4pH%F{=w8a5tP`wLsWb^C++|x`+jRi28PDppi;9GlreO=8$rsO ze=za)Cxc3_AI$tMYd{qmqzzf3u;U^V1H*1masT4SkN^K$50r+#R!N%xZ6KDKgUS$4 zAcB=3w+Ne$#B|<>j*E{y49Y*dK~{oG7D#!v<1yUWgf z10*lmCN?oJlrHNA#Y@8xMg|5@$@h91h~K;eyBtYG4A zeayhXu!51l1yr?y^c`w(TDP&v%s!Uc+%S)llN*#t_T5XZ@(d2(y!fDDBM*>P|XG6^s1efGqm(4Qx?s=>Px!L0;_! zC%Kp5(C`DL2IPbQ^3CxEP*{LvTvS*(Fs(WF7gC&ql_2#iK#3cYMqhr1Iuc#U%K%ip z@V3S4*4{E$p9b81h*5#G-#QO}m#B3@TUU%XEI*fUfZ9`?$4YNN z+EGFczZ6P%JCD6S(R@U}@BpZ-)O=F>Ww~PVgUTCm)$EYZjh=EHk%fls#oiU)^ zm_#(VJBH*+cvlSU6GR`bgag)h!=@P0Z%dniP!DQl5!dGf_xPaY9d`G&9w<>G&b>%( zL&V=xMEs$-5A3ImFWA!z#7|I%^+NizINhf~jQc>XC#)`f4DRqwm@vUDF*7GMMWG~L zp(wSaC^NMzRUs8NU#(CKnMWr=je=?>gJ)hDXhK~fIVUqUuSCHyz*C_JGGUXN0+;kJ zNX>KiQ7B6VPx>mTX6mVCA}K>xS5TA>>R2PIU|@g_>L@@Zixu+oaw-*4D>92q6w>mG z6wvH2)-zH_%u7*7Ov*1y1!Y3F{G#&2q7;Q>(2QS6CS)p#pdkh*hQK@vwaYaax0f*8 zn^=^pke6SgPz;-?S4gUax!N_D0lWJ$i}C4!xd+<6RVd0&DlIO_OD!%|$jwhlMG8Q; zi*=oS6&R3sK1e(Ta5!P64Vdw;_=Bbp)f7E2VqoyghX+JjeraBcLS~)<4o&Gf?x`h^ zo_r>QYhFoFr9uH{h6$Du6LSjRv{!3GN}Wj2^PCpK7Eg|LA}l0ai>^>EpCHUq$@%QC7~BbGy@t#FgzMnsfSDr70rLlFL=h4*nj8!aN?;d+ zalp)*1lKW-17_PZIO_`s%q{=n>exA9>dZM|vc7P!Xt-DjoHZTJ+5l&r>V&ctx;g)u|-hmGBbXK1QFO41fc-xT|v1J1x9cY1yF~Sfq@|iMI^qsq$oKTG^P&H z22%s-z=8OnQUPL435KrXk|Kx_a14UX$w|#a5&l!ohB+UL2&1=(;3tQ zMHMRM=`K-`=yc}jj!_W-_17SyFQDEK$k1+P*xW<6GkhAN+nECV zaPx)X?Ry`4OH>r@#;6E@dee7ZR0QtEfJeq8Zo8;R+%VN(U|_f_0~sUR0UDLP$*RM^ zz;Nf}&677+4Hy_0Zoj;Hvt0dVjfx!qb{7@7Ej($RE-ErNb5vw*$EZl$%u$i+c2SXd z%?=)&zI!9BlO?YCFk|Cy21W*k(tfBrJGZDPfJWA~sHi|F4bbpki;4~?q!}3)O4PdD zEm{wh*!H$S6xyhO=5)Zp-FO7#VNiGd?hR0&gW?W(*aIQo>#hUR1sf1}y$MAFeB>RW zVFGCES_JAwP&}1{bUWMh7Tdt$rQ6v7!E}K!k2~9d9pMZav2=EU@W5l8ouGLpXm~as z5$XI89S5JgG5m(?ZkQ}2r9ft15WR0$a)c$%64UNri`GjevYjO=D&VvhqoM#!Y~T?J zaQOE+LqY)RfY+BmDnP1_yQqL#E}$V-1<(KnY^Va(t%lOzghv++<{65CiLd3fJ)w+D8##U}s`rfanE{zd>A}&IEIn5u6pp1T&=q+D8## zm8!mgC31mA6|Ani=Yz0EgR8Sg0!r+_^n=^;k%}5HMr6Z`12cCNeOMyao156iK z#2!R4A-Bu|85kHQz(p|IVW0&Rpk5wGBLvf~9R@0QA$A~>$w(X~hWO+}(Bgim7`WY& zR+I`J_yCK6MGErE!5lCF5&t zgFDb(E4I41fQfC$FK+ANXBOMM5 z2@ZNGMXAXpkP$GD382vr9;n+ud=Lh$*4ZKB0G$rdJhBj!tvctZh&V7XbWc%HabRHR z+@c}@;>}S}aA06)Jy2rRda1;_w?#$60X(S$T6F`Tqy;Tw=`>OK4=POLkxtJ z>HjZuLrsPl*?0tG^Womf|NsB{zYpY`=3gA;m%2@+g1T<6PeSYLV=XHDpo-%4W=Kho zTE>H?b2@8OBue-?Z*>w(hu-J&2z8s6^a1v#+wQa%4`3#k7OGg@A*)$V4Q*<4}4 zQ1YQSK&SaIBWNxbW(Y(tM5pEDnyX+r9!MMII4j6JP+%Wt1=#>%ft?Kr0S0h$31Sh{ z{oOv0Dm<+xOW2Ns3P6U|OC@Ze@*A8a*p4%R63%Dv3>vsL1vQpn`a@J$Ajv=! zr0B3~P>_F+l|rbWx1WEwp8}Yx5aRFc>ZcIk7#!^Cq7dS*09w%pZuUdQ3qiw-(A9Ir z3gB@@28NJ~R0Ve*w{V4=%%q~kqDs)X_JU#>gh9=$90mr44h9AW&AS}=d6^IVdSSzRn!UkR?1R1CO%m8Umurd6AkJ$c)i?M^|i@|LmUii4GG9zp} z5;Qssu>-W?1~Q(T2G>yxZSSx#RKi)EjIeRHKDgKnI1AKj5(C?IjuAF0cLgqc3(k54 z9~J%p7yAWgfkt~FZs7#=JHY0p!dcmHRv;5-j0Ds|0u_l6e}EPRL0BD(u#oJ5vnIe< zprt|(bs*P6SaaaAAb&u_Fk4)p9HfWb$N(n=Q04_Oz^y49EiO>G4^ju}j)5=(gC=N> zo{<4uK0ri_LE~j8Z7|RjK4`=oY%<6S2GDW`P=^O062rj20GjYdh=9h267aOsK=m{p6hFK3I*T7)kGJ?jGKr;+rYrq6@?F*_~m>EH-1}ud_fN~*702DS%&@l@J zh6f;H85p1=RgK&{X z$Hd?<3)7{EAp%+!2GIyp6NRD%l$Rg{14hdXT&5#--8ct_hd6uaSwI$#g2sy=Ecm*1 z2p6;|A{9J=h|Y&r58zfGQM*RtlQXi5OS0p0K^reJa|`0*!8gz%K2!IwXb^EA@bjpCc_^k&(>mEwk8)~?G7)pX0 zf5tE}FqBI-|6nYMX+2OH)KI0vP~vmUh0BK-+Scrz^#imn^LB|^Cuqe4Xblu-dF+jD z85QV20!t^z{16p^<|91+A9RB)V(G3?;b=a>b9h3B3zyI9UHsc(xWL9THvDGX4a%SV zE{9()?k!{Jc2VKz4pCw0^=NGVsZb`^{6oHsr@IR@xZHZOgz5jo&xcXlULh(h-A!LW zZaPrH^#8%cr2?-X+`V=4BuM@>3y5{c!2oR09S4iM0T!<(Ay#96!n(T&R0Fr-2tW7^f)Evj zZWk4m5`9}H17?PjP+MjYWoOF>qU=HKeNdtUt#F2|vVkn$K#~Cs41wFy5SiXG2L5eM zx}eTTx03^in!vx!Ne9e;Mk8qa%mguh=Fsh;;?iBB;!$D_b_IV6s7V8Hi3`{z{4Fa% z>quQxz!e0tYnqRkAPtqF4wQjp!13AojeqI^3uj&aZ5K+;wO%R>XsC8!hAa|msCH%M zZviy|8>-!y`CHzCD(-4`X8sn?plCz22Qz=mU$B@bGk*(cHCIEm7c+m$X0VtyGh|74 zhqErkA&~g*ZTr9f&;RaV2hhU3cGv&^|65+;ZwdVW|G%{?s14d#?7-jZ1X>*Yi`jvh zfxl%50|P_jKL{JNo*I<0VT%&MtMWiTIAjs5!@unie+vg_0q}tmVZ>_21B|w@pz%a){{O$r3fc;CH`w4VD`N{MviFK{_$%)iY?*r(wqGylGWC2rt; z9cV`lEaAWtD|E3KIDH@`X81y7Wcgz*!akrbB4h>F;R&Gec|`J6fY{&si@n?oWVs8} za!;`3p!|wtK2G~VOHoi0Hh57u*nP)bgk6yBhuMwPMJI;^t` zM1sm1Y+-JA;Pn$wd|=lPs*XCrl@fXSL6uEs7l;jSG=?9hfon0W3JpG{h zwzCUF;?oa`0Z^YG+9^*>QOHgO4?<)@*2RIU3sm`B(19ZgN#OH8K)rJ$g$xY#u1t`A zCmTa06KqA%WH<{n)&g3C#KyqR43kxav-U7U`l4(MFPULI#%dOrSPPsrodve)W+hx~ z7o2sB1-2IBG7DrK2OGmHxDL>~B*X;{tS}dZu)@?Oz{T2FVg3NEt^mz$h%j7%s{^eg zf`~D(!PEu8S?SO@Zmqc9?ChaIq4&SSws?3ta3dTxKv~%W>Zqgkl|lOjLDQNDU7+2Z2jG2WkkRu%1j_1{RiKI-MFc!1%Z5BR zasku}M-c(7Y++zWR`U(Cn-N8X8??OyMMRyEf#Cp(h$ASJIFQW&)#DCu5zKj*8V&{q zQ2ztu5eO!)e-F`%Od|I_KrzY82* zI)=z*3=z=S5?B*h7icUAV!9`&e>Zy25$K?t(&ALexetiZ1W?}?v}+W+ogUj^B#zRkzxQmih(v-0Jj*jj~}cZ)=`JcVQ&8iZCeNL_XZz%fVOWOv0D{K z|J~5o0BMd2G={{$aE6J20aUhN>%W6W{Xk^_c-;VW?wFD}Do7edB|&pkNbL$26@?Om z<{$j!JjmO#ks2lNh9;!f1a9XcNyFQT5NSyBxA~0>sIvxY^c)A<4sE!Vm^J_6FBj}| zQBmm(0c}5kYz9Ye_o7(`F%O%4ukRuHkpo~K)JNc54pa%h*Y`m!76=B7NP_l)u`z&V z#6ctPA`Ai05qc2@(B^%JENGW6MD_q&7PK=7A}atLM;BoL%^N_}xiUib&$BTU!ev2Y z(hylt`vJ5{L4=_jn)*Z-enaO2L>NFNK4et^W<86@8Q}Pa5}?u<#01xL@KO{cg213T z1W<1atOhKs$H2eu){pdIfH@LCnKu9?ONS@{6g4koBo*MJO*1`$vUsWoz;JWyK> zA_598h#+jtbq<6J9)W|X0Z(~?MPX`ggLxnVB=QrsOCNTu4*c95P|1mORvYBF9W+5m zX$u|qL{f}&xDIA<2`d3HYy_8&;OY!pVTxot#4TXuFvE~!;f}(k0PH$0=-eTEWE3_o zY66+>M<&5@|0X7&b2C6AsGzxjNVz(T2hS-0oRAYU)6>n65p742XvlaT zWOu1fw=8Jtx7!pn6^uL`-pvaV2kkcoC7ITf;K_0RKG2X;XNihT+Jx5I{C%Jqi|!m1 z3B&*0B`PuppEAAXYd+4{e2m5NK7Y#@&>liI(7?t*km21d8n8*}mIEa>z+#Lqx-DA& zmso*Tn?Vm0=ygY|7<1==>F8#Mv0y9GVEV-%4($|Zc2SXFwDwVvfb8i8ImqyT>+QN) z==fUe$vXLNU64x*4|I#{vkqk_<#-)w8Pdv765M=%(egy;XV{E8*K4J;3EiLt4pQAB z`z!-ANgqL38%42TH(u?wJ@^7`jFFb&9C`zW{Mi^KnMY`=wom z2U<_oWp(Te=^%YP0!>4tPr}#9uF`KzDOmUOvtaN*eXeFT+5)D8WlkUKWEE zJb+JM0F4KM+zV=BfQKNV>nu7CgX%GObTWe~?@niyZWk4ePG^qhBNClAq7OrN6M_b^ zT5p$F^g8RnH1s+n(uXr5eZUumqHK+W3^qZ=Um)pSraMQ)q`OANp!IE?v*EXHneDB& zON>b|A38|ae2mfZUFrVL8Wn@)BQl@>0*}!k+6fT*V!BII3c6!dO1j;6K-+G&figuI zXp~-~J48j}IB5Ge=tzc3{C%K=&>hSHYOHhz^Du%2p@Rj$lyGN=ia~cUOLw$LXNZbP z>+Q}M6&?OoP`_yxw`XGe$+F`50sK0SW686^+sk&@lwfM`A!Bav1C| z!*8I?=^&@UocP+fw+ytAUZqs7^HJD133?6}nN8JI);Bz-<$2tpWt*y*)7Zvb&W6)w7(2yW#xfNJXcNkBnhzf-1q9Oy< z;s#nVrO_EC@bdNF|Njx`htl%B`3+CEkBR_j9w-KUvH(kWiHZn#TC7GzrunBriEZbJ zU16c2q2FJ1o;dhJUh_~dOOWQl){~v$ox+`Bb==L&jLkopN|~G47@?Cvu*oe@`Er~c zG#d^QInE4b$*3G>12algSU@vinB$Y6jE~wz7lf=&>J$K%i+G3F5dDY}Zm{ZZ2E6JK zjb`wPQlOf$L=bk02&h&9=T}hlfJ!k?Nd@X&fCa(jJ5+ygw-0!p4m7zaP$C5yQ0|Uo z=>!ibcL#EG3PeMv>0pr#G7)4FWV16OK9Std1qulK&PU$eTp|MM+<>csPEk;;1M)X= zKL%tSI8hlMc>Nf*zPwyyS?qGpV zv2Ku(5*3T)BQ{X~fF>(I!33McXgyGJ3$$~-lTaEDMo;59oz6U+!2+*mf&v*F*hrh@ z4G+9-28TDOzJNLn6g(wjy%C@TN?2e8KeT3mnPGSvT&X}$5Q0iVdNdHy6S}vPjlmzz z3WKvi?QGD>T@eP*DQ2L40UHCThJ~;|YoQ>l?eLwSpk5C|>@s{0=sh?Klx`rqK|w2& zAS_UC2Eqc3+d=e#R%An1W{i-XhHT(fRuHj9xY%qsYdf6v49)_LXG3(bGQmvIgN_-C zFj&G_pq&g57x*zjMu0^a!r&~>DkF$&G2E0b@KNSN@byNY;pY8=vpAun%pwfJa8@ug zWL#B*Ar8*Ugv%DgS=De>4J&L6dOj;;q=JoM11oIgc{eM}&HLFPyK~tXPO!oJdmheu z&IVbfAj0q!uI?{fR-7FstHcg7B?->j3TIt|t9uF;`v~1r%Es^=&Jy5&nP<%bGcSh& z=8t9$m_Me#_ms}(fcfJvT<@#m|DGm$e1GBSm=5$=01VqlA@GSPzeaq2QzsSd>jQN5?@%HUj*uLfRunoqd^SR z@oA6k^M!4rUiaBDS9h2al`&f=#2af|l7ded{{0_eG06O@Bd`>XB5Oe?<_n-^P zYBiJr5^N_IW84LSq64(nEE9TwK5QKtINERw-#}v%>wq`hQw$}D!%snjE%5PfT;nok z=B8kEko}U7aT(A_44~0PY~$UaaX(OB^bI6wGJx7bv>2B`YUhDZd;wVpYqX#?S!8a$ zJDdhPmFljG3QGwmXnhB$DZv2VZU<^jgSMF=PCT73VFGBp7IIQ4Xcro2^i_nx2!3WM zXipZX?;*nA1V5h?R5C-um_V;r0*yODVkAkHfx!>#2h7t)F9<`{V;&Fz zD`2<__9gAtV}kZ?wm|KK*bF+s*1!R@o=t^+TZoEDw~LAasEZAnL9hfbpy6-n1Dy)l zafgwCVKHb$P3y^$dj4&oQv^+#kEle){eL*2q0WVozhx_EzPQenk-r5rd)iRv#>n3i z4ib;;y@$I^LC&!}R{Ej44dlAxVE2Oj)q0?W7nYAf`DfO?f6BS4BkB>-HJ zAPz;K1Or#}2yzS=Mi_ufO}L`XI23`h7hF*b4n?2}9eG-A$lTAb|3{xe1DR0!K;wapZ$LE=te3k+1+>JGzhx5(14HXu{=Qkv3=G{ZDxhovI&QZc z#0AZgF&KX9wgt!Mhi*~OlDKYOP|@FdyIU4CD9!H)N)QaK|2th&L^?n4d$NMnx~NDj z1SR&?17I-_6SUiWAt(_*#XwBZOzc8XtpODSF+p>t3qe^LDh6V9x~OO@1Px?C#XwBZ zVUr6%dsm=hVCJPx7Zn4rl_00Kp6ql{F#&TSZU&F8fgA~PdV{SFI8C^y*mQp2pX#FG z&}|DU$GfM1L!mQAC8YH~zbAO}e1k1`2W)SRN5zi3eY^{R2LPG23uXQF(F{7 zh=rgc31nJKgDq%&4|FJI!a`7w1|%5UV5<*S?V^&h5Y&wU3C1^_y~L;po~iAv0hM0a#7&`i-Lx& zL7T>513_RxkPovM85j^gE{OvjJ`3AF+WZE-`W2SryF*keS}&FGHXZ?G0_ZuL4K*sU z3?*-%S%SX>bpA@WvqtNI(i<@QUY`Sx55biLGcqvrP6m||;4Ph?0E2Gnv^>n;a-ETZ z0kWW&zhyPZfza`KaG>u3g}LS767JqIhR#FX43>vWe{?fYby$79?jm35REtw!QVeWew z4H|+jgB?>*5)LsNo8LiIAIx-6DFX8rvfuezxFP1j&HoK5h|55ABPhjzPK||+C%$|Q zD#;;d3WKBlr9DV9xYR}o4}=amkPgI}bc6&eNCIA)zGMQ`TL>;_9XO({edz{LjBKwe zNI9~A1jyB3hd|5M@a8uX&^Rcm0#ASM1mzS^IDKAyoE20ifX;J0&I&3BK-JYTR#2(I zc#IWPMlc>@1(gbn$H8SODC-;t7o!jshy>x|te_$j!U7ePphECCE2ww`i8UXQKsj6- z?su>R)NSBuB1DA)(gd>Q5@2HBZ#mA$z)S;3=(MpZPc$Xw`FAj83!6c0JU%U`#{OVmJzI? zAEccL#B2raDC-0lAfUrFK>h$H1(4&xJrP@0u&Y==OE~&KqxZJ#U;$7+ioXZc%CzNB zU}7i@?GyzSoQG}MK*qL!)Ynzpa)3GD)ggVLb5uIP6&R>m>;#uphdV_^R=f-N^# zDQNqrEf1Ip@&?Cl0v}Fc+Zz?EESQwZXO0RT?f?^W3Eyk7wYzSy+ge|K8 z6GQ2iPEk;t!R470m>5bjZJ9xipV27_stOKwih`;iaDCq)3aW1ocZh;2hQnzSIz&O0 z!QoC(P)z{lgA&Z)4pC4Qb~tT9rzogKJKQM>s^`G+pyYM9Qxudu!1ADkceqm&lxVzIK8MHdHcQ>d2+y!#tcTnnK;BN(O z1pE$K8_dAp3OXac^P=H_gD;uB9b)>tx-_i$5o4(jI1htL$@vVhQnDl+TPab(IRREa zfXhel`K=<+@!;Tx%r72eXL!9n4KxSbe4MHI5o5`s*Kc5D0=T||56z22#~)6cfXLmi zdyh4PT+h(E`z#{^!zSaGuAuYM!A8AeYCg{N60~0eRGYx|=D!U1|NlScd=fNEm4N1E z6!^C}fco2@M2u06LD!2xCW4{i3)KwEk0mS}0URLBm^lFAUv%}P-cW+3pWOK7)rE2nFN%|K*0~HnZU6G5(K3vkRUuWW6Xac=BH@kKJA7I7KTz;uq)X*0|Yuf zL@-S3-kbhWNdJKz`xCj_4UW@CeRt{uV1E3 z09R8bkv05~>Zzr>=>Q`G!|U_>+rS5kzdi=8A4}wF#31!h!Bo(*!J;Q?z=(AWU~lmoB3!17I?)6QR3gIYu-Y7E^?phLJ{=78F6Aobl% zpq)`KV-S4Mspv03!vtXWBI2in8z!R7l05yO zF`&*a5J{eX&=^E#7laRfU_3ES!>{|?QqrsIO{Z=bp_74 z4`;oAvp&OFOe`?h3&L3naF!aJWdUdTz*#|XRxX?c+8GA%Q5#%r0-QA)&RPm*ZGf{t zyTu@SkHW>y!&yIA7#Kj!QxOIcRt5&p?j;chX;zr)72zxkILi^v3Wl?y;H+FYs|?O+ zgtNNfto5u63})bS>yENAFqnf`S6LYtKpi9zhFh!*43=QASF8*SR$$gIRt5%ZFpHIq zfdSMV5n+B+%~8uAi}Tnh9quhO<_|SsUT39dOnmIO`0Y1zJ}D z35^GEu~%>w=!9;F--I|}Zpr6_`C}cN^%>5R;DX62!C9JcRtcOn1QoE5|e(=ip!y1)l>%Tu_R0zXX5lpm%e0WQ`G7ux_Ay9yTrUAqNIC5ZwsQ?3ZW zLR?i4W}dqsOg0EE)(U4Whs$n-i#>sheT9pu2*FG-6@rV01%@c;32Nx@ai%o%xErp96fr}mCgqae~1!G;~2F>h&PM|slkJVQ^3=GcTvXhY) zrp}0$fdMp{BEsMf7psA@Cc;^Zcp1RAZHh2l;)UEaDZ=m^E~~=FzyLZFRfNG29=}C= z3=E**7!ihcxY!Op1_sc`j0gh>>Gp`z^6)yFl-QJ zVDJU&z?>O}G-%Mb^MZ#KVEb}Gqllm$2^t2iD+Hah3z-=QNrLhR>WNjLxoOa;R0uWk z3=9mYYpg(fcTsohg6`70fU@dp9cXP7iU{beC(zl@2$Mmp6bs;Mnn3OW?aLKFIo+O( zk%7She&RexjU*!jLjn)-E?m>_3I}pv&SepooCRB?Wkqb%Ay$2cU>FF)}c0KoObB z$iVOcMPvmd1495GvN@pM+XNJm%b@jKC?cR0k_P<9xX{fAKA?!qVq#!05JEP28xsRV0gA{KCI*HLC?X#~ z=Ael1f!cq<$mZxVGcXjOh}bbRFf4$JV6MkFBg_C^699@^2&UG`HOxKIpf(i54j74j zb(P%d5NSmb!94R8WFTnWA&5q-{Q$MUQAIAHm;;h~g(1QQ z%kc2^ZqgVcpjJ0XH^MFl3^kD$B9$m2m}~SvCQe0B0}@$=A#xl;g6GbeLySX2rG*$meY7lEsR1PzKJgphk`2}US_ltM!r;#!EML8-+h`9-P7 zLctmN<;Z-G%oG%PxEmZxN{TX*Am+dYp$iEiqHqs{7N-^kfG&?pErQ6v)nmxO^(;^nt`QJgcKP02H6jIjM<77?*tDxrGBMiJ`cVkPn~-EJBh2a`0eV z){4_}u<(GV8fY#=cM8NBaOOjig6qSSf~RXx8ihI#!#XT-*s?5&ozNr*aT1!rXqgyA zA9C(Rkw8wKC=y8NRNnx)d>2X)+J|jqY>06idm1ZbX9c$PzM%Ft=zf$h&^jG-#}qBr z`y#h~K=mo;Ms*gbogh94L(Zqv=>{!@icyj2%u&(k&QUSwEKyPDtWi;cZE*r!!pYwP zI#dBBa-0Qp$p=Gk4FeNsaSr4#b?|NKoyYiFPJ&jDut1Mk2d%gP9a0H8cMiIj8njFi zv<8BqyA`yZ0Hgv*b?bo=8;F6Rll6|XsDM_hKm?lKa6lN{AQ#4{7X! z5uo)p_e+tB&H;N~|PXpUrQJy22wT3y=R0PeEmU|0y+xDE^B zP8p;SgoT`p%3_cjNGLSFVSzBf`dSZ^L^dDMhz3o*fZJ8aSyVV-2SGL;(Ewe%3Gp8b zC@5fu!h_O*;eppjAtr&Qd8UAlZ)8ycg$rz&XE|tz9!L(f+YDJJ=xEc|ouF}e7!J?O zGd8kPKwQw7oS#>gT2ul$ZoD8VA9TqjRY=dt zPfE;D$Vkjf$w>v@sF|FT2{8_vzWjpJJcNaq=E5%)g`1*~l2`)Ta)+rF=6)o%f}9>2 z;-(84y9J#T2HNu`0v^Yg0{7ZMy=YLXWn%!H2@N_;gpC2T>j<>OLWBXdRT8utfQ_LG zdcp`B!*u8gBWw(y`3KMmBWw&C8DM+1u7OPjonQVCdS{3T11POS*4v9PGB7|`D)7_A zb>L#Y(7RFC7}B99gs?GGGr~?Q?`4FXh|b0U>g$3=2t*j>!S7XB2|s6iBU~M5-yg*F zpq?-26dyK*qi|W!tz@9}BO(l6;4T2=0f-nE^xPjd1|cSxo8_2b=b(dj3PSv01s6LD z_b(^>ymYK%BF0AX@VJByj({@(fiV$K>Fa>!R29%pMUWa$E`ea$^-kYGEI=bcX$d9- z>5GE)h@y&s(iW;nD~t<2p?eO72&fi<2|`Rh2jjwZA zJ~&hf0~14hZfb6F0qFh#kQl6A2fFeC#E0}wr=Tu3btXIN1IJ%bum0jT|jp#XgBwmZ1c0be5nzU>W3&?i4R8{GIq5(~}CK@kPr zV+*$$q1ZLIprjHZ4!VX9Y)Eiw30%}Au_O^;C8U85bE5-X2gH4#O;HHbJ&WOnxaAk+ zCYCtDZgoJYLH04&CfHSVu*PyqDkP-bit=+qL)@_4bO&xeLDYj(fK-NO!t^n4=^H^C zMd+<4L+m%%7+RQ`L6jnPmHc7>jp>5o7;{(21ZK#tk_u=h2bH$;XhngV1};!LK`sMf zP%A3j@IctkOAHJQ!HsVcI2jmvr>IDh2bm0!{{o&JY!j<1JuG z4`v3?>KV{FJBH>1KA`FqWE@g+L7=xqC58>53bqyrwErEt4h>RmH@^|+Jl?ogS#Dg{{*A9r4(C(D2g1mrN^|J})id=HD)s)+xRV zl;Kw}may}0V-f3M5$~>M>D{6t!NkCTViIVz56mRcrgWlA;sBY%f@TuvSRa^4;8rDJ zH#Hssg+J&nInWw%iQW-K;0iy5ztC;R1t7S0tfl8af!eYS4fexH$qg#IdL-u@XK&1v+*WG9sjJ0=+N;QlTPtbmFLc zjSbD9V;+dQ7j*gn=X(V^r(A5_b#zO?S#Z7Xx`VrA=vPC^BawY zpha4(2TFu{LsVosK?j~SzhP-T!0!^HBGY_C1AKZHr0fNqKvM%gZOfsvM8%*Rv<8R) zbaa*B?amw(i{maTphe4|su`5aK{Tjp_}^Kh!T~B|K~^7UQF-~7f#LtP<~I_p2TB}! zGZ;Zqpj6zc135^kGe<=Pw3QNcz!Vm(orgPJR0LoK$aLQ5200~0MW-9&v>fCUZ#rdQ zyMJEafUJ#dNQNiVYP;U$5Zcu*{M3dqlh1LTlfl&W|iWZoEj=QL!7>n*dh=)L- zfEGX?14;5m ztAWHZNF`*i4k+ANS`RD+b+-9iK!-oWEn@)%7N`kzc`;}w-9nI(<~QJ&2OWM5kpUI_ z$TFZU6%ZLvrwUmHw5SU#(=7@z4m3t~X)$PJA%6>KoTZx=WK`=({+2e-&SO!K_SQ=! zHLV9qDvqpukg=Wrtp`f@z|6G$@SPC?oj*VgDCj^}^BbA8W?N9xfPufYA2dt_jRziRn1ib$ z(B29K2GFKN=olS%PzuyAg^pc;EddkY@BtlB2yz;DAn-UVD40Rf-28@RA;_n#2TDMv z=)o#`mW3csp$mf6jHXRMYYDSJTgRYnDG=>x$63LyXJ~%I0of@ADF~n=csoE5a~RQh zC}+rI$YaQ5$Ys!DNMXof0M$WR`IV3o+&QtJIGh2(1r3G6S*{h}qat8?_8CeUiWyQF ziWrO;jF8L;PAv&2%1=%$E_Mm zwim7g)YgK?&V|dafXi-zv-ZJRpp&N|IzV^)LdLP4!(~6hO#z)K1yRS!3~ToZ!dq<8 za4`+Im@b@U!3-PGa%P5|JmmvFFDVVKt_aSW%na%2vN3?x>O$-Vt<{CZ#|roz3Tv4` z?H7>RO>n*YnPDS%N8w@@;jDXb*=KOE&u}qL76$MdXf_6M7ML$(SzsqwfiCcYxWy4J zi)-u+{XRZ$kw9SV4b(yftw4gbP(hg=v|<%BPk|5toz?+brH>E+6?CB07zhziix9N3 z0V0Cg(sg5D0I#S8*#N<`Yw2EvSb#)A+L;IeP??GCcD$nqC7@n80|NtS!UZM>(FHm? z3RMKO8VXg!5L9VHg&?}zFhmkiL@-yXU>|#{g6o2{szKW|Ay&ae=3}VAyg2~0YXhMR zv^EM7Mp%nGh!mtnjTm484L5;?ouHF~5NVJANCKe@Dh+GNgC?KRgplsO1CMCIl!DF@ zN(Eo%2N?;2HSK*%b4oIuDoavB@yaY<@! z0PN=0V$Zy^eB>?yQmGw|=nA+)Y7EDel%mw)Vnn9_H0%d0<53j*=BJeAqIUUHH z6UZD67GyohoDL*T^AQ>7DV)u3bb4J>Ko@I+PDnNYH{?JqSy21-0RNN&%|~?jw;e$2 z8it%QVgoulWRFS!WZ;wI2FTSv4nAOG1uYH*9TU0eHf=*VJF}&UDqG13wuSbQ4nSlXh5=gV* zZLpw^N)1Tl#zT-8SOj7|!t8q>vq9s{y>85%jIWvQ-uQNisU)+zM+LO25oQZWYv<2{ z4_QE_^_FlLboZ!$R_-<*U<8>AwXH{G0t3Vecr3gDo;$lKvlV1%C*!w6EMVI}Js*6w zi7+!TpxZWsWZRk_ag?NY_o#qozF@W;e9qDvVqpL>+($*CyGKO=GaP%shrED1kMJ2H z3}IfH3i1*(d37>%yQqjX9s#9q@B!1HQ*c3zWYBGz$l~x_^pN}z1IiC;R0=@U9F-E} zZ1LjY1JD`u60A=^L$WR^GQBP;3gA?(qw*ixl>}#vBG9oTEh;}CSp!5tvj!-$fO>my zO-NY-w0W(YyBl;g%sI;wbq3vgzyZ-6q9Or0wmoe^=fBJEnx8Rte&}cs1i7HwxYv)- z5_DYrxlZo-htT7InjaW6|1jWhy#wmIwy1!P2iKkGH5eFf%ZK0{7r6p5|Ym$r2Z41_sdf z_v0-ppg9xJ1qR1kR6tE?P?5{u4(jE0w@d+9xq`8zy7N`%%Y%>DjXKHd)r`niBSaBam$pK!W@tXd2r|A?7|CkbF7M#RH=wBQ zo&zocdtFo{Kw}@^0u@wzf|ibeiqFnN&2M-N542t?RX+Hbt-Bey3hD)28w;(DI>9oH zM?hvqgSx^D3=Q_61Pp2agS-mrFN!dL#snc^pe`juOb@$j? z3XuifK@DMnZkvX%nBaX)dpK)0oCP|)7}6&NmA4Qbu<-y zSySMwGjJB@?mLLdvshs|KxZ36#6WAJAuL8Vn5-zAr447)J{v6FRyA_xo`;RKD+g4KY9L3&n9V1kJOdk+ni<-rQT zy8=#w?$QDGYCz3-oUL?p30M~hCJw)W2W%8f7U_Z;YFvK<@gdHB9GAWYiE|p}CK&4p z__!b^Rb!jexWEqSKimM-GYpXX73tA`2w`AgXo1=Zi8%%aQ2(Lv4QOz+bBhXSETFqZ zMTCigp?iyp0I0=0M+JQQ=^hmp5O0kNsE=Uyw$ntV`Irx=vImc`_D)gx!@$6>6SUE| z^Lppu&KI9ogXU(_Kou+_1H&EAyZ{S$a>4|@M1ZHeMFq6OsdtYG=xBn@7BB@mQx4Q8 zX;A^4H_+Xp0yv)1gIiQUM+<-))7_%71f&^O z(SVkL+CXMVc7gJA>w!|$&I{cTKXpU>3-MYv#A}U5KtXZ1H$+9D^99sDpI4_HcTq_J zdm@8@A%>xwx!YT$vqc5e>h5-C>1 zsDO+I9qt5jF{p}W0H3l1;(^Y7VgR+{4G(}LAD;B5ZESh^W>&4Oi!iVS~?F6g?L8Wjns@x4>PPW!yN z*GI(!l*&4JRF1cR#gJ_T&0TFZQBmk*gdHl_32K6aJktCI zbccsRFKGR=iwa9OQ}Y3zPH0MRc2SXGd|3lJ4i0n*ONffh2GBf}4#>LJOC^FJ?|_6(_#8uR8+v1Vz{VibjPTubPM#d%;=6$(dg#rP>f5ET(f9^Rw!1Jtv*-Z@7F zH00YoM+MwC-J$|&N_B5h0Ugu^UR45G5#Zbo&Y7Sj2F*g?5)84xTA=k?30t>| zNuoSArIWcEY6aA6h|P^hKrVu-eh=5#PaEAf3lpQoF4NiiP zL5&uW|GQgMK$ix9E-L!LSGKcziVC=#Vo~Xw0uGPvDJr1ORp%5H9#Gnzq5|rabWTx` z0rmQ(s7Qc{)({n*-YF`eRluNd>7AkiYV3dtG;l0;Gq)b7GwlZ7hW47Ln;CQw+EEG1 zA9aeoEnq7^=?*r@+j^k%Za1^#5B`4b|NsA6f_eytN|Jk7fLP;T0yMMt`dYZ*fnadxH@*R-A5b#u zo&!!p(6x7KF_r};1ksG93;Q2|X=f(lWX3mcDstdEWd^`Q_miW4S)XXubu#TTcRD3pOtt5?X) zPf2A!U$2C@d>*lA9=7rvbmj+SGQP^ja39VB4V6K3a4|D5fKo3T1E`-3nwl432xEq=BL^J{ z3_AN_(CV_)Xp!EU@)YB`mO+vj!GO8%%^@Ckq1uXyRRj z!H5+$TXmBa(!XG1aD(2gBEnG22D#^3gh7ZMW=8=#OdaUvZAiG_>V2T!O9CpVL1jF+ z*8pm%fH-IvbR!996+BoCSPs+|1~u6bBA{OH0+hZ+3g~W66cJDwE^sz@nZmjWobLE}#tBC{|=Q11-^nRpmO4QK}gNCq_1imjgoTB(k@nmxWK6}(Rc zp$o+NhGH^US1u@@g5*GM1~qCSy`JFI62x^A5FzO9HgsX6&X;d~US>&t5o|IBCWGzP z4453^t_{$_1&BpRa&XJg%>>Pbfl4Z0P(cM<;)b*UE;zNMBr`7^v;q!3)djgB1-e2G zrogo#+`$OGcpb?E$ig^~0mLn#1FgXT&tHKj-7r_rAsLNqH+X>_Xv)huBR{`574Bc? z99M8bPG*TyKme2rT6&R)>mnG)LOVzh;_S2{OGBdzYBqFBCseSQLEq2-Ww|_j&!G{H z)$%6BCXk6V#O&A;=tvN@-YqDLfJT2os~PWAU?xf^N^qn8ME8~nu=jyU;rIaPLEQ34l4tLhzbM4A<*Cf0|SFS z=!_-?1Bc+w!<`qJ-$WdIA@J=8V~IlZYmUa>pzKk`wFA^mZ$1(cefYl$X!`^Ms1#KF z59(ossOW$OB0#MrMDg*0r}+&>^N(cEh*SCY|0=CH%nS@Wyg>)$?%V;|(fWGR4nGiY z^$s5pwPXhy90uwHB`%cYyNU%kuyK|L<^TWMFs+ zx>@w6S}*_q`~QCjXjbgyR}c%-cY6uC#b5`hEPMG7BnDbU{PH@8 z1?ok-JPTs!GcYi`JPcxi?g@Lj6T|}T|9rU~!~!h@ez_FH0?nSioDE{BgLF&;vB3Uq z2eH8Zs0Fb=A@Z^q!~%ywCWr+Jo|o|;7TD*YTXMjm`qCRD1`6hvjvy8&++Ui5SfIdu zsS9F(qU5DAh@}MbuOx`23}W$vSfKsLFF_Y9>`(=X{r>y^{|+?}>m!Jz4q`nAu|W4F zy}S!zX@bNqgIHQ1)=3Zx)I)f=AH)KU7rfjGVu1!AU#@xLx0lmFEYOKy zFMB~O&}z7s%^;Q$NL?j}Wej5FgIFdYRw{^P3SvcrSfKk)Uj~9$pqt8Gx`SAtIn0-~ zAQtHSxR=HtmMbWnH9;)UBJG#*AQq_Rc_|8FfqH!}xj`(@8E`KdK`hW2a4*0A`Tu_h z=%&V(Z$T{3)dVjegIJ*R-d^4Wu|PLzy*v+Mfo85=9tE*LGo~+hgIIwedpCkupnloQ zKs#+-W`kIu-BB+SL98f{ zDd8X%XqW9vUl1!A6fVvnRt$(`31Wfr*h_s73!HmYK`c;)dnpZKf%a*?6a=wAXScm% z2eCjSdoTa~{{Mdm==|K5pFu3p_}@xv8!s1wSfIJ*moq^u(3Ho^eh>?^KmTPbhy`jLysQSXKtpCP z3qdTZ>X<1dguOGFxff!1}G@HGAcg*Sg|-mm}vn`=~TgdqA_<9_}B|IJ0knUTLG z_}BmcmN6GbRW|Fj7Z*EauRlswS<;16pQCWa=QEkpXnY3@ErEkpMb91k_ysUHl#cuA{)yF2`NK z^AZf812MWm7J(LxL3ajev4ZzMh;&0N7U*sUITtiH*4+$pE~0*WW6;?Q>Xdatr^33y zJkZR`chFD<=-#Ok70^vZAb)^|aa#}YPX#5P<|8@a5!2o>hK4#m&?O5{f1hG&sN-QM zQGtcgc{XSmF|shc<^$EYFd2q6h{L-5Si0@HCxcz)qQcVaqT+GfMFmtcG#qzP0o5%a z8dQ>jQXZ(JV(0|ja^<5E(ix({1DmNq@|8fhi%Lj$j!J-bj*163m|awSG+k6IUiN@4 z&T&y;`NIMZX83ej^N}3G17HuOf!0j1fKFXTo{um*@RAGEcL2G+`HfCzjEX{UjEVqw z$hAa8rSn)f$W5U5g~VDnTQ{g`1?}_zt6@?3f4%t)2WWu|I4Q7!TniFG-aOhJqoUAV zqN37WqXIfb1~wsdVRyZjfI={sj3kM4g;zEVD89ez}0?DUnH}3>DzX6RnICQ(Hcyx!TxPYz;1dW403SW3}1zJZC zqM`vQmZ1eSsPI!jvKmy7fo|uN0Hr+i4WVG2E-DJ3v;cOpiwXxMnvqP9X+B~BzbF!N zvm+!tKyye~!vhiyNJfz1|A_7wl>|sS$m|UkK+b{Sf&esE>kKL_!D+PH1zfLz&TjzK zXP|lu6fB@=YS5?zC{v-dJFs~&BKmN*k4g%(MgdnQ$6Zvw9rjKi6_0Kol?+g_>UB|p z7igf$qtizPbl?TpcqA`_!re#PMa2b_I6(JtgC3aF^<-l76p_uRQg1+-zQ zdyNWc1P`8u5a)DoH2wp%p+RSY$ul!BlqEF&169%dEj=6z4E$}=7#SEE|M7u#sw++|C8Zw znaU0_ypjo|9n^~BZ&?pAunn|LuJIqZ$=LFn1tbe<*7LVa1giu!G5K3BgBB-E0k5;} zeDUJz`~Ux&fBfTb*#i;=Wgt+s2O6jZXUGs0ga4QK_g`p!!*cMId}oLX==3zulEeQY zDh8l2+7J~D(D0?raTd@Kai#Ub%{X=S+FStnPzgF1>B-R z*W2x*0?Oy0hCM^4j0(sMP~~d?8vC?K<91Oo>23jgjNcL?r{pF4(2n60&swwYCgq+p#T&bps)qC z?~wF>R=b>PKE(m@vkgDgNU+nI->@|PV+6&ekBSO^OD{N8f!*J79Lxs!iNEC@2Lr>w zw*qO+e;N5(#5oxl(whG=ffHG28R&8?Q27h0{XsDZO7)9&Cerkno>@VDFm?F9HI0j_WOTQ-1s{H3X|X2t91#=rmnGcbVdDdFn`oe%=8cnvRg zUg(Zdsp*F1K4`Xt*y>&3lg42}P|!71a{-~ay`|AFQM`CC?ivl!@{w9*DpXm;kP*xh$gvAbb91=7H~ z8>7N=^Bw3uc5o4HcFuq^;HuY;HjAZ9D*l!KSYK}$3s+oQqO@ZfRODih_Lu0iAvja0j=lRY<00VHG={L)WEm64Vhu!=?qbUu|eGZg&k-zoQpa1`1-4bw_0nU$sFRT9i|8IDp^)3I@1E59#EW5v41kyeMmWd57 zy$t;G|Nn$EkitU;-wN<=I|XJRXgR>Y?E`;H8WRHp=%V&G&|&x0EDZZV<;X&C>S+OO z8aMm~O-n5=Ss56*ogHjJ>5RYSE(-&LEt3N?1Aj{_SVChzNN4MT5`MJC5oiS>%yrZT{_Bz~1kaQ91Zt0Cd6!NFzAWz&J1y4KKYcKsH4kWC|p& zfOP)=*CVjp0}3dxDTbF`TK)e2-|$lFTmDu9$WW68c#j*XL}>;cZURc3{4FBC|NjRS zG$6mhtOUut{Qc|yf3Q)YKA+xiCHO7vimCYxq$c_Wt<_-?EXWd| zN(&?b5(9Orkm_uZAsiraZcxwG;}@h9hSj*&z-=N(Jqs#6U@fLxCZsxPB@&X%^NLm7?6#mxrfB*k~dGGK4|KQ|i_}}s{f9rWr=~@lW6(!aX zhd{#-!fAfP(y$xUKx5!c6g72!|Nn3O#@_41^h012POLhCm9zHbWH{UV14BQsM)NM395ADEapNKj`Ql_;3|S2}mi-Ifj>B zUIr;aGX+h_1}sXzRS3c@y&xrM&P7v_1yX`$5oj4H%q`$z^Q8+&6`Dbqs^q@^{|`-O zrQ#^*?^rV^@qucy-Wrt%P|=3gaf1yUaiGe9#xi9uBiD z3#1ves2^#B2V9>81%ZMB%nW?#0#XIKeU*U$%?hDE;D!Rce+n9J0rww4TNVlSA7SG? zuoMajY`Db`E*WEFkTIY#(9Nr$Wg8&lLD`6)dq8^-n%~qw&Q5})ncf%`8^{1_FZiTv z&`M)a1p&+G;QlaacegF5%5VM8-?AGtNDi9%f%PoGCm-?ezX7XxUd#W# z)_Du5-nj*%r|`(6yE|;34mZ z{owX(>3jH0MLVeJ3Xk#THypQJR8nrT&R}I=xN{P;DhJdr)w}JYl5p=Nbd?V{XSt}b zfL8n5j#1G7ul6Yc(>gGIXNgJ%c(VY+{1|Y4gQQ*1MhF*`98jwRv_T$jcjtCcMcO$Z z+zxLCxswqzC4U6s^3E6)tfNHWavnOT@$&b-|Nn6*1Q+-)g^xjf4p91pb*_%^ysZEG zAM<8yo0~N%a(7)+TslE#zsIOJbk?X?fPzG>vqZ%N5+Ii{7@fz?rqy!{ib(W~;z&#HM6dkZm$c6|=V0G>W2g+tppn%kXTu}l(NzMYa z=nHK;viXfoH?mtxR7^nbg|R^WCD9P^$u@00s{tf)FiGkrQ69dC{&^>aX z6I4Mv5J0;Nm>C!}nHd<2nHd;tnHj)0=LRw}Fo4ch1>KID&&1H)Ek1_scHStpqp7%nq2Fx+KEgu`=Y28NH!3=F@S85k_s7#KjO8_i^7 zU|7t^z_6B)fdO>#{Xs?shSQ7;3|FD&q1^{fY%?-2d}d@|_{+$^02&JuWMW_d-Q5N{ z6%BMAnk5qhgEJEYgD(>ULpT!yLn0FcLpBowLn#vjLp^83dSnHU&0 zGBGghW@2DC%EZ9%o`HekCj$cmXod|vtkC(Obqb*M_2}Y*jSsq(9kiwgwB`o1b_}%Y zD43CfAr=~@^l&feE`&lx2JlS?t&9u|Poeh=fb7;|V_>)lS`$fSe4K%S0d$_gW(EcZ z(81R885kHqa{!=|3Sc)ufQG1GxS4^00d&Rzj6V`+(8S~3PTU<^em_@g=Ekv zTA*h12hcJxd(cKn(EcYj2GD9S(0U@s-5(G!E>_TP6407nS60a0BsPW;Rt5$o&{7r# z&}j)ET_Oyd*+8xV?ZP_62HEw*#=yu9xl4$RL5&@)GXe2xAmeD`#3=E*t zcGws|i-jQe8gRgF9(Cb>nGygOYv5pD0IjKJW9Z;uU;wQfWMkOG!N36W3mXII#$wRI zQZ|PF95A==bHa9Dxo|QtfYuGOF(h-sOfKSNV9*Bps1`0ZkCTA`w8D{%VFM=v_?C4x zhButByH7#47=zZ8h%lIQF))BuP_Qw0a>4G|jpkxt0Ih#yW5|WyFua}%c6aO%E||Tb z8;e0}>qHnpHx@(O47z_9w4zRgL6DmP9HSx(D%_A;*V!0i;9~i3G0+{tp!Itq3>UZ| zcf7MP{NaY#;l%?Bp`$#oaAt?!{_DjH3&~l$usdAW@sd~rsEYK z%;%2$kekWb7*_E!Fo4$ii7K<+4KWB4w>zyMnDC&FMM2ot+32)R?7jloQafdRA% zP=q00h=Bn#;w{3^CB(o0S_LS=@InZ3<2V}w=oVhksyH@=IANIIK=*Zm)(DC)Jb{aS z5N2S2h#88&;;lr4fdRCFP=sNd2;{bMHiio#kW;%w7#@khTy<6y=F+F4Fum+zkTV$B z7*xd=z$dbcFqnujFo4z^iZJAh!PM2lS=+^6A$eGgfdSM>6Jaq+l`K4`*$Hv#!EfKj18BX_yW> zI4cFtYLSNAvCYP?R2r5hS4+cE`+aGcKR!ys(%OG%SQzlgz+_crV7_#fft<+3#*ioj zi}Oh`Fgv!uWv|P?N{~lzbzkA?v}9qqA{x%hm4%fI^|G*%VWKST{_9UCF^}z z&}kZ=a`&YytUwNOS2!DkuRJU?qU2#YWurVSTu#bE?w4j` z;8uXekqMmTssOoZnvLO@0!+s}1(=R7MOgSHE5gFBK@k>ya};6Ww?`2cLMIeqA^AlS z=Bi(cFq8F^V5T@I!Qv=V31&wcT(({bX2*Obm>s*7U?yKsg2mArIEzymCZ?(kxf7d> zAwU^cr%d36rRV3|u=a8VCzCJOp8Z28NV;I5$t;~V2uE5oS4mW~`flf4nus{bEL0F(uj36w~(MAv!=&U0M>jT`B zFL2fmI16+#6GRP?8O23$-B&N6_rOyDdFILijka)7fycichD^MH$i)<;0ZKzGPMSRruP2skSS&Psr@ zQsAr%I4cLvDuA;<=S@IN2A$LjVb#E88{n)KI16;)GL>9Eu8p65&m%RdKfmYo? zWbeSm9>7^o;H(#L)*CqM1Dy2*&H^3V2r&h;4IL2jSwB6^>z@J23!_&tQJJf04`<%XIa2mHgFc`#sG*8(0zUomIqwc z2hIwBvqIpk2skSS&H|lh12H89E(SW;1|pUN7b}3XK&Rb6WI?wWLRd9$Sj<260?q=RHwrQN0$l70oOJ`vx&voDfU};!SufzMH*nSmIO_|X^#jhrwNt)4GcP5- zTo1C9ngO(L4Aeh??0E-`twVUIBxsRs0Q5{y(E1C=7+wMgR2Nt=Xs_V~s0e7W2c$0; zzztCY5dn>7EK@};4Xa);HnB5QxNd(ja0dwIu?(WA>a~(wla;gDL59By)28P!tYQVCP$ObbZ zlEN4w+884C7$T7vB4rpNpn4H(5!@H^G1P3s5IKh-0=lCH)f~`V9I6OEXgC2X1o0QB z7Jv$X8r=*G44|1vR1wfl2~?3>40Gx+M5beiti=#Hh#_(dLj+V(q1w&|K5+&j2K5Do zh#iJVFosAfTm*Ec6v(_r6cOy_1TR2Q1JbnxL*yui$Sn+!w-_RPpq(-x1HmT{gBZ#f zB32k8p%@~07$UV8B9k#hK&MTE>;#q6kWk%?q2?@x$WsiFKNuns(0fG?CYxc1_+p5p zVTd$hh)l;2S%V>R97E(eiU<=214DdCQDR0cJvA494nX(l(SNx=T%{q3r;P8h=+h?;?Ry$afeA_ zo;U{AhbaZu6`Wa>ie@5Q8x}eD)DpL%#N5=R(zLYHA}k6#lk@X3(<&kEWr&9~3PAU< zK`!q^4h`rDY%rxL!4aI1UyfD6BQqrxt3*J4PL69?YF-KY*=pg5nI%{yK(~RH78U0g zVFnLe3UVMD$kmV#Gd6--4n7&pH?bfrv#6vrF~>W#5_01YSR8Z^TxxM~VtOj*1RTVD z;sL3t*}f17|CJa!LbFF{`G0cAFoXpg`5|9ky zAUB9uNPci~QEF-)ighzc~xBm^{JeBjaqra1;F83WR1`y;6AMa8i;%=zQq!Q$D9TSpzGw=bhae^!!jJ6> zDN0Pv_RTLXP6ek)RO8WNz_S<>)S1Z$MM0@Ksfop@Fn7RD`U71z57rC{4wM*x#2~^1 zh;u=Acm?EV=9M6#CInWtL6av!3+Rl&#FFF;s07lDSMI4Lj>VOE$=Cx6?jU&dfU+Xg z6mXURs54Ov}qa#4Ox z4zdU&efZ{=Waj5#io1f&*+LeESQM67oSBrFlUY)UDd(J%Uz{2QI>W0N7EWNNKyo>Mp5GsCLdg$Sl|f?g0jRM27N;l zL&zy(5R%YYW0saM^@y{^0u&%~sn|}CydVZSYit2%ffNG+18ByI9%qe##(!GGA#FMs z3A!Jl`Hc+9I!*Ax&&8l|g%a3p20#8U28}qBm>gpTjX^MiCJ`9Gt1U~^z-ui*=K&vQ zQ2`xU0GeoGFgyU3g|Ec~%^IT0zdnFCu~DYM7Gx|#spLYCwb-tvT?n!tX;CrD>nkw* zptbdlZ$Ps_pev+6M|;mv0nPM)4-NsXZgZfE;1~>f0b2)_S0`88lJA z-|~f*fuUiyIjF_U-f8ZWT$pK<9DLN_x`5v%8v=tZ__*+ka?vB7}3&?0@h%F!s z!L|?;BPD{3d%&@w3bLUk4W|ttV?{yNLHno(K!Xl!3-nTS-0=aLYG&Yfg~SImK|u`= z2bsqXNotTZ290>I$wavyZaT<)2-874Ns#I8ENI4qLJDfU0PMzdvK%iBHl72`c#y?V z<3&0N<_A2kR{|T)gJwL{T(1l^UI5K_s<~bcY`h4X@l%G~=n}dIhlYGHAwA z&Gm|4;}y`1r<&_Q$C-7ytDqTAHP;J)U9W*=JkhQPooy!py1LJmdr zY6w*8f=UuloqVbJjYR8#Zb;$H-#v`C6L+1zZ_OaeI zDxgI!ojH*Gub_$^v;`d!)F5NQ`xTqtfN%5xZ<%X>+=y|g`H^b#FIE0l(5yq}p~goJ z0t^hzza02mrh=vz_JFSiVc>5CAB((giVEmZ#1%~ZQ{8ns#X<1^T0GMk&H`fcfi~`j zbAXtjg*2VvJRl}$7eZ&a0Eh`%O4AuG0%8h-)k=VvprtmQ;W8j5=!E3Xa0L((bbU`} zxC)2~Iy1F1T%*}VMS-!i++u=tiHZh)Yt47?`34HDC;3}IBe9_4thzzxIf1qqwWxrW z#emN+fS+o`-|_}jMHN_pZnOe5t3db5LS;cfo<3)?Y3b!)@%g|(qqlwkUiE6S_;E(tQp)yKF*>7S|{`$w8a$E zh6WkV-;&76zyNk3WVd-wK+6 z=xztOxAj1YR`+yJvmA8W59p91TzWvW=U@v7S_PVqf?Kr_bZ`J+t5EdRf;K?G`XYFJ zrO5<69SY;72|}xh@uCye+ZXVQs9Ua0qy2I z&Z6=PVO6Ok#CzcLL_qEGxu6~CXtBrN(hfQ$!9|4yRWpAJ=m>@5EGqw*7$7H-z*7_` z3G=rE{QCbNlH?d)x`4K^yQr{$7GWZn=b!@2@Eh#Z4V2OyR6l@WESsm;?A* zO#lA>kDjmjTR?|CLz5MfKK>SVu-8Fl597<HhvlM8x&2T09OOgy)SLP!6F^nUW7Ctq5W7V zP!$g8`GV>=P=Axq07mB_aN`)-U+#1_c=_%N$Um^NBp@jR?f6kp0s~n9+H4K3qgxM@ zfbSNE?8gS>5pa4u4wi(d;eTO1Ai;% z(qvFjfR>{nmwTWEl_+PE8Xjn~a6_dmLkWKa#A!Prf(N^OR5ZFh4O&m~_mzQm zx$gqyNe2FwOfU!BOaSFSP$qa83fkM<1@_8&PuT5p$_LE;2dZeZkp4oK=pZXtnBU66=A3jXl^TEY5i8p*{~Z_ z`ZJXBz|MdL*#+9xKN*zWLFp<+MFey=AIJ7D42ZVviA4Vj%DB&u1uLNM*=lNN31lFlI1f&|^qp$YB8O8bRCyn3JEF zqL5#ZnwOqqY^0Zx1CkAQ_pwqyC;{I?mRORi5aJW8keQc~3L2-!vX`}_C^NMzRl&ts zAuYcMx}}u?Y?fcXLP2IlY7R&uH?gExAq_O=36TrQNL5HF$}CGQQb@^9Emp|OFHuM= zC`e5#0&T!8E-fg?FDg;+FG$UE2koB$n}={)T4r8~LZU)(X=X`cQcfz0H4M1j7~tjt za*IN7YEEi$NoooKeV}_4u`7l60pT9V3JIul6_WGwN>VF8TXN9VrRIU1Tbz*ynjcmu z&n(GMC@x4%&P>ZpO+nXQo}S~LTH;z!lA2eXnV(k-nFw@^2w}i3;~3-wvM=5-$SFRz zG^Zr9I5D>%ClxN1Rs>(q5MLbRj!+D7eLT$B<>@&n(~FKJB}JJ@#USJ1W}#|{FDS}S z%gjk-0L!~Zgg}>!z>JJfEjB_`19Bsp8AbU?rNt$Asl~-`Q;N$I3&3U+<>!DrjXX^S z3WsoaAFyu=K&dPqe6damNS%9XNdQR54RqB`3B>)GWgriL(~%=65tJtur6?rl=N2TE zWP*|qB&osTP62#5PcbNsB$bvZz$`*_vO;FDLTO%NSz=}mC|W@!D%gCeQP4mk$|zXq zpc{#7o@+31Mj-_@x^WDk9zCeYVFTZf1)2N2Hlp$2HwjJS#t}zKL)}A z?QMhT4Pb!mCKO=+?N5V@&hV7-d0#sgCq!vos|+6b3zKA0U=a9Mk}Y&l%41}@eO7uybJ9p;0@!bRwQa}kDTaM>?#Sx$bK3&i1TMA-E@mza z+t;5c4BMZ(UKnQYZef^t&*5U9;bK!nVCoi#z|>t7fu;MKA~1hE6M?0BW>J`|h$u`} zRuq=nokU^#frS0*2F1lfjK~s1n%fY|v;LL#2jL3v z(ofJTQJ>7DqQs&~q}75UImM1SIr+)prGH>`Zbhl7P<4pqh9Nn{AaR6%duoY`GlJ`q zTAW;znUspulto(j8jRA$bwDhuX;CxPTyg!Lgg z#h^8OVD<2omgs#0g!1zAoZyVaqEw&E;*w$%3m}&&LqiUsAqcX>)5RH~7%4Up>fBRH zklhDbV+mPIm|23loD#e^4&^pw@ZHRAPR{vxX_@KJlmqESdFCM!K?$fY29?FSmW~Sm D+c1F! diff --git a/external/glfw3/lib/win32/libglfw3dll.a b/external/glfw3/lib/win32/libglfw3dll.a index 415d85630c915f574dec0fbc46f277abeadacdd1..f7cffbf9a4656cbee6eec364a7989036cc8f1299 100644 GIT binary patch delta 4517 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