summaryrefslogtreecommitdiff
path: root/libs/glfw-3.3.8/docs
diff options
context:
space:
mode:
Diffstat (limited to 'libs/glfw-3.3.8/docs')
-rw-r--r--libs/glfw-3.3.8/docs/CMakeLists.txt34
-rw-r--r--libs/glfw-3.3.8/docs/CONTRIBUTING.md391
-rw-r--r--libs/glfw-3.3.8/docs/Doxyfile.in1828
-rw-r--r--libs/glfw-3.3.8/docs/DoxygenLayout.xml71
-rw-r--r--libs/glfw-3.3.8/docs/SUPPORT.md14
-rw-r--r--libs/glfw-3.3.8/docs/build.dox348
-rw-r--r--libs/glfw-3.3.8/docs/compat.dox281
-rw-r--r--libs/glfw-3.3.8/docs/compile.dox367
-rw-r--r--libs/glfw-3.3.8/docs/context.dox346
-rw-r--r--libs/glfw-3.3.8/docs/extra.css1
-rw-r--r--libs/glfw-3.3.8/docs/extra.css.map1
-rw-r--r--libs/glfw-3.3.8/docs/extra.scss430
-rw-r--r--libs/glfw-3.3.8/docs/footer.html7
-rw-r--r--libs/glfw-3.3.8/docs/header.html34
-rw-r--r--libs/glfw-3.3.8/docs/html/bc_s.pngbin0 -> 676 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/bdwn.pngbin0 -> 147 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/build_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/build_guide.html192
-rw-r--r--libs/glfw-3.3.8/docs/html/closed.pngbin0 -> 132 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/compat_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/compat_guide.html145
-rw-r--r--libs/glfw-3.3.8/docs/html/compile_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/compile_guide.html216
-rw-r--r--libs/glfw-3.3.8/docs/html/context_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/context_guide.html251
-rw-r--r--libs/glfw-3.3.8/docs/html/deprecated.html81
-rw-r--r--libs/glfw-3.3.8/docs/html/dir_1dfd43b3952c5bc1ba15d15b12afff7b.html88
-rw-r--r--libs/glfw-3.3.8/docs/html/dir_4351554941a2744586042c1cf3cf139a.html86
-rw-r--r--libs/glfw-3.3.8/docs/html/dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html84
-rw-r--r--libs/glfw-3.3.8/docs/html/dir_fda32cf7bec00275262cb8799a618f76.html78
-rw-r--r--libs/glfw-3.3.8/docs/html/doc.pngbin0 -> 746 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/doxygen.css1841
-rw-r--r--libs/glfw-3.3.8/docs/html/doxygen.svg26
-rw-r--r--libs/glfw-3.3.8/docs/html/dynsections.js121
-rw-r--r--libs/glfw-3.3.8/docs/html/extra.css1
-rw-r--r--libs/glfw-3.3.8/docs/html/files.html84
-rw-r--r--libs/glfw-3.3.8/docs/html/folderclosed.pngbin0 -> 616 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/folderopen.pngbin0 -> 597 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/glfw3_8h.html1619
-rw-r--r--libs/glfw-3.3.8/docs/html/glfw3_8h_source.html1155
-rw-r--r--libs/glfw-3.3.8/docs/html/glfw3native_8h.html160
-rw-r--r--libs/glfw-3.3.8/docs/html/glfw3native_8h_source.html285
-rw-r--r--libs/glfw-3.3.8/docs/html/group__buttons.html275
-rw-r--r--libs/glfw-3.3.8/docs/html/group__context.html295
-rw-r--r--libs/glfw-3.3.8/docs/html/group__errors.html297
-rw-r--r--libs/glfw-3.3.8/docs/html/group__gamepad__axes.html195
-rw-r--r--libs/glfw-3.3.8/docs/html/group__gamepad__buttons.html403
-rw-r--r--libs/glfw-3.3.8/docs/html/group__hat__state.html227
-rw-r--r--libs/glfw-3.3.8/docs/html/group__init.html545
-rw-r--r--libs/glfw-3.3.8/docs/html/group__input.html2228
-rw-r--r--libs/glfw-3.3.8/docs/html/group__joysticks.html355
-rw-r--r--libs/glfw-3.3.8/docs/html/group__keys.html2043
-rw-r--r--libs/glfw-3.3.8/docs/html/group__mods.html191
-rw-r--r--libs/glfw-3.3.8/docs/html/group__monitor.html841
-rw-r--r--libs/glfw-3.3.8/docs/html/group__native.html805
-rw-r--r--libs/glfw-3.3.8/docs/html/group__shapes.html191
-rw-r--r--libs/glfw-3.3.8/docs/html/group__vulkan.html352
-rw-r--r--libs/glfw-3.3.8/docs/html/group__window.html3427
-rw-r--r--libs/glfw-3.3.8/docs/html/index.html93
-rw-r--r--libs/glfw-3.3.8/docs/html/input_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/input_guide.html562
-rw-r--r--libs/glfw-3.3.8/docs/html/internal_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/internals_guide.html125
-rw-r--r--libs/glfw-3.3.8/docs/html/intro_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/intro_guide.html329
-rw-r--r--libs/glfw-3.3.8/docs/html/jquery.js35
-rw-r--r--libs/glfw-3.3.8/docs/html/main_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/menu.js135
-rw-r--r--libs/glfw-3.3.8/docs/html/menudata.js30
-rw-r--r--libs/glfw-3.3.8/docs/html/modules.html94
-rw-r--r--libs/glfw-3.3.8/docs/html/monitor_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/monitor_guide.html222
-rw-r--r--libs/glfw-3.3.8/docs/html/moving_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/moving_guide.html367
-rw-r--r--libs/glfw-3.3.8/docs/html/nav_f.pngbin0 -> 153 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/nav_g.pngbin0 -> 95 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/nav_h.pngbin0 -> 98 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/news.html614
-rw-r--r--libs/glfw-3.3.8/docs/html/news_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/open.pngbin0 -> 123 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/pages.html92
-rw-r--r--libs/glfw-3.3.8/docs/html/quick_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/quick_guide.html391
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_0.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_1.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_1.js8
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_10.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_10.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_11.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_11.js7
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_2.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_2.js9
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_3.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_3.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_4.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_4.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_5.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_5.js477
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_6.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_6.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_7.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_7.js11
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_8.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_8.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_9.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_9.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_a.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_a.js11
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_b.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_b.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_c.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_c.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_d.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_d.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_e.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_e.js7
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_f.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/all_f.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/classes_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/classes_0.js7
-rw-r--r--libs/glfw-3.3.8/docs/html/search/close.svg31
-rw-r--r--libs/glfw-3.3.8/docs/html/search/defines_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/defines_0.js32
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_0.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_1.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_1.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_2.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_2.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_3.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_3.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_4.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_4.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_5.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_5.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_6.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_6.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_7.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_7.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_8.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/files_8.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/functions_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/functions_0.js146
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_0.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_1.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_1.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_2.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_2.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_3.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_3.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_4.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_4.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_5.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_5.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_6.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_6.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_7.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_7.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_8.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_8.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_9.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_9.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_a.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/groups_a.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/mag_sel.svg74
-rw-r--r--libs/glfw-3.3.8/docs/html/search/nomatches.html13
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_0.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_1.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_1.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_2.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_2.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_3.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_3.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_4.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_4.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_5.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_5.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_6.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_6.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_7.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_7.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_8.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_8.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_9.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_9.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_a.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/pages_a.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/search.css263
-rw-r--r--libs/glfw-3.3.8/docs/html/search/search.js802
-rw-r--r--libs/glfw-3.3.8/docs/html/search/search_l.pngbin0 -> 567 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/search/search_m.pngbin0 -> 158 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/search/search_r.pngbin0 -> 553 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/search/searchdata.js39
-rw-r--r--libs/glfw-3.3.8/docs/html/search/typedefs_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/typedefs_0.js32
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_0.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_0.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_1.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_1.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_2.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_2.js5
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_3.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_3.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_4.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_4.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_5.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_5.js6
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_6.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_6.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_7.html37
-rw-r--r--libs/glfw-3.3.8/docs/html/search/variables_7.js4
-rw-r--r--libs/glfw-3.3.8/docs/html/spaces.svg877
-rw-r--r--libs/glfw-3.3.8/docs/html/splitbar.pngbin0 -> 314 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/structGLFWgamepadstate.html129
-rw-r--r--libs/glfw-3.3.8/docs/html/structGLFWgammaramp.html165
-rw-r--r--libs/glfw-3.3.8/docs/html/structGLFWimage.html146
-rw-r--r--libs/glfw-3.3.8/docs/html/structGLFWvidmode.html199
-rw-r--r--libs/glfw-3.3.8/docs/html/sync_off.pngbin0 -> 853 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/sync_on.pngbin0 -> 845 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/tab_a.pngbin0 -> 142 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/tab_b.pngbin0 -> 169 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/tab_h.pngbin0 -> 177 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/tab_s.pngbin0 -> 184 bytes
-rw-r--r--libs/glfw-3.3.8/docs/html/tabs.css1
-rw-r--r--libs/glfw-3.3.8/docs/html/vulkan_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/vulkan_guide.html189
-rw-r--r--libs/glfw-3.3.8/docs/html/window_8dox.html74
-rw-r--r--libs/glfw-3.3.8/docs/html/window_guide.html756
-rw-r--r--libs/glfw-3.3.8/docs/input.dox962
-rw-r--r--libs/glfw-3.3.8/docs/internal.dox115
-rw-r--r--libs/glfw-3.3.8/docs/intro.dox454
-rw-r--r--libs/glfw-3.3.8/docs/main.dox46
-rw-r--r--libs/glfw-3.3.8/docs/monitor.dox268
-rw-r--r--libs/glfw-3.3.8/docs/moving.dox513
-rw-r--r--libs/glfw-3.3.8/docs/news.dox876
-rw-r--r--libs/glfw-3.3.8/docs/quick.dox365
-rw-r--r--libs/glfw-3.3.8/docs/spaces.svg877
-rw-r--r--libs/glfw-3.3.8/docs/vulkan.dox242
-rw-r--r--libs/glfw-3.3.8/docs/window.dox1412
242 files changed, 40507 insertions, 0 deletions
diff --git a/libs/glfw-3.3.8/docs/CMakeLists.txt b/libs/glfw-3.3.8/docs/CMakeLists.txt
new file mode 100644
index 0000000..2347858
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/CMakeLists.txt
@@ -0,0 +1,34 @@
+
+# NOTE: The order of this list determines the order of items in the Guides
+# (i.e. Pages) list in the generated documentation
+set(GLFW_DOXYGEN_SOURCES
+ "include/GLFW/glfw3.h"
+ "include/GLFW/glfw3native.h"
+ "docs/main.dox"
+ "docs/news.dox"
+ "docs/quick.dox"
+ "docs/moving.dox"
+ "docs/compile.dox"
+ "docs/build.dox"
+ "docs/intro.dox"
+ "docs/context.dox"
+ "docs/monitor.dox"
+ "docs/window.dox"
+ "docs/input.dox"
+ "docs/vulkan.dox"
+ "docs/compat.dox"
+ "docs/internal.dox")
+
+# Format the source list into a Doxyfile INPUT value that Doxygen can parse
+foreach(path IN LISTS GLFW_DOXYGEN_SOURCES)
+ set(GLFW_DOXYGEN_INPUT "${GLFW_DOXYGEN_INPUT} \\\n\"${GLFW_SOURCE_DIR}/${path}\"")
+endforeach()
+
+configure_file(Doxyfile.in Doxyfile @ONLY)
+
+add_custom_target(docs ALL "${DOXYGEN_EXECUTABLE}"
+ WORKING_DIRECTORY "${GLFW_BINARY_DIR}/docs"
+ COMMENT "Generating HTML documentation" VERBATIM)
+
+set_target_properties(docs PROPERTIES FOLDER "GLFW3")
+
diff --git a/libs/glfw-3.3.8/docs/CONTRIBUTING.md b/libs/glfw-3.3.8/docs/CONTRIBUTING.md
new file mode 100644
index 0000000..050c1be
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/CONTRIBUTING.md
@@ -0,0 +1,391 @@
+# Contribution Guide
+
+## Contents
+
+- [Asking a question](#asking-a-question)
+- [Reporting a bug](#reporting-a-bug)
+ - [Reporting a compile or link bug](#reporting-a-compile-or-link-bug)
+ - [Reporting a segfault or other crash bug](#reporting-a-segfault-or-other-crash-bug)
+ - [Reporting a context creation bug](#reporting-a-context-creation-bug)
+ - [Reporting a monitor or video mode bug](#reporting-a-monitor-or-video-mode-bug)
+ - [Reporting a window, input or event bug](#reporting-a-window-input-or-event-bug)
+ - [Reporting some other library bug](#reporting-some-other-library-bug)
+ - [Reporting a documentation bug](#reporting-a-documentation-bug)
+ - [Reporting a website bug](#reporting-a-website-bug)
+- [Requesting a feature](#requesting-a-feature)
+- [Contributing a bug fix](#contributing-a-bug-fix)
+- [Contributing a feature](#contributing-a-feature)
+
+
+## Asking a question
+
+Questions about how to use GLFW should be asked either in the [support
+section](https://discourse.glfw.org/c/support) of the forum, under the [Stack
+Overflow tag](https://stackoverflow.com/questions/tagged/glfw) or [Game
+Development tag](https://gamedev.stackexchange.com/questions/tagged/glfw) on
+Stack Exchange or in the IRC channel `#glfw` on
+[Libera.Chat](https://libera.chat/).
+
+Questions about the design or implementation of GLFW or about future plans
+should be asked in the [dev section](https://discourse.glfw.org/c/dev) of the
+forum or in the IRC channel. Please don't open a GitHub issue to discuss design
+questions without first checking with a maintainer.
+
+
+## Reporting a bug
+
+If GLFW is behaving unexpectedly at run-time, start by setting an [error
+callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling).
+GLFW will often tell you the cause of an error via this callback. If it
+doesn't, that might be a separate bug.
+
+If GLFW is crashing or triggering asserts, make sure that all your object
+handles and other pointers are valid.
+
+For bugs where it makes sense, a short, self contained example is absolutely
+invaluable. Just put it inline in the body text. Note that if the bug is
+reproducible with one of the test programs that come with GLFW, just mention
+that instead.
+
+__Don't worry about adding too much information__. Unimportant information can
+be abbreviated or removed later, but missing information can stall bug fixing,
+especially when your schedule doesn't align with that of the maintainer.
+
+__Please provide text as text, not as images__. This includes code, error
+messages and any other text. Text in images cannot be found by other users
+searching for the same problem and may have to be re-typed by maintainers when
+debugging.
+
+You don't need to manually indent your code or other text to quote it with
+GitHub Markdown; just surround it with triple backticks:
+
+ ```
+ Some quoted text.
+ ```
+
+You can also add syntax highlighting by appending the common file extension:
+
+ ```c
+ int five(void)
+ {
+ return 5;
+ }
+ ```
+
+There are issue labels for both platforms and GPU manufacturers, so there is no
+need to mention these in the subject line. If you do, it will be removed when
+the issue is labeled.
+
+If your bug is already reported, please add any new information you have, or if
+it already has everything, give it a :+1:.
+
+
+### Reporting a compile or link bug
+
+__Note:__ GLFW needs many system APIs to do its job, which on some platforms
+means linking to many system libraries. If you are using GLFW as a static
+library, that means your application needs to link to these in addition to GLFW.
+
+__Note:__ Check the [Compiling
+GLFW](https://www.glfw.org/docs/latest/compile.html) guide and or [Building
+applications](https://www.glfw.org/docs/latest/build.html) guide for before
+opening an issue of this kind. Most issues are caused by a missing package or
+linker flag.
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`) and the __compiler name and version__ (e.g. `Visual
+C++ 2015 Update 2`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+Please also include the __complete build log__ from your compiler and linker,
+even if it's long. It can always be shortened later, if necessary.
+
+
+#### Quick template
+
+```
+OS and version:
+Compiler version:
+Release or commit:
+Build log:
+```
+
+
+### Reporting a segfault or other crash bug
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+Please also include any __error messages__ provided to your application via the
+[error
+callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and
+the __full call stack__ of the crash, or if the crash does not occur in debug
+mode, mention that instead.
+
+
+#### Quick template
+
+```
+OS and version:
+Release or commit:
+Error messages:
+Call stack:
+```
+
+
+### Reporting a context creation bug
+
+__Note:__ Windows ships with graphics drivers that do not support OpenGL. If
+GLFW says that your machine lacks support for OpenGL, it very likely does.
+Install drivers from the computer manufacturer or graphics card manufacturer
+([Nvidia](https://www.geforce.com/drivers),
+[AMD](https://www.amd.com/en/support),
+[Intel](https://www-ssl.intel.com/content/www/us/en/support/detect.html)) to
+fix this.
+
+__Note:__ AMD only supports OpenGL ES on Windows via EGL. See the
+[GLFW\_CONTEXT\_CREATION\_API](https://www.glfw.org/docs/latest/window_guide.html#window_hints_ctx)
+hint for how to select EGL.
+
+Please verify that context creation also fails with the `glfwinfo` tool before
+reporting it as a bug. This tool is included in the GLFW source tree as
+`tests/glfwinfo.c` and is built along with the library. It has switches for all
+GLFW context and framebuffer hints. Run `glfwinfo -h` for a complete list.
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+If you are running your program in a virtual machine, please mention this and
+include the __VM name and version__ (e.g. `VirtualBox 5.1`).
+
+Please also include the __GLFW version string__ (`3.2.0 X11 EGL clock_gettime
+/dev/js`), as described
+[here](https://www.glfw.org/docs/latest/intro.html#intro_version_string), the
+__GPU model and driver version__ (e.g. `GeForce GTX660 with 352.79`), and the
+__output of `glfwinfo`__ (with switches matching any hints you set in your
+code) when reporting this kind of bug. If this tool doesn't run on the machine,
+mention that instead.
+
+
+#### Quick template
+
+```
+OS and version:
+GPU and driver:
+Release or commit:
+Version string:
+glfwinfo output:
+```
+
+
+### Reporting a monitor or video mode bug
+
+__Note:__ On headless systems on some platforms, no monitors are reported. This
+causes glfwGetPrimaryMonitor to return `NULL`, which not all applications are
+prepared for.
+
+__Note:__ Some third-party tools report more video modes than are approved of
+by the OS. For safety and compatibility, GLFW only reports video modes the OS
+wants programs to use. This is not a bug.
+
+The `monitors` tool is included in the GLFW source tree as `tests/monitors.c`
+and is built along with the library. It lists all information GLFW provides
+about monitors it detects.
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+If you are running your program in a virtual machine, please mention this and
+include the __VM name and version__ (e.g. `VirtualBox 5.1`).
+
+Please also include any __error messages__ provided to your application via the
+[error
+callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and
+the __output of `monitors`__ when reporting this kind of bug. If this tool
+doesn't run on the machine, mention this instead.
+
+
+#### Quick template
+
+```
+OS and version:
+Release or commit:
+Error messages:
+monitors output:
+```
+
+
+### Reporting a window, input or event bug
+
+__Note:__ The exact ordering of related window events will sometimes differ.
+
+__Note:__ Window moving and resizing (by the user) will block the main thread on
+some platforms. This is not a bug. Set a [refresh
+callback](https://www.glfw.org/docs/latest/window.html#window_refresh) if you
+want to keep the window contents updated during a move or size operation.
+
+The `events` tool is included in the GLFW source tree as `tests/events.c` and is
+built along with the library. It prints all information provided to every
+callback supported by GLFW as events occur. Each event is listed with the time
+and a unique number to make discussions about event logs easier. The tool has
+command-line options for creating multiple windows and full screen windows.
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+If you are running your program in a virtual machine, please mention this and
+include the __VM name and version__ (e.g. `VirtualBox 5.1`).
+
+Please also include any __error messages__ provided to your application via the
+[error
+callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling) and
+if relevant, the __output of `events`__ when reporting this kind of bug. If
+this tool doesn't run on the machine, mention this instead.
+
+__X11:__ If possible, please include what desktop environment (e.g. GNOME,
+Unity, KDE) and/or window manager (e.g. Openbox, dwm, Window Maker) you are
+running. If the bug is related to keyboard input, please include any input
+method (e.g. ibus, SCIM) you are using.
+
+
+#### Quick template
+
+```
+OS and version:
+Release or commit:
+Error messages:
+events output:
+```
+
+
+### Reporting some other library bug
+
+Always include the __operating system name and version__ (e.g. `Windows
+7 64-bit` or `Ubuntu 15.10`). If you are using an official release of GLFW,
+include the __GLFW release version__ (e.g. `3.1.2`), otherwise include the
+__GLFW commit ID__ (e.g. `3795d78b14ef06008889cc422a1fb8d642597751`) from Git.
+
+Please also include any __error messages__ provided to your application via the
+[error
+callback](https://www.glfw.org/docs/latest/intro_guide.html#error_handling), if
+relevant.
+
+
+#### Quick template
+
+```
+OS and version:
+Release or commit:
+Error messages:
+```
+
+
+### Reporting a documentation bug
+
+If you found a bug in the documentation, including this file, then it's fine to
+just link to that web page or mention that source file. You don't need to match
+the source to the output or vice versa.
+
+
+### Reporting a website bug
+
+If the bug is in the documentation (anything under `/docs/`) then please see the
+section above. Bugs in the rest of the site are reported to the [website
+source repository](https://github.com/glfw/website/issues).
+
+
+## Requesting a feature
+
+Please explain why you need the feature and how you intend to use it. If you
+have a specific API design in mind, please add that as well. If you have or are
+planning to write code for the feature, see the section below.
+
+If there already is a request for the feature you need, add your specific use
+case unless it is already mentioned. If it is, give it a :+1:.
+
+
+## Contributing a bug fix
+
+__Note:__ You must have all necessary [intellectual
+property rights](https://en.wikipedia.org/wiki/Intellectual_property) to any
+code you contribute. If you did not write the code yourself, you must explain
+where it came from and under what license you received it. Even code using the
+same license as GLFW may not be copied without attribution.
+
+__There is no preferred patch size__. A one character fix is just as welcome as
+a thousand line one, if that is the appropriate size for the fix.
+
+In addition to the code, a complete bug fix includes:
+
+- Change log entry in `README.md`, describing the incorrect behavior
+- Credits entries for all authors of the bug fix
+
+Bug fixes will not be rejected because they don't include all the above parts,
+but please keep in mind that maintainer time is finite and that there are many
+other bugs and features to work on.
+
+If the patch fixes a bug introduced after the last release, it should not get
+a change log entry.
+
+If you haven't already, read the excellent article [How to Write a Git Commit
+Message](https://chris.beams.io/posts/git-commit/).
+
+
+## Contributing a feature
+
+__Note:__ You must have all necessary rights to any code you contribute. If you
+did not write the code yourself, you must explain where it came from and under
+what license. Even code using the same license as GLFW may not be copied
+without attribution.
+
+__Note:__ If you haven't already implemented the feature, check first if there
+already is an open issue for it and if it's already being developed in an
+[experimental branch](https://github.com/glfw/glfw/branches/all).
+
+__There is no preferred patch size__. A one-character change is just as welcome
+as one adding a thousand lines, if that is the appropriate size for the
+feature.
+
+In addition to the code, a complete feature includes:
+
+- Change log entry in `README.md`, listing all new symbols
+- News page entry, briefly describing the feature
+- Guide documentation, with minimal examples, in the relevant guide
+- Reference documentation, with all applicable tags
+- Cross-references and mentions in appropriate places
+- Credits entries for all authors of the feature
+
+If the feature requires platform-specific code, at minimum stubs must be added
+for the new platform function to all supported and experimental platforms.
+
+If it adds a new callback, support for it must be added to `tests/event.c`.
+
+If it adds a new monitor property, support for it must be added to
+`tests/monitor.c`.
+
+If it adds a new OpenGL, OpenGL ES or Vulkan option or extension, support
+for it must be added to `tests/glfwinfo.c` and the behavior of the library when
+the extension is missing documented in `docs/compat.dox`.
+
+If you haven't already, read the excellent article [How to Write a Git Commit
+Message](https://chris.beams.io/posts/git-commit/).
+
+Features will not be rejected because they don't include all the above parts,
+but please keep in mind that maintainer time is finite and that there are many
+other features and bugs to work on.
+
+Please also keep in mind that any part of the public API that has been included
+in a release cannot be changed until the next _major_ version. Features can be
+added and existing parts can sometimes be overloaded (in the general sense of
+doing more things, not in the C++ sense), but code written to the API of one
+minor release should both compile and run on subsequent minor releases.
+
diff --git a/libs/glfw-3.3.8/docs/Doxyfile.in b/libs/glfw-3.3.8/docs/Doxyfile.in
new file mode 100644
index 0000000..482b028
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/Doxyfile.in
@@ -0,0 +1,1828 @@
+# Doxyfile 1.8.3.1
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project.
+#
+# All text after a hash (#) is considered a comment and will be ignored.
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ").
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or sequence of words) that should
+# identify the project. Note that if you do not use Doxywizard you need
+# to put quotes around the project name if it contains spaces.
+
+PROJECT_NAME = "GLFW"
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @GLFW_VERSION@
+
+# Using the PROJECT_BRIEF tag one can provide an optional one line description
+# for a project that appears at the top of each page and should give viewer
+# a quick idea about the purpose of the project. Keep the description short.
+
+PROJECT_BRIEF = "A multi-platform library for OpenGL, window and input"
+
+# With the PROJECT_LOGO tag one can specify an logo or icon that is
+# included in the documentation. The maximum height of the logo should not
+# exceed 55 pixels and the maximum width should not exceed 200 pixels.
+# Doxygen will copy the logo to the output directory.
+
+PROJECT_LOGO =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = "@GLFW_BINARY_DIR@/docs"
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
+# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
+# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak,
+# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = NO
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = YES
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip. Note that you specify absolute paths here, but also
+# relative paths, which will be relative from the directory where doxygen is
+# started.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful if your file system
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES = "thread_safety=@par Thread safety^^" \
+ "pointer_lifetime=@par Pointer lifetime^^" \
+ "analysis=@par Analysis^^" \
+ "reentrancy=@par Reentrancy^^" \
+ "errors=@par Errors^^" \
+ "callback_signature=@par Callback signature^^" \
+ "glfw3=__GLFW 3:__" \
+ "x11=__X11:__" \
+ "wayland=__Wayland:__" \
+ "win32=__Windows:__" \
+ "macos=__macOS:__" \
+ "linux=__Linux:__"
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = YES
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it
+# parses. With this tag you can assign which parser to use for a given
+# extension. Doxygen has a built-in mapping, but you can override or extend it
+# using this tag. The format is ext=language, where ext is a file extension,
+# and language is one of the parsers supported by doxygen: IDL, Java,
+# Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C,
+# C++. For instance to make doxygen treat .inc files as Fortran files (default
+# is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note
+# that for custom extensions you also need to set FILE_PATTERNS otherwise the
+# files are not read by doxygen.
+
+EXTENSION_MAPPING =
+
+# If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all
+# comments according to the Markdown format, which allows for more readable
+# documentation. See http://daringfireball.net/projects/markdown/ for details.
+# The output of markdown processing is further processed by doxygen, so you
+# can mix doxygen, HTML, and XML commands with Markdown formatting.
+# Disable only in case of backward compatibilities issues.
+
+MARKDOWN_SUPPORT = YES
+
+# When enabled doxygen tries to link words that correspond to documented classes,
+# or namespaces to their corresponding documentation. Such a link can be
+# prevented in individual cases by putting a % sign in front of the word or
+# globally by setting AUTOLINK_SUPPORT to NO.
+
+AUTOLINK_SUPPORT = YES
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also makes the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate
+# getter and setter methods for a property. Setting this option to YES (the
+# default) will make doxygen replace the get and set methods by a property in
+# the documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = NO
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
+# unions are shown inside the group in which they are included (e.g. using
+# @ingroup) instead of on a separate page (for HTML and Man pages) or
+# section (for LaTeX and RTF).
+
+INLINE_GROUPED_CLASSES = NO
+
+# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and
+# unions with only public data fields will be shown inline in the documentation
+# of the scope in which they are defined (i.e. file, namespace, or group
+# documentation), provided this scope is documented. If set to NO (the default),
+# structs, classes, and unions are shown on a separate page (for HTML and Man
+# pages) or section (for LaTeX and RTF).
+
+INLINE_SIMPLE_STRUCTS = NO
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be
+# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given
+# their name and scope. Since this can be an expensive process and often the
+# same symbol appear multiple times in the code, doxygen keeps a cache of
+# pre-resolved symbols. If the cache is too small doxygen will become slower.
+# If the cache is too large, memory is wasted. The cache size is given by this
+# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols.
+
+LOOKUP_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_PACKAGE tag is set to YES all members with package or internal
+# scope will be included in the documentation.
+
+EXTRACT_PACKAGE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespaces are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = NO
+
+# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen
+# will list include files with double quotes in the documentation
+# rather than with sharp brackets.
+
+FORCE_LOCAL_INCLUDES = NO
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = NO
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen
+# will sort the (brief and detailed) documentation of class members so that
+# constructors and destructors are listed first. If set to NO (the default)
+# the constructors will appear in the respective orders defined by
+# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS.
+# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO
+# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
+
+SORT_MEMBERS_CTORS_1ST = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = YES
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
+# do proper type resolution of all parameters of a function it will reject a
+# match between the prototype and the implementation of a member function even
+# if there is only one candidate or it is obvious which candidate to choose
+# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
+# will still accept a match between prototype and implementation in such cases.
+
+STRICT_PROTO_MATCHING = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if section-label ... \endif
+# and \cond section-label ... \endcond blocks.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or macro consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and macros in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = NO
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
+# by doxygen. The layout file controls the global structure of the generated
+# output files in an output format independent way. To create the layout file
+# that represents doxygen's defaults, run doxygen with the -l option.
+# You can optionally specify a file name after the option, if omitted
+# DoxygenLayout.xml will be used as the name of the layout file.
+
+LAYOUT_FILE = "@GLFW_SOURCE_DIR@/docs/DoxygenLayout.xml"
+
+# The CITE_BIB_FILES tag can be used to specify one or more bib files
+# containing the references data. This must be a list of .bib files. The
+# .bib extension is automatically appended if omitted. Using this command
+# requires the bibtex tool to be installed. See also
+# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style
+# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this
+# feature you need bibtex and perl available in the search path. Do not use
+# file names with spaces, bibtex cannot handle them.
+
+CITE_BIB_FILES =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = YES
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# The WARN_NO_PARAMDOC option can be enabled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = YES
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE = "@GLFW_BINARY_DIR@/docs/warnings.txt"
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = @GLFW_DOXYGEN_INPUT@
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh
+# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py
+# *.f90 *.f *.for *.vhd *.vhdl
+
+FILE_PATTERNS = *.h *.dox
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should be
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+# Note that relative paths are relative to the directory from which doxygen is
+# run.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
+# directories that are symbolic links (a Unix file system feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS = APIENTRY GLFWAPI
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH = "@GLFW_SOURCE_DIR@/examples"
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty or if
+# non of the patterns match the file name, INPUT_FILTER is applied.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
+# pattern. A pattern will override the setting for FILTER_PATTERN (if any)
+# and it is also possible to disable source filtering for a specific pattern
+# using *.ext= (so without naming a filter). This option only has effect when
+# FILTER_SOURCE_FILES is enabled.
+
+FILTER_SOURCE_PATTERNS =
+
+# If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that
+# is part of the input, its contents will be placed on the main page (index.html).
+# This can be useful if you have a project on for instance GitHub and want reuse
+# the introduction page also for the doxygen output.
+
+USE_MDFILE_AS_MAINPAGE =
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C, C++ and Fortran comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = YES
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX = glfw GLFW_
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header. Note that when using a custom header you are responsible
+# for the proper inclusion of any scripts and style sheets that doxygen
+# needs, which is dependent on the configuration options used.
+# It is advised to generate a default header using "doxygen -w html
+# header.html footer.html stylesheet.css YourConfigFile" and then modify
+# that header. Note that the header is subject to change so you typically
+# have to redo this when upgrading to a newer version of doxygen or when
+# changing the value of configuration settings such as GENERATE_TREEVIEW!
+
+HTML_HEADER = "@GLFW_SOURCE_DIR@/docs/header.html"
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER = "@GLFW_SOURCE_DIR@/docs/footer.html"
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If left blank doxygen will
+# generate a default style sheet. Note that it is recommended to use
+# HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this
+# tag will in the future become obsolete.
+
+HTML_STYLESHEET =
+
+# The HTML_EXTRA_STYLESHEET tag can be used to specify an additional
+# user-defined cascading style sheet that is included after the standard
+# style sheets created by doxygen. Using this option one can overrule
+# certain style aspects. This is preferred over using HTML_STYLESHEET
+# since it does not replace the standard style sheet and is therefor more
+# robust against future updates. Doxygen will copy the style sheet file to
+# the output directory.
+
+HTML_EXTRA_STYLESHEET = "@GLFW_SOURCE_DIR@/docs/extra.css"
+
+# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
+# other source files which should be copied to the HTML output directory. Note
+# that these files will be copied to the base HTML output directory. Use the
+# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
+# files. In the HTML_STYLESHEET file, use the file name only. Also note that
+# the files will be copied as-is; there are no commands or markers available.
+
+HTML_EXTRA_FILES = "@GLFW_SOURCE_DIR@/docs/spaces.svg"
+
+# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
+# Doxygen will adjust the colors in the style sheet and background images
+# according to this color. Hue is specified as an angle on a colorwheel,
+# see http://en.wikipedia.org/wiki/Hue for more information.
+# For instance the value 0 represents red, 60 is yellow, 120 is green,
+# 180 is cyan, 240 is blue, 300 purple, and 360 is red again.
+# The allowed range is 0 to 359.
+
+HTML_COLORSTYLE_HUE = 220
+
+# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of
+# the colors in the HTML output. For a value of 0 the output will use
+# grayscales only. A value of 255 will produce the most vivid colors.
+
+HTML_COLORSTYLE_SAT = 100
+
+# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to
+# the luminance component of the colors in the HTML output. Values below
+# 100 gradually make the output lighter, whereas values above 100 make
+# the output darker. The value divided by 100 is the actual gamma applied,
+# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2,
+# and 100 does not change the gamma.
+
+HTML_COLORSTYLE_GAMMA = 80
+
+# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
+# page will contain the date and time when the page was generated. Setting
+# this to NO can help when comparing the output of multiple runs.
+
+HTML_TIMESTAMP = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded.
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of
+# entries shown in the various tree structured indices initially; the user
+# can expand and collapse entries dynamically later on. Doxygen will expand
+# the tree to such a level that at most the specified number of entries are
+# visible (unless a fully collapsed tree already exceeds this amount).
+# So setting the number of entries 1 will produce a full collapsed tree by
+# default. 0 is a special value representing an infinite number of entries
+# and will result in a full expanded tree by default.
+
+HTML_INDEX_NUM_ENTRIES = 100
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
+# for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.doxygen.Project
+
+# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely
+# identify the documentation publisher. This should be a reverse domain-name
+# style string, e.g. com.mycompany.MyDocSet.documentation.
+
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+
+# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
+
+DOCSET_PUBLISHER_NAME = Publisher
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
+# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated
+# that can be used as input for Qt's qhelpgenerator to generate a
+# Qt Compressed Help (.qch) of the generated HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE = org.doxygen.Project
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to
+# add. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the
+# custom filter to add. For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">
+# Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
+# project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">
+# Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files
+# will be generated, which together with the HTML files, form an Eclipse help
+# plugin. To install this plugin and make it available under the help contents
+# menu in Eclipse, the contents of the directory containing the HTML and XML
+# files needs to be copied into the plugins directory of eclipse. The name of
+# the directory within the plugins directory should be the same as
+# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before
+# the help appears.
+
+GENERATE_ECLIPSEHELP = NO
+
+# A unique identifier for the eclipse help plugin. When installing the plugin
+# the directory name containing the HTML and XML files should also have
+# this name.
+
+ECLIPSE_DOC_ID = org.doxygen.Project
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs)
+# at top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it. Since the tabs have the same information as the
+# navigation tree you can set this option to NO if you already set
+# GENERATE_TREEVIEW to YES.
+
+DISABLE_INDEX = NO
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to YES, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
+# Windows users are probably better off using the HTML help feature.
+# Since the tree basically has the same information as the tab index you
+# could consider to set DISABLE_INDEX to NO when enabling this option.
+
+GENERATE_TREEVIEW = NO
+
+# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
+# (range [0,1..20]) that doxygen will group on one line in the generated HTML
+# documentation. Note that a value of 0 will completely suppress the enum
+# values from appearing in the overview section.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 300
+
+# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open
+# links to external symbols imported via tag files in a separate window.
+
+EXT_LINKS_IN_WINDOW = NO
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+# Use the FORMULA_TRANPARENT tag to determine whether or not the images
+# generated for formulas are transparent PNGs. Transparent PNGs are
+# not supported properly for IE 6.0, but are supported on all modern browsers.
+# Note that when changing this option you need to delete any form_*.png files
+# in the HTML output before the changes have effect.
+
+FORMULA_TRANSPARENT = YES
+
+# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax
+# (see http://www.mathjax.org) which uses client side Javascript for the
+# rendering instead of using prerendered bitmaps. Use this if you do not
+# have LaTeX installed or if you want to formulas look prettier in the HTML
+# output. When enabled you may also need to install MathJax separately and
+# configure the path to it using the MATHJAX_RELPATH option.
+
+USE_MATHJAX = NO
+
+# When MathJax is enabled you can set the default output format to be used for
+# thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and
+# SVG. The default value is HTML-CSS, which is slower, but has the best
+# compatibility.
+
+MATHJAX_FORMAT = HTML-CSS
+
+# When MathJax is enabled you need to specify the location relative to the
+# HTML output directory using the MATHJAX_RELPATH option. The destination
+# directory should contain the MathJax.js script. For instance, if the mathjax
+# directory is located at the same level as the HTML output directory, then
+# MATHJAX_RELPATH should be ../mathjax. The default value points to
+# the MathJax Content Delivery Network so you can quickly see the result without
+# installing MathJax.
+# However, it is strongly recommended to install a local
+# copy of MathJax from http://www.mathjax.org before deployment.
+
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+
+# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension
+# names that should be enabled during MathJax rendering.
+
+MATHJAX_EXTENSIONS =
+
+# When the SEARCHENGINE tag is enabled doxygen will generate a search box
+# for the HTML output. The underlying search engine uses javascript
+# and DHTML and should work on any modern browser. Note that when using
+# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
+# (GENERATE_DOCSET) there is already a search function so this one should
+# typically be disabled. For large projects the javascript based search engine
+# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
+
+SEARCHENGINE = YES
+
+# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
+# implemented using a web server instead of a web client using Javascript.
+# There are two flavours of web server based search depending on the
+# EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for
+# searching and an index file used by the script. When EXTERNAL_SEARCH is
+# enabled the indexing and searching needs to be provided by external tools.
+# See the manual for details.
+
+SERVER_BASED_SEARCH = NO
+
+# When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP
+# script for searching. Instead the search results are written to an XML file
+# which needs to be processed by an external indexer. Doxygen will invoke an
+# external search engine pointed to by the SEARCHENGINE_URL option to obtain
+# the search results. Doxygen ships with an example indexer (doxyindexer) and
+# search engine (doxysearch.cgi) which are based on the open source search engine
+# library Xapian. See the manual for configuration details.
+
+EXTERNAL_SEARCH = NO
+
+# The SEARCHENGINE_URL should point to a search engine hosted by a web server
+# which will returned the search results when EXTERNAL_SEARCH is enabled.
+# Doxygen ships with an example search engine (doxysearch) which is based on
+# the open source search engine library Xapian. See the manual for configuration
+# details.
+
+SEARCHENGINE_URL =
+
+# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
+# search data is written to a file for indexing by an external tool. With the
+# SEARCHDATA_FILE tag the name of this file can be specified.
+
+SEARCHDATA_FILE = searchdata.xml
+
+# When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the
+# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
+# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
+# projects and redirect the results back to the right project.
+
+EXTERNAL_SEARCH_ID =
+
+# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
+# projects other than the one defined by this configuration file, but that are
+# all added to the same external search index. Each project needs to have a
+# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id
+# of to a relative location where the documentation can be found.
+# The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ...
+
+EXTRA_SEARCH_MAPPINGS =
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+# Note that when enabling USE_PDFLATEX this option is only used for
+# generating bitmaps for formulas in the HTML output, but not in the
+# Makefile that is written to the output directory.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
+# the generated latex document. The footer should contain everything after
+# the last chapter. If it is left blank doxygen will generate a
+# standard footer. Notice: only use this tag if you know what you are doing!
+
+LATEX_FOOTER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
+# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See
+# http://en.wikipedia.org/wiki/BibTeX for more info.
+
+LATEX_BIB_STYLE = plain
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load style sheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = YES
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = YES
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# pointed to by INCLUDE_PATH will be searched when a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED = GLFWAPI= \
+ GLFW_EXPOSE_NATIVE_WIN32 \
+ GLFW_EXPOSE_NATIVE_WGL \
+ GLFW_EXPOSE_NATIVE_X11 \
+ GLFW_EXPOSE_NATIVE_WAYLAND \
+ GLFW_EXPOSE_NATIVE_GLX \
+ GLFW_EXPOSE_NATIVE_COCOA \
+ GLFW_EXPOSE_NATIVE_NSGL \
+ GLFW_EXPOSE_NATIVE_EGL \
+ GLFW_EXPOSE_NATIVE_OSMESA \
+ VK_VERSION_1_0
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition that
+# overrules the definition found in the source code.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all references to function-like macros
+# that are alone on a line, have an all uppercase name, and do not end with a
+# semicolon, because these will confuse the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles. For each
+# tag file the location of the external documentation should be added. The
+# format of a tag file without this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths
+# or URLs. Note that each tag file must have a unique name (where the name does
+# NOT include the path). If a tag file is not located in the directory in which
+# doxygen is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option also works with HAVE_DOT disabled, but it is recommended to
+# install and use dot, since it yields more powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is
+# allowed to run in parallel. When set to 0 (the default) doxygen will
+# base this on the number of processors available in the system. You can set it
+# explicitly to a value larger than 0 to get control over the balance
+# between CPU load and processing speed.
+
+DOT_NUM_THREADS = 0
+
+# By default doxygen will use the Helvetica font for all dot files that
+# doxygen generates. When you want a differently looking font you can specify
+# the font name using DOT_FONTNAME. You need to make sure dot is able to find
+# the font, which can be done by putting it in a standard location or by setting
+# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the
+# directory containing the font.
+
+DOT_FONTNAME = Helvetica
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the Helvetica font.
+# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to
+# set the path where dot can find it.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If the UML_LOOK tag is enabled, the fields and methods are shown inside
+# the class node. If there are many fields or methods and many nodes the
+# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
+# threshold limits the number of items for each type to make the size more
+# manageable. Set this to 0 for no limit. Note that the threshold may be
+# exceeded by 50% before the limit is enforced.
+
+UML_LIMIT_NUM_FIELDS = 10
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will generate a graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are svg, png, jpg, or gif.
+# If left blank png will be used. If you choose svg you need to set
+# HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible in IE 9+ (other browsers do not have this requirement).
+
+DOT_IMAGE_FORMAT = png
+
+# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
+# enable generation of interactive SVG images that allow zooming and panning.
+# Note that this requires a modern browser other than Internet Explorer.
+# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you
+# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files
+# visible. Older versions of IE do not have SVG support.
+
+INTERACTIVE_SVG = NO
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MSCFILE_DIRS tag can be used to specify one or more directories that
+# contain msc files that are included in the documentation (see the
+# \mscfile command).
+
+MSCFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
diff --git a/libs/glfw-3.3.8/docs/DoxygenLayout.xml b/libs/glfw-3.3.8/docs/DoxygenLayout.xml
new file mode 100644
index 0000000..ab97172
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/DoxygenLayout.xml
@@ -0,0 +1,71 @@
+<doxygenlayout version="1.0">
+ <!-- Generated by doxygen 1.8.14 -->
+ <!-- Navigation index tabs for HTML output -->
+ <navindex>
+ <tab type="mainpage" visible="yes" title="Introduction"/>
+ <tab type="user" url="quick_guide.html" title="Tutorial"/>
+ <tab type="pages" visible="yes" title="Guides" intro=""/>
+ <tab type="modules" visible="yes" title="Reference" intro=""/>
+ <tab type="filelist" visible="yes" title="Files"/>
+ </navindex>
+
+ <!-- Layout definition for a file page -->
+ <file>
+ <detaileddescription title="Description"/>
+ <includes visible="$SHOW_INCLUDE_FILES"/>
+ <sourcelink visible="yes"/>
+ <memberdecl>
+ <constantgroups visible="yes" title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ <membergroups visible="yes"/>
+ </memberdecl>
+ <memberdef>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ </memberdef>
+ <authorsection/>
+ </file>
+
+ <!-- Layout definition for a group page -->
+ <group>
+ <detaileddescription title="Description"/>
+ <memberdecl>
+ <nestedgroups visible="yes" title=""/>
+ <dirs visible="yes" title=""/>
+ <files visible="yes" title=""/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <enumvalues title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ </memberdecl>
+ <memberdef>
+ <pagedocs/>
+ <defines title=""/>
+ <typedefs title=""/>
+ <enums title=""/>
+ <enumvalues title=""/>
+ <functions title=""/>
+ <variables title=""/>
+ </memberdef>
+ <authorsection visible="yes"/>
+ </group>
+
+ <!-- Layout definition for a directory page -->
+ <directory>
+ <briefdescription visible="yes"/>
+ <memberdecl>
+ <dirs visible="yes"/>
+ <files visible="yes"/>
+ </memberdecl>
+ <detaileddescription title=""/>
+ </directory>
+</doxygenlayout>
diff --git a/libs/glfw-3.3.8/docs/SUPPORT.md b/libs/glfw-3.3.8/docs/SUPPORT.md
new file mode 100644
index 0000000..79a45a8
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/SUPPORT.md
@@ -0,0 +1,14 @@
+# Support resources
+
+See the [latest documentation](https://www.glfw.org/docs/latest/) for tutorials,
+guides and the API reference.
+
+If you have questions about using GLFW, we have a
+[forum](https://discourse.glfw.org/), and the `#glfw` IRC channel on
+[Libera.Chat](https://libera.chat/).
+
+Bugs are reported to our [issue tracker](https://github.com/glfw/glfw/issues).
+Please check the [contribution
+guide](https://github.com/glfw/glfw/blob/master/docs/CONTRIBUTING.md) for
+information on what to include when reporting a bug.
+
diff --git a/libs/glfw-3.3.8/docs/build.dox b/libs/glfw-3.3.8/docs/build.dox
new file mode 100644
index 0000000..adbbb85
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/build.dox
@@ -0,0 +1,348 @@
+/*!
+
+@page build_guide Building applications
+
+@tableofcontents
+
+This is about compiling and linking applications that use GLFW. For information on
+how to write such applications, start with the
+[introductory tutorial](@ref quick_guide). For information on how to compile
+the GLFW library itself, see @ref compile_guide.
+
+This is not a tutorial on compilation or linking. It assumes basic
+understanding of how to compile and link a C program as well as how to use the
+specific compiler of your chosen development environment. The compilation
+and linking process should be explained in your C programming material and in
+the documentation for your development environment.
+
+
+@section build_include Including the GLFW header file
+
+You should include the GLFW header in the source files where you use OpenGL or
+GLFW.
+
+@code
+#include <GLFW/glfw3.h>
+@endcode
+
+This header defines all the constants and declares all the types and function
+prototypes of the GLFW API. By default it also includes the OpenGL header from
+your development environment. See [option macros](@ref build_macros) below for
+how to select OpenGL ES headers and more.
+
+The GLFW header also defines any platform-specific macros needed by your OpenGL
+header, so that it can be included without needing any window system headers.
+
+It does this only when needed, so if window system headers are included, the
+GLFW header does not try to redefine those symbols. The reverse is not true,
+i.e. `windows.h` cannot cope if any Win32 symbols have already been defined.
+
+In other words:
+
+ - Use the GLFW header to include OpenGL or OpenGL ES headers portably
+ - Do not include window system headers unless you will use those APIs directly
+ - If you do need such headers, include them before the GLFW header
+
+If you are using an OpenGL extension loading library such as
+[glad](https://github.com/Dav1dde/glad), the extension loader header should
+be included before the GLFW one. GLFW attempts to detect any OpenGL or OpenGL
+ES header or extension loader header included before it and will then disable
+the inclusion of the default OpenGL header. Most extension loaders also define
+macros that disable similar headers below it.
+
+@code
+#include <glad/gl.h>
+#include <GLFW/glfw3.h>
+@endcode
+
+Both of these mechanisms depend on the extension loader header defining a known
+macro. If yours doesn't or you don't know which one your users will pick, the
+@ref GLFW_INCLUDE_NONE macro will explicitly prevent the GLFW header from
+including the OpenGL header. This will also allow you to include the two
+headers in any order.
+
+@code
+#define GLFW_INCLUDE_NONE
+#include <GLFW/glfw3.h>
+#include <glad/gl.h>
+@endcode
+
+
+@subsection build_macros GLFW header option macros
+
+These macros may be defined before the inclusion of the GLFW header and affect
+its behavior.
+
+@anchor GLFW_DLL
+__GLFW_DLL__ is required on Windows when using the GLFW DLL, to tell the
+compiler that the GLFW functions are defined in a DLL.
+
+The following macros control which OpenGL or OpenGL ES API header is included.
+Only one of these may be defined at a time.
+
+@note GLFW does not provide any of the API headers mentioned below. They are
+provided by your development environment or your OpenGL, OpenGL ES or Vulkan
+SDK, and most of them can be downloaded from the
+[Khronos Registry](https://www.khronos.org/registry/).
+
+@anchor GLFW_INCLUDE_GLCOREARB
+__GLFW_INCLUDE_GLCOREARB__ makes the GLFW header include the modern
+`GL/glcorearb.h` header (`OpenGL/gl3.h` on macOS) instead of the regular OpenGL
+header.
+
+@anchor GLFW_INCLUDE_ES1
+__GLFW_INCLUDE_ES1__ makes the GLFW header include the OpenGL ES 1.x `GLES/gl.h`
+header instead of the regular OpenGL header.
+
+@anchor GLFW_INCLUDE_ES2
+__GLFW_INCLUDE_ES2__ makes the GLFW header include the OpenGL ES 2.0
+`GLES2/gl2.h` header instead of the regular OpenGL header.
+
+@anchor GLFW_INCLUDE_ES3
+__GLFW_INCLUDE_ES3__ makes the GLFW header include the OpenGL ES 3.0
+`GLES3/gl3.h` header instead of the regular OpenGL header.
+
+@anchor GLFW_INCLUDE_ES31
+__GLFW_INCLUDE_ES31__ makes the GLFW header include the OpenGL ES 3.1
+`GLES3/gl31.h` header instead of the regular OpenGL header.
+
+@anchor GLFW_INCLUDE_ES32
+__GLFW_INCLUDE_ES32__ makes the GLFW header include the OpenGL ES 3.2
+`GLES3/gl32.h` header instead of the regular OpenGL header.
+
+@anchor GLFW_INCLUDE_NONE
+__GLFW_INCLUDE_NONE__ makes the GLFW header not include any OpenGL or OpenGL ES
+API header. This is useful in combination with an extension loading library.
+
+If none of the above inclusion macros are defined, the standard OpenGL `GL/gl.h`
+header (`OpenGL/gl.h` on macOS) is included, unless GLFW detects the inclusion
+guards of any OpenGL, OpenGL ES or extension loader header it knows about.
+
+The following macros control the inclusion of additional API headers. Any
+number of these may be defined simultaneously, and/or together with one of the
+above macros.
+
+@anchor GLFW_INCLUDE_VULKAN
+__GLFW_INCLUDE_VULKAN__ makes the GLFW header include the Vulkan
+`vulkan/vulkan.h` header in addition to any selected OpenGL or OpenGL ES header.
+
+@anchor GLFW_INCLUDE_GLEXT
+__GLFW_INCLUDE_GLEXT__ makes the GLFW header include the appropriate extension
+header for the OpenGL or OpenGL ES header selected above after and in addition
+to that header.
+
+@anchor GLFW_INCLUDE_GLU
+__GLFW_INCLUDE_GLU__ makes the header include the GLU header in addition to the
+header selected above. This should only be used with the standard OpenGL header
+and only for compatibility with legacy code. GLU has been deprecated and should
+not be used in new code.
+
+@note None of these macros may be defined during the compilation of GLFW itself.
+If your build includes GLFW and you define any these in your build files, make
+sure they are not applied to the GLFW sources.
+
+
+@section build_link Link with the right libraries
+
+GLFW is essentially a wrapper of various platform-specific APIs and therefore
+needs to link against many different system libraries. If you are using GLFW as
+a shared library / dynamic library / DLL then it takes care of these links.
+However, if you are using GLFW as a static library then your executable will
+need to link against these libraries.
+
+On Windows and macOS, the list of system libraries is static and can be
+hard-coded into your build environment. See the section for your development
+environment below. On Linux and other Unix-like operating systems, the list
+varies but can be retrieved in various ways as described below.
+
+A good general introduction to linking is
+[Beginner's Guide to Linkers](https://www.lurklurk.org/linkers/linkers.html) by
+David Drysdale.
+
+
+@subsection build_link_win32 With MinGW or Visual C++ on Windows
+
+The static version of the GLFW library is named `glfw3`. When using this
+version, it is also necessary to link with some libraries that GLFW uses.
+
+When using MinGW to link an application with the static version of GLFW, you
+must also explicitly link with `gdi32`. Other toolchains including MinGW-w64
+include it in the set of default libraries along with other dependencies like
+`user32` and `kernel32`.
+
+The link library for the GLFW DLL is named `glfw3dll`. When compiling an
+application that uses the DLL version of GLFW, you need to define the @ref
+GLFW_DLL macro _before_ any inclusion of the GLFW header. This can be done
+either with a compiler switch or by defining it in your source code.
+
+
+@subsection build_link_cmake_source With CMake and GLFW source
+
+This section is about using CMake to compile and link GLFW along with your
+application. If you want to use an installed binary instead, see @ref
+build_link_cmake_package.
+
+With a few changes to your `CMakeLists.txt` you can have the GLFW source tree
+built along with your application.
+
+When including GLFW as part of your build, you probably don't want to build the
+GLFW tests, examples and documentation. To disable these, set the corresponding
+cache variables before adding the GLFW source tree.
+
+@code
+set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
+set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
+set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
+@endcode
+
+Add the root directory of the GLFW source tree to your project. This will add
+the `glfw` target to your project.
+
+@code{.cmake}
+add_subdirectory(path/to/glfw)
+@endcode
+
+Once GLFW has been added, link your application against the `glfw` target.
+This adds the GLFW library and its link-time dependencies as it is currently
+configured, the include directory for the GLFW header and, when applicable, the
+@ref GLFW_DLL macro.
+
+@code{.cmake}
+target_link_libraries(myapp glfw)
+@endcode
+
+Note that the `glfw` target does not depend on OpenGL, as GLFW loads any OpenGL,
+OpenGL ES or Vulkan libraries it needs at runtime. If your application calls
+OpenGL directly, instead of using a modern
+[extension loader library](@ref context_glext_auto), use the OpenGL CMake
+package.
+
+@code{.cmake}
+find_package(OpenGL REQUIRED)
+@endcode
+
+If OpenGL is found, the `OpenGL::GL` target is added to your project, containing
+library and include directory paths. Link against this like any other library.
+
+@code{.cmake}
+target_link_libraries(myapp OpenGL::GL)
+@endcode
+
+For a minimal example of a program and GLFW sources built with CMake, see the
+[GLFW CMake Starter](https://github.com/juliettef/GLFW-CMake-starter) on GitHub.
+
+
+@subsection build_link_cmake_package With CMake and installed GLFW binaries
+
+This section is about using CMake to link GLFW after it has been built and
+installed. If you want to build it along with your application instead, see
+@ref build_link_cmake_source.
+
+With a few changes to your `CMakeLists.txt` you can locate the package and
+target files generated when GLFW is installed.
+
+@code{.cmake}
+find_package(glfw3 3.3 REQUIRED)
+@endcode
+
+Once GLFW has been added to the project, link against it with the `glfw` target.
+This adds the GLFW library and its link-time dependencies, the include directory
+for the GLFW header and, when applicable, the @ref GLFW_DLL macro.
+
+@code{.cmake}
+target_link_libraries(myapp glfw)
+@endcode
+
+Note that the `glfw` target does not depend on OpenGL, as GLFW loads any OpenGL,
+OpenGL ES or Vulkan libraries it needs at runtime. If your application calls
+OpenGL directly, instead of using a modern
+[extension loader library](@ref context_glext_auto), use the OpenGL CMake
+package.
+
+@code{.cmake}
+find_package(OpenGL REQUIRED)
+@endcode
+
+If OpenGL is found, the `OpenGL::GL` target is added to your project, containing
+library and include directory paths. Link against this like any other library.
+
+@code{.cmake}
+target_link_libraries(myapp OpenGL::GL)
+@endcode
+
+
+@subsection build_link_pkgconfig With makefiles and pkg-config on Unix
+
+GLFW supports [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/),
+and the `glfw3.pc` pkg-config file is generated when the GLFW library is built
+and is installed along with it. A pkg-config file describes all necessary
+compile-time and link-time flags and dependencies needed to use a library. When
+they are updated or if they differ between systems, you will get the correct
+ones automatically.
+
+A typical compile and link command-line when using the static version of the
+GLFW library may look like this:
+
+@code{.sh}
+cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --static --libs glfw3)
+@endcode
+
+If you are using the shared version of the GLFW library, omit the `--static`
+flag.
+
+@code{.sh}
+cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)
+@endcode
+
+You can also use the `glfw3.pc` file without installing it first, by using the
+`PKG_CONFIG_PATH` environment variable.
+
+@code{.sh}
+env PKG_CONFIG_PATH=path/to/glfw/src cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)
+@endcode
+
+The dependencies do not include OpenGL, as GLFW loads any OpenGL, OpenGL ES or
+Vulkan libraries it needs at runtime. If your application calls OpenGL
+directly, instead of using a modern
+[extension loader library](@ref context_glext_auto), you should add the `gl`
+pkg-config package.
+
+@code{.sh}
+cc $(pkg-config --cflags glfw3 gl) -o myprog myprog.c $(pkg-config --libs glfw3 gl)
+@endcode
+
+
+@subsection build_link_xcode With Xcode on macOS
+
+If you are using the dynamic library version of GLFW, add it to the project
+dependencies.
+
+If you are using the static library version of GLFW, add it and the Cocoa,
+OpenGL and IOKit frameworks to the project as dependencies. They can all be
+found in `/System/Library/Frameworks`.
+
+
+@subsection build_link_osx With command-line on macOS
+
+It is recommended that you use [pkg-config](@ref build_link_pkgconfig) when
+building from the command line on macOS. That way you will get any new
+dependencies added automatically. If you still wish to build manually, you need
+to add the required frameworks and libraries to your command-line yourself using
+the `-l` and `-framework` switches.
+
+If you are using the dynamic GLFW library, which is named `libglfw.3.dylib`, do:
+
+@code{.sh}
+cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit
+@endcode
+
+If you are using the static library, named `libglfw3.a`, substitute `-lglfw3`
+for `-lglfw`.
+
+Note that you do not add the `.framework` extension to a framework when linking
+against it from the command-line.
+
+@note Your machine may have `libGL.*.dylib` style OpenGL library, but that is
+for the X Window System and will not work with the macOS native version of GLFW.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/compat.dox b/libs/glfw-3.3.8/docs/compat.dox
new file mode 100644
index 0000000..0b7c4b0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/compat.dox
@@ -0,0 +1,281 @@
+/*!
+
+@page compat_guide Standards conformance
+
+@tableofcontents
+
+This guide describes the various API extensions used by this version of GLFW.
+It lists what are essentially implementation details, but which are nonetheless
+vital knowledge for developers intending to deploy their applications on a wide
+range of machines.
+
+The information in this guide is not a part of GLFW API, but merely
+preconditions for some parts of the library to function on a given machine. Any
+part of this information may change in future versions of GLFW and that will not
+be considered a breaking API change.
+
+
+@section compat_x11 X11 extensions, protocols and IPC standards
+
+As GLFW uses Xlib directly, without any intervening toolkit
+library, it has sole responsibility for interacting well with the many and
+varied window managers in use on Unix-like systems. In order for applications
+and window managers to work well together, a number of standards and
+conventions have been developed that regulate behavior outside the scope of the
+X11 API; most importantly the
+[Inter-Client Communication Conventions Manual](https://www.tronche.com/gui/x/icccm/)
+(ICCCM) and
+[Extended Window Manager Hints](https://standards.freedesktop.org/wm-spec/wm-spec-latest.html)
+(EWMH) standards.
+
+GLFW uses the `_MOTIF_WM_HINTS` window property to support borderless windows.
+If the running window manager does not support this property, the
+`GLFW_DECORATED` hint will have no effect.
+
+GLFW uses the ICCCM `WM_DELETE_WINDOW` protocol to intercept the user
+attempting to close the GLFW window. If the running window manager does not
+support this protocol, the close callback will never be called.
+
+GLFW uses the EWMH `_NET_WM_PING` protocol, allowing the window manager notify
+the user when the application has stopped responding, i.e. when it has ceased to
+process events. If the running window manager does not support this protocol,
+the user will not be notified if the application locks up.
+
+GLFW uses the EWMH `_NET_WM_STATE_FULLSCREEN` window state to tell the window
+manager to make the GLFW window full screen. If the running window manager does
+not support this state, full screen windows may not work properly. GLFW has
+a fallback code path in case this state is unavailable, but every window manager
+behaves slightly differently in this regard.
+
+GLFW uses the EWMH `_NET_WM_BYPASS_COMPOSITOR` window property to tell a
+compositing window manager to un-redirect full screen GLFW windows. If the
+running window manager uses compositing but does not support this property then
+additional copying may be performed for each buffer swap of full screen windows.
+
+GLFW uses the
+[clipboard manager protocol](https://www.freedesktop.org/wiki/ClipboardManager/)
+to push a clipboard string (i.e. selection) owned by a GLFW window about to be
+destroyed to the clipboard manager. If there is no running clipboard manager,
+the clipboard string will be unavailable once the window has been destroyed.
+
+GLFW uses the
+[X drag-and-drop protocol](https://www.freedesktop.org/wiki/Specifications/XDND/)
+to provide file drop events. If the application originating the drag does not
+support this protocol, drag and drop will not work.
+
+GLFW uses the XRandR 1.3 extension to provide multi-monitor support. If the
+running X server does not support this version of this extension, multi-monitor
+support will not function and only a single, desktop-spanning monitor will be
+reported.
+
+GLFW uses the XRandR 1.3 and Xf86vidmode extensions to provide gamma ramp
+support. If the running X server does not support either or both of these
+extensions, gamma ramp support will not function.
+
+GLFW uses the Xkb extension and detectable auto-repeat to provide keyboard
+input. If the running X server does not support this extension, a non-Xkb
+fallback path is used.
+
+GLFW uses the XInput2 extension to provide raw, non-accelerated mouse motion
+when the cursor is disabled. If the running X server does not support this
+extension, regular accelerated mouse motion will be used.
+
+GLFW uses both the XRender extension and the compositing manager to support
+transparent window framebuffers. If the running X server does not support this
+extension or there is no running compositing manager, the
+`GLFW_TRANSPARENT_FRAMEBUFFER` framebuffer hint will have no effect.
+
+
+@section compat_wayland Wayland protocols and IPC standards
+
+As GLFW uses libwayland directly, without any intervening toolkit library, it
+has sole responsibility for interacting well with every compositor in use on
+Unix-like systems. Most of the features are provided by the core protocol,
+while cursor support is provided by the libwayland-cursor helper library, EGL
+integration by libwayland-egl, and keyboard handling by
+[libxkbcommon](https://xkbcommon.org/). In addition, GLFW uses some protocols
+from wayland-protocols to provide additional features if the compositor
+supports them.
+
+GLFW uses xkbcommon 0.5.0 to provide compose key support. When it has been
+built against an older xkbcommon, the compose key will be disabled even if it
+has been configured in the compositor.
+
+GLFW uses the [xdg-shell
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/xdg-shell/xdg-shell.xml)
+to provide better window management. This protocol is part of
+wayland-protocols 1.12, and mandatory at build time.
+
+GLFW uses the [relative pointer
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml)
+alongside the [pointer constraints
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml)
+to implement disabled cursor. These two protocols are part of
+wayland-protocols 1.1, and mandatory at build time. If the running compositor
+does not support both of these protocols, disabling the cursor will have no
+effect.
+
+GLFW uses the [idle inhibit
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml)
+to prohibit the screensaver from starting. This protocol is part of
+wayland-protocols 1.6, and mandatory at build time. If the running compositor
+does not support this protocol, the screensaver may start even for full screen
+windows.
+
+GLFW uses the [xdg-decoration
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml)
+to request decorations to be drawn around its windows. This protocol is part
+of wayland-protocols 1.15, and mandatory at build time. If the running
+compositor does not support this protocol, a very simple frame will be drawn by
+GLFW itself, using the [viewporter
+protocol](https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/viewporter/viewporter.xml)
+alongside
+[subsurfaces](https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n2598).
+This protocol is part of wayland-protocols 1.4, and mandatory at build time.
+If the running compositor does not support this protocol either, no decorations
+will be drawn around windows.
+
+
+@section compat_glx GLX extensions
+
+The GLX API is the default API used to create OpenGL contexts on Unix-like
+systems using the X Window System.
+
+GLFW uses the GLX 1.3 `GLXFBConfig` functions to enumerate and select framebuffer pixel
+formats. If GLX 1.3 is not supported, @ref glfwInit will fail.
+
+GLFW uses the `GLX_MESA_swap_control,` `GLX_EXT_swap_control` and
+`GLX_SGI_swap_control` extensions to provide vertical retrace synchronization
+(or _vsync_), in that order of preference. Where none of these extension are
+available, calling @ref glfwSwapInterval will have no effect.
+
+GLFW uses the `GLX_ARB_multisample` extension to create contexts with
+multisampling anti-aliasing. Where this extension is unavailable, the
+`GLFW_SAMPLES` hint will have no effect.
+
+GLFW uses the `GLX_ARB_create_context` extension when available, even when
+creating OpenGL contexts of version 2.1 and below. Where this extension is
+unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR`
+hints will only be partially supported, the `GLFW_OPENGL_DEBUG_CONTEXT` hint
+will have no effect, and setting the `GLFW_OPENGL_PROFILE` or
+`GLFW_OPENGL_FORWARD_COMPAT` hints to `GLFW_TRUE` will cause @ref
+glfwCreateWindow to fail.
+
+GLFW uses the `GLX_ARB_create_context_profile` extension to provide support for
+context profiles. Where this extension is unavailable, setting the
+`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE`, or setting
+`GLFW_CLIENT_API` to anything but `GLFW_OPENGL_API` or `GLFW_NO_API` will cause
+@ref glfwCreateWindow to fail.
+
+GLFW uses the `GLX_ARB_context_flush_control` extension to provide control over
+whether a context is flushed when it is released (made non-current). Where this
+extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
+effect and the context will always be flushed when released.
+
+GLFW uses the `GLX_ARB_framebuffer_sRGB` and `GLX_EXT_framebuffer_sRGB`
+extensions to provide support for sRGB framebuffers. Where both of these
+extensions are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect.
+
+
+@section compat_wgl WGL extensions
+
+The WGL API is used to create OpenGL contexts on Microsoft Windows and other
+implementations of the Win32 API, such as Wine.
+
+GLFW uses either the `WGL_EXT_extension_string` or the
+`WGL_ARB_extension_string` extension to check for the presence of all other WGL
+extensions listed below. If both are available, the EXT one is preferred. If
+neither is available, no other extensions are used and many GLFW features
+related to context creation will have no effect or cause errors when used.
+
+GLFW uses the `WGL_EXT_swap_control` extension to provide vertical retrace
+synchronization (or _vsync_). Where this extension is unavailable, calling @ref
+glfwSwapInterval will have no effect.
+
+GLFW uses the `WGL_ARB_pixel_format` and `WGL_ARB_multisample` extensions to
+create contexts with multisampling anti-aliasing. Where these extensions are
+unavailable, the `GLFW_SAMPLES` hint will have no effect.
+
+GLFW uses the `WGL_ARB_create_context` extension when available, even when
+creating OpenGL contexts of version 2.1 and below. Where this extension is
+unavailable, the `GLFW_CONTEXT_VERSION_MAJOR` and `GLFW_CONTEXT_VERSION_MINOR`
+hints will only be partially supported, the `GLFW_OPENGL_DEBUG_CONTEXT` hint
+will have no effect, and setting the `GLFW_OPENGL_PROFILE` or
+`GLFW_OPENGL_FORWARD_COMPAT` hints to `GLFW_TRUE` will cause @ref
+glfwCreateWindow to fail.
+
+GLFW uses the `WGL_ARB_create_context_profile` extension to provide support for
+context profiles. Where this extension is unavailable, setting the
+`GLFW_OPENGL_PROFILE` hint to anything but `GLFW_OPENGL_ANY_PROFILE` will cause
+@ref glfwCreateWindow to fail.
+
+GLFW uses the `WGL_ARB_context_flush_control` extension to provide control over
+whether a context is flushed when it is released (made non-current). Where this
+extension is unavailable, the `GLFW_CONTEXT_RELEASE_BEHAVIOR` hint will have no
+effect and the context will always be flushed when released.
+
+GLFW uses the `WGL_ARB_framebuffer_sRGB` and `WGL_EXT_framebuffer_sRGB`
+extensions to provide support for sRGB framebuffers. Where both of these
+extension are unavailable, the `GLFW_SRGB_CAPABLE` hint will have no effect.
+
+
+@section compat_osx OpenGL on macOS
+
+Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then
+only forward-compatible, core profile contexts are supported. Support for
+OpenGL 4.1 was introduced with OS X 10.9, also limited to forward-compatible,
+core profile contexts. There is also still no mechanism for requesting debug
+contexts or no-error contexts. Versions of Mac OS X earlier than 10.7 support
+at most OpenGL version 2.1.
+
+Because of this, on OS X 10.7 and later, the `GLFW_CONTEXT_VERSION_MAJOR` and
+`GLFW_CONTEXT_VERSION_MINOR` hints will cause @ref glfwCreateWindow to fail if
+given version 3.0 or 3.1. The `GLFW_OPENGL_FORWARD_COMPAT` hint must be set to
+`GLFW_TRUE` and the `GLFW_OPENGL_PROFILE` hint must be set to
+`GLFW_OPENGL_CORE_PROFILE` when creating OpenGL 3.2 and later contexts. The
+`GLFW_OPENGL_DEBUG_CONTEXT` and `GLFW_CONTEXT_NO_ERROR` hints are ignored.
+
+Also, on Mac OS X 10.6 and below, the `GLFW_CONTEXT_VERSION_MAJOR` and
+`GLFW_CONTEXT_VERSION_MINOR` hints will fail if given a version above 2.1,
+setting the `GLFW_OPENGL_PROFILE` or `GLFW_OPENGL_FORWARD_COMPAT` hints to
+a non-default value will cause @ref glfwCreateWindow to fail and the
+`GLFW_OPENGL_DEBUG_CONTEXT` hint is ignored.
+
+
+@section compat_vulkan Vulkan loader and API
+
+By default, GLFW uses the standard system-wide Vulkan loader to access the
+Vulkan API on all platforms except macOS. This is installed by both graphics
+drivers and Vulkan SDKs. If either the loader or at least one minimally
+functional ICD is missing, @ref glfwVulkanSupported will return `GLFW_FALSE` and
+all other Vulkan-related functions will fail with an @ref GLFW_API_UNAVAILABLE
+error.
+
+
+@section compat_wsi Vulkan WSI extensions
+
+The Vulkan WSI extensions are used to create Vulkan surfaces for GLFW windows on
+all supported platforms.
+
+GLFW uses the `VK_KHR_surface` and `VK_KHR_win32_surface` extensions to create
+surfaces on Microsoft Windows. If any of these extensions are not available,
+@ref glfwGetRequiredInstanceExtensions will return an empty list and window
+surface creation will fail.
+
+GLFW uses the `VK_KHR_surface` and either the `VK_MVK_macos_surface` or
+`VK_EXT_metal_surface` extensions to create surfaces on macOS. If any of these
+extensions are not available, @ref glfwGetRequiredInstanceExtensions will
+return an empty list and window surface creation will fail.
+
+GLFW uses the `VK_KHR_surface` and either the `VK_KHR_xlib_surface` or
+`VK_KHR_xcb_surface` extensions to create surfaces on X11. If `VK_KHR_surface`
+or both `VK_KHR_xlib_surface` and `VK_KHR_xcb_surface` are not available, @ref
+glfwGetRequiredInstanceExtensions will return an empty list and window surface
+creation will fail.
+
+GLFW uses the `VK_KHR_surface` and `VK_KHR_wayland_surface` extensions to create
+surfaces on Wayland. If any of these extensions are not available, @ref
+glfwGetRequiredInstanceExtensions will return an empty list and window surface
+creation will fail.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/compile.dox b/libs/glfw-3.3.8/docs/compile.dox
new file mode 100644
index 0000000..ec458f4
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/compile.dox
@@ -0,0 +1,367 @@
+/*!
+
+@page compile_guide Compiling GLFW
+
+@tableofcontents
+
+This is about compiling the GLFW library itself. For information on how to
+build applications that use GLFW, see @ref build_guide.
+
+
+@section compile_cmake Using CMake
+
+@note GLFW behaves like most other libraries that use CMake so this guide mostly
+describes the basic configure/generate/compile sequence. If you are already
+familiar with this from other projects, you may want to focus on the @ref
+compile_deps and @ref compile_options sections for GLFW-specific information.
+
+GLFW uses [CMake](https://cmake.org/) to generate project files or makefiles
+for your chosen development environment. To compile GLFW, first generate these
+files with CMake and then use them to compile the GLFW library.
+
+If you are on Windows and macOS you can
+[download CMake](https://cmake.org/download/) from their site.
+
+If you are on a Unix-like system such as Linux, FreeBSD or Cygwin or have
+a package system like Fink, MacPorts or Homebrew, you can install its CMake
+package.
+
+CMake is a complex tool and this guide will only show a few of the possible ways
+to set up and compile GLFW. The CMake project has their own much more detailed
+[CMake user guide](https://cmake.org/cmake/help/latest/guide/user-interaction/)
+that includes everything in this guide not specific to GLFW. It may be a useful
+companion to this one.
+
+
+@subsection compile_deps Installing dependencies
+
+The C/C++ development environments in Visual Studio, Xcode and MinGW come with
+all necessary dependencies for compiling GLFW, but on Unix-like systems like
+Linux and FreeBSD you will need a few extra packages.
+
+
+@subsubsection compile_deps_x11 Dependencies for X11 on Unix-like systems
+
+To compile GLFW for X11, you need to have the X11 development packages
+installed. They are not needed to build or run programs that use GLFW.
+
+On Debian and derivates like Ubuntu and Linux Mint the `xorg-dev` meta-package
+pulls in the development packages for all of X11.
+
+@code{.sh}
+sudo apt install xorg-dev
+@endcode
+
+On Fedora and derivatives like Red Hat the X11 extension packages
+`libXcursor-devel`, `libXi-devel`, `libXinerama-devel` and `libXrandr-devel`
+required by GLFW pull in all its other dependencies.
+
+@code{.sh}
+sudo dnf install libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel
+@endcode
+
+On FreeBSD the X11 headers are installed along the end-user X11 packages, so if
+you have an X server running you should have the headers as well. If not,
+install the `xorgproto` package.
+
+@code{.sh}
+pkg install xorgproto
+@endcode
+
+On Cygwin the `libXcursor-devel`, `libXi-devel`, `libXinerama-devel`,
+`libXrandr-devel` and `libXrender-devel` packages in the Libs section of the GUI
+installer will install all the headers and other development related files GLFW
+requires for X11.
+
+Once you have the required depdendencies, move on to @ref compile_generate.
+
+
+@subsubsection compile_deps_wayland Dependencies for Wayland on Unix-like systems
+
+To compile GLFW for Wayland, you need to have the Wayland and xkbcommon
+development packages installed. They are not needed to build or run programs
+that use GLFW.
+
+On Debian and derivates like Ubuntu and Linux Mint you will need the `libwayland-dev`,
+`libxkbcommon-dev`, `wayland-protocols` and `extra-cmake-modules` packages.
+
+@code{.sh}
+sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules
+@endcode
+
+On Fedora and derivatives like Red Hat you will need the `wayland-devel`,
+`libxkbcommon-devel`, `wayland-protocols-devel` and `extra-cmake-modules` packages.
+
+@code{.sh}
+sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel extra-cmake-modules
+@endcode
+
+On FreeBSD you will need the `wayland`, `libxkbcommon`, `wayland-protocols` and
+`kf5-extra-cmake-modules` packages.
+
+@code{.sh}
+pkg install wayland libxkbcommon wayland-protocols kf5-extra-cmake-modules
+@endcode
+
+Once you have the required depdendencies, move on to @ref compile_generate.
+
+
+@subsection compile_generate Generating build files with CMake
+
+Once you have all necessary dependencies it is time to generate the project
+files or makefiles for your development environment. CMake needs two paths for
+this:
+
+ - the path to the root directory of the GLFW source tree (not its `src`
+ subdirectory)
+ - the path to the directory where the generated build files and compiled
+ binaries will be placed
+
+If these are the same, it is called an in-tree build, otherwise it is called an
+out-of-tree build.
+
+Out-of-tree builds are recommended as they avoid cluttering up the source tree.
+They also allow you to have several build directories for different
+configurations all using the same source tree.
+
+A common pattern when building a single configuration is to have a build
+directory named `build` in the root of the source tree.
+
+
+@subsubsection compile_generate_gui Generating files with the CMake GUI
+
+Start the CMake GUI and set the paths to the source and build directories
+described above. Then press _Configure_ and _Generate_.
+
+If you wish change any CMake variables in the list, press _Configure_ and then
+_Generate_ to have the new values take effect. The variable list will be
+populated after the first configure step.
+
+By default GLFW will use X11 on Linux and other Unix-like systems other
+than macOS. To use Wayland instead, set the `GLFW_USE_WAYLAND` option in the
+GLFW section of the variable list, then apply the new value as described above.
+
+Once you have generated the project files or makefiles for your chosen
+development environment, move on to @ref compile_compile.
+
+
+@subsubsection compile_generate_cli Generating files with the CMake command-line tool
+
+To make a build directory, pass the source and build directories to the `cmake`
+command. These can be relative or absolute paths. The build directory is
+created if it doesn't already exist.
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build
+@endcode
+
+It is common to name the build directory `build` and place it in the root of the
+source tree when only planning to build a single configuration.
+
+@code{.sh}
+cd path/to/glfw
+cmake -S . -B build
+@endcode
+
+Without other flags these will generate Visual Studio project files on Windows
+and makefiles on other platforms. You can choose other targets using the `-G`
+flag.
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build -G Xcode
+@endcode
+
+By default GLFW will use X11 on Linux and other Unix-like systems other
+than macOS. To use Wayland instead, set the `GLFW_USE_WAYLAND` CMake option.
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build -D GLFW_USE_WAYLAND=1
+@endcode
+
+Once you have generated the project files or makefiles for your chosen
+development environment, move on to @ref compile_compile.
+
+
+@subsection compile_compile Compiling the library
+
+You should now have all required dependencies and the project files or makefiles
+necessary to compile GLFW. Go ahead and compile the actual GLFW library with
+these files as you would with any other project.
+
+With Visual Studio open `GLFW.sln` and use the Build menu. With Xcode open
+`GLFW.xcodeproj` and use the Project menu.
+
+With Linux, macOS and other forms of Unix, run `make`.
+
+@code{.sh}
+cd path/to/build
+make
+@endcode
+
+With MinGW, it is `mingw32-make`.
+
+@code{.sh}
+cd path/to/build
+mingw32-make
+@endcode
+
+Any CMake build directory can also be built with the `cmake` command and the
+`--build` flag.
+
+@code{.sh}
+cmake --build path/to/build
+@endcode
+
+This will run the platform specific build tool the directory was generated for.
+
+Once the GLFW library is compiled you are ready to build your application,
+linking it to the GLFW library. See @ref build_guide for more information.
+
+
+@section compile_options CMake options
+
+The CMake files for GLFW provide a number of options, although not all are
+available on all supported platforms. Some of these are de facto standards
+among projects using CMake and so have no `GLFW_` prefix.
+
+If you are using the GUI version of CMake, these are listed and can be changed
+from there. If you are using the command-line version of CMake you can use the
+`ccmake` ncurses GUI to set options. Some package systems like Ubuntu and other
+distributions based on Debian GNU/Linux have this tool in a separate
+`cmake-curses-gui` package.
+
+Finally, if you don't want to use any GUI, you can set options from the `cmake`
+command-line with the `-D` flag.
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build -D BUILD_SHARED_LIBS=ON
+@endcode
+
+
+@subsection compile_options_shared Shared CMake options
+
+@anchor BUILD_SHARED_LIBS
+__BUILD_SHARED_LIBS__ determines whether GLFW is built as a static
+library or as a DLL / shared library / dynamic library. This is disabled by
+default, producing a static GLFW library.
+
+@anchor GLFW_BUILD_EXAMPLES
+__GLFW_BUILD_EXAMPLES__ determines whether the GLFW examples are built
+along with the library.
+
+@anchor GLFW_BUILD_TESTS
+__GLFW_BUILD_TESTS__ determines whether the GLFW test programs are
+built along with the library.
+
+@anchor GLFW_BUILD_DOCS
+__GLFW_BUILD_DOCS__ determines whether the GLFW documentation is built along
+with the library. This is enabled by default if
+[Doxygen](https://www.doxygen.nl/) is found by CMake during configuration.
+
+@anchor GLFW_VULKAN_STATIC
+__GLFW_VULKAN_STATIC__ determines whether to use the Vulkan loader linked
+directly with the application. This is disabled by default.
+
+
+@subsection compile_options_win32 Windows specific CMake options
+
+@anchor USE_MSVC_RUNTIME_LIBRARY_DLL
+__USE_MSVC_RUNTIME_LIBRARY_DLL__ determines whether to use the DLL version or the
+static library version of the Visual C++ runtime library. When enabled, the
+DLL version of the Visual C++ library is used. This is enabled by default.
+
+On CMake 3.15 and later you can set the standard CMake
+[CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html)
+variable instead of this GLFW-specific option.
+
+@anchor GLFW_USE_HYBRID_HPG
+__GLFW_USE_HYBRID_HPG__ determines whether to export the `NvOptimusEnablement` and
+`AmdPowerXpressRequestHighPerformance` symbols, which force the use of the
+high-performance GPU on Nvidia Optimus and AMD PowerXpress systems. These symbols
+need to be exported by the EXE to be detected by the driver, so the override
+will not work if GLFW is built as a DLL. This is disabled by default, letting
+the operating system and driver decide.
+
+
+@subsection compile_options_wayland Wayland specific CMake options
+
+@anchor GLFW_USE_WAYLAND
+__GLFW_USE_WAYLAND__ determines whether to compile the library for Wayland.
+This option is only available on Linux and other Unix-like systems other than
+macOS. This is disabled by default.
+
+
+@section compile_mingw_cross Cross-compilation with CMake and MinGW
+
+Both Cygwin and many Linux distributions have MinGW or MinGW-w64 packages. For
+example, Cygwin has the `mingw64-i686-gcc` and `mingw64-x86_64-gcc` packages
+for 32- and 64-bit version of MinGW-w64, while Debian GNU/Linux and derivatives
+like Ubuntu have the `mingw-w64` package for both.
+
+GLFW has CMake toolchain files in the `CMake` subdirectory that set up
+cross-compilation of Windows binaries. To use these files you set the
+`CMAKE_TOOLCHAIN_FILE` CMake variable with the `-D` flag add an option when
+configuring and generating the build files.
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=path/to/file
+@endcode
+
+The exact toolchain file to use depends on the prefix used by the MinGW or
+MinGW-w64 binaries on your system. You can usually see this in the /usr
+directory. For example, both the Ubuntu and Cygwin MinGW-w64 packages have
+`/usr/x86_64-w64-mingw32` for the 64-bit compilers, so the correct invocation
+would be:
+
+@code{.sh}
+cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake
+@endcode
+
+The path to the toolchain file is relative to the path to the GLFW source tree
+passed to the `-S` flag, not to the current directory.
+
+For more details see the
+[CMake toolchain guide](https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html).
+
+
+@section compile_manual Compiling GLFW manually
+
+If you wish to compile GLFW without its CMake build environment then you will
+have to do at least some of the platform detection yourself. GLFW needs
+a configuration macro to be defined in order to know what window system it is
+being compiled for and also has optional, platform-specific ones for various
+features.
+
+When building with CMake, the `glfw_config.h` configuration header is generated
+based on the current platform and CMake options. The GLFW CMake environment
+defines @b GLFW_USE_CONFIG_H, which causes this header to be included by
+`internal.h`. Without this macro, GLFW will expect the necessary configuration
+macros to be defined on the command-line.
+
+The window creation API is used to create windows, handle input, monitors, gamma
+ramps and clipboard. The options are:
+
+ - @b _GLFW_COCOA to use the Cocoa frameworks
+ - @b _GLFW_WIN32 to use the Win32 API
+ - @b _GLFW_X11 to use the X Window System
+ - @b _GLFW_WAYLAND to use the Wayland API (experimental and incomplete)
+ - @b _GLFW_OSMESA to use the OSMesa API (headless and non-interactive)
+
+If you are building GLFW as a shared library / dynamic library / DLL then you
+must also define @b _GLFW_BUILD_DLL. Otherwise, you must not define it.
+
+If you are linking the Vulkan loader directly with your application then you
+must also define @b _GLFW_VULKAN_STATIC. Otherwise, GLFW will attempt to use the
+external version.
+
+If you are using a custom name for the Vulkan, EGL, GLX, OSMesa, OpenGL, GLESv1
+or GLESv2 library, you can override the default names by defining those you need
+of @b _GLFW_VULKAN_LIBRARY, @b _GLFW_EGL_LIBRARY, @b _GLFW_GLX_LIBRARY, @b
+_GLFW_OSMESA_LIBRARY, @b _GLFW_OPENGL_LIBRARY, @b _GLFW_GLESV1_LIBRARY and @b
+_GLFW_GLESV2_LIBRARY. Otherwise, GLFW will use the built-in default names.
+
+@note None of the @ref build_macros may be defined during the compilation of
+GLFW. If you define any of these in your build files, make sure they are not
+applied to the GLFW sources.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/context.dox b/libs/glfw-3.3.8/docs/context.dox
new file mode 100644
index 0000000..25de69f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/context.dox
@@ -0,0 +1,346 @@
+/*!
+
+@page context_guide Context guide
+
+@tableofcontents
+
+This guide introduces the OpenGL and OpenGL ES context related functions of
+GLFW. For details on a specific function in this category, see the @ref
+context. There are also guides for the other areas of the GLFW API.
+
+ - @ref intro_guide
+ - @ref window_guide
+ - @ref vulkan_guide
+ - @ref monitor_guide
+ - @ref input_guide
+
+
+@section context_object Context objects
+
+A window object encapsulates both a top-level window and an OpenGL or OpenGL ES
+context. It is created with @ref glfwCreateWindow and destroyed with @ref
+glfwDestroyWindow or @ref glfwTerminate. See @ref window_creation for more
+information.
+
+As the window and context are inseparably linked, the window object also serves
+as the context handle.
+
+To test the creation of various kinds of contexts and see their properties, run
+the `glfwinfo` test program.
+
+@note Vulkan does not have a context and the Vulkan instance is created via the
+Vulkan API itself. If you will be using Vulkan to render to a window, disable
+context creation by setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint)
+hint to `GLFW_NO_API`. For more information, see the @ref vulkan_guide.
+
+
+@subsection context_hints Context creation hints
+
+There are a number of hints, specified using @ref glfwWindowHint, related to
+what kind of context is created. See
+[context related hints](@ref window_hints_ctx) in the window guide.
+
+
+@subsection context_sharing Context object sharing
+
+When creating a window and its OpenGL or OpenGL ES context with @ref
+glfwCreateWindow, you can specify another window whose context the new one
+should share its objects (textures, vertex and element buffers, etc.) with.
+
+@code
+GLFWwindow* second_window = glfwCreateWindow(640, 480, "Second Window", NULL, first_window);
+@endcode
+
+Object sharing is implemented by the operating system and graphics driver. On
+platforms where it is possible to choose which types of objects are shared, GLFW
+requests that all types are shared.
+
+See the relevant chapter of the [OpenGL](https://www.opengl.org/registry/) or
+[OpenGL ES](https://www.khronos.org/opengles/) reference documents for more
+information. The name and number of this chapter unfortunately varies between
+versions and APIs, but has at times been named _Shared Objects and Multiple
+Contexts_.
+
+GLFW comes with a barebones object sharing example program called `sharing`.
+
+
+@subsection context_offscreen Offscreen contexts
+
+GLFW doesn't support creating contexts without an associated window. However,
+contexts with hidden windows can be created with the
+[GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window hint.
+
+@code
+glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
+
+GLFWwindow* offscreen_context = glfwCreateWindow(640, 480, "", NULL, NULL);
+@endcode
+
+The window never needs to be shown and its context can be used as a plain
+offscreen context. Depending on the window manager, the size of a hidden
+window's framebuffer may not be usable or modifiable, so framebuffer
+objects are recommended for rendering with such contexts.
+
+You should still [process events](@ref events) as long as you have at least one
+window, even if none of them are visible.
+
+@macos The first time a window is created the menu bar is created. This is not
+desirable for example when writing a command-line only application. Menu bar
+creation can be disabled with the @ref GLFW_COCOA_MENUBAR init hint.
+
+
+@subsection context_less Windows without contexts
+
+You can disable context creation by setting the
+[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`. Windows
+without contexts must not be passed to @ref glfwMakeContextCurrent or @ref
+glfwSwapBuffers.
+
+
+@section context_current Current context
+
+Before you can make OpenGL or OpenGL ES calls, you need to have a current
+context of the correct type. A context can only be current for a single thread
+at a time, and a thread can only have a single context current at a time.
+
+When moving a context between threads, you must make it non-current on the old
+thread before making it current on the new one.
+
+The context of a window is made current with @ref glfwMakeContextCurrent.
+
+@code
+glfwMakeContextCurrent(window);
+@endcode
+
+The window of the current context is returned by @ref glfwGetCurrentContext.
+
+@code
+GLFWwindow* window = glfwGetCurrentContext();
+@endcode
+
+The following GLFW functions require a context to be current. Calling any these
+functions without a current context will generate a @ref GLFW_NO_CURRENT_CONTEXT
+error.
+
+ - @ref glfwSwapInterval
+ - @ref glfwExtensionSupported
+ - @ref glfwGetProcAddress
+
+
+@section context_swap Buffer swapping
+
+See @ref buffer_swap in the window guide.
+
+
+@section context_glext OpenGL and OpenGL ES extensions
+
+One of the benefits of OpenGL and OpenGL ES is their extensibility.
+Hardware vendors may include extensions in their implementations that extend the
+API before that functionality is included in a new version of the OpenGL or
+OpenGL ES specification, and some extensions are never included and remain
+as extensions until they become obsolete.
+
+An extension is defined by:
+
+- An extension name (e.g. `GL_ARB_gl_spirv`)
+- New OpenGL tokens (e.g. `GL_SPIR_V_BINARY_ARB`)
+- New OpenGL functions (e.g. `glSpecializeShaderARB`)
+
+Note the `ARB` affix, which stands for Architecture Review Board and is used
+for official extensions. The extension above was created by the ARB, but there
+are many different affixes, like `NV` for Nvidia and `AMD` for, well, AMD. Any
+group may also use the generic `EXT` affix. Lists of extensions, together with
+their specifications, can be found at the
+[OpenGL Registry](https://www.opengl.org/registry/) and
+[OpenGL ES Registry](https://www.khronos.org/registry/gles/).
+
+
+@subsection context_glext_auto Loading extension with a loader library
+
+An extension loader library is the easiest and best way to access both OpenGL and
+OpenGL ES extensions and modern versions of the core OpenGL or OpenGL ES APIs.
+They will take care of all the details of declaring and loading everything you
+need. One such library is [glad](https://github.com/Dav1dde/glad) and there are
+several others.
+
+The following example will use glad but all extension loader libraries work
+similarly.
+
+First you need to generate the source files using the glad Python script. This
+example generates a loader for any version of OpenGL, which is the default for
+both GLFW and glad, but loaders for OpenGL ES, as well as loaders for specific
+API versions and extension sets can be generated. The generated files are
+written to the `output` directory.
+
+@code{.sh}
+python main.py --generator c --no-loader --out-path output
+@endcode
+
+The `--no-loader` option is added because GLFW already provides a function for
+loading OpenGL and OpenGL ES function pointers, one that automatically uses the
+selected context creation API, and glad can call this instead of having to
+implement its own. There are several other command-line options as well. See
+the glad documentation for details.
+
+Add the generated `output/src/glad.c`, `output/include/glad/glad.h` and
+`output/include/KHR/khrplatform.h` files to your build. Then you need to
+include the glad header file, which will replace the OpenGL header of your
+development environment. By including the glad header before the GLFW header,
+it suppresses the development environment's OpenGL or OpenGL ES header.
+
+@code
+#include <glad/glad.h>
+#include <GLFW/glfw3.h>
+@endcode
+
+Finally you need to initialize glad once you have a suitable current context.
+
+@code
+window = glfwCreateWindow(640, 480, "My Window", NULL, NULL);
+if (!window)
+{
+ ...
+}
+
+glfwMakeContextCurrent(window);
+
+gladLoadGLLoader((GLADloadproc) glfwGetProcAddress);
+@endcode
+
+Once glad has been loaded, you have access to all OpenGL core and extension
+functions supported by both the context you created and the glad loader you
+generated and you are ready to start rendering.
+
+You can specify a minimum required OpenGL or OpenGL ES version with
+[context hints](@ref window_hints_ctx). If your needs are more complex, you can
+check the actual OpenGL or OpenGL ES version with
+[context attributes](@ref window_attribs_ctx), or you can check whether
+a specific version is supported by the current context with the
+`GLAD_GL_VERSION_x_x` booleans.
+
+@code
+if (GLAD_GL_VERSION_3_2)
+{
+ // Call OpenGL 3.2+ specific code
+}
+@endcode
+
+To check whether a specific extension is supported, use the `GLAD_GL_xxx`
+booleans.
+
+@code
+if (GLAD_GL_ARB_gl_spirv)
+{
+ // Use GL_ARB_gl_spirv
+}
+@endcode
+
+
+@subsection context_glext_manual Loading extensions manually
+
+__Do not use this technique__ unless it is absolutely necessary. An
+[extension loader library](@ref context_glext_auto) will save you a ton of
+tedious, repetitive, error prone work.
+
+To use a certain extension, you must first check whether the context supports
+that extension and then, if it introduces new functions, retrieve the pointers
+to those functions. GLFW provides @ref glfwExtensionSupported and @ref
+glfwGetProcAddress for manual loading of extensions and new API functions.
+
+This section will demonstrate manual loading of OpenGL extensions. The loading
+of OpenGL ES extensions is identical except for the name of the extension header.
+
+
+@subsubsection context_glext_header The glext.h header
+
+The `glext.h` extension header is a continually updated file that defines the
+interfaces for all OpenGL extensions. The latest version of this can always be
+found at the [OpenGL Registry](https://www.opengl.org/registry/). There are also
+extension headers for the various versions of OpenGL ES at the
+[OpenGL ES Registry](https://www.khronos.org/registry/gles/). It it strongly
+recommended that you use your own copy of the extension header, as the one
+included in your development environment may be several years out of date and
+may not include the extensions you wish to use.
+
+The header defines function pointer types for all functions of all extensions it
+supports. These have names like `PFNGLSPECIALIZESHADERARBPROC` (for
+`glSpecializeShaderARB`), i.e. the name is made uppercase and `PFN` (pointer
+to function) and `PROC` (procedure) are added to the ends.
+
+To include the extension header, define @ref GLFW_INCLUDE_GLEXT before including
+the GLFW header.
+
+@code
+#define GLFW_INCLUDE_GLEXT
+#include <GLFW/glfw3.h>
+@endcode
+
+
+@subsubsection context_glext_string Checking for extensions
+
+A given machine may not actually support the extension (it may have older
+drivers or a graphics card that lacks the necessary hardware features), so it
+is necessary to check at run-time whether the context supports the extension.
+This is done with @ref glfwExtensionSupported.
+
+@code
+if (glfwExtensionSupported("GL_ARB_gl_spirv"))
+{
+ // The extension is supported by the current context
+}
+@endcode
+
+The argument is a null terminated ASCII string with the extension name. If the
+extension is supported, @ref glfwExtensionSupported returns `GLFW_TRUE`,
+otherwise it returns `GLFW_FALSE`.
+
+
+@subsubsection context_glext_proc Fetching function pointers
+
+Many extensions, though not all, require the use of new OpenGL functions.
+These functions often do not have entry points in the client API libraries of
+your operating system, making it necessary to fetch them at run time. You can
+retrieve pointers to these functions with @ref glfwGetProcAddress.
+
+@code
+PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB = glfwGetProcAddress("glSpecializeShaderARB");
+@endcode
+
+In general, you should avoid giving the function pointer variables the (exact)
+same name as the function, as this may confuse your linker. Instead, you can
+use a different prefix, like above, or some other naming scheme.
+
+Now that all the pieces have been introduced, here is what they might look like
+when used together.
+
+@code
+#define GLFW_INCLUDE_GLEXT
+#include <GLFW/glfw3.h>
+
+#define glSpecializeShaderARB pfnSpecializeShaderARB
+PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB;
+
+// Flag indicating whether the extension is supported
+int has_ARB_gl_spirv = 0;
+
+void load_extensions(void)
+{
+ if (glfwExtensionSupported("GL_ARB_gl_spirv"))
+ {
+ pfnSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)
+ glfwGetProcAddress("glSpecializeShaderARB");
+ has_ARB_gl_spirv = 1;
+ }
+}
+
+void some_function(void)
+{
+ if (has_ARB_gl_spirv)
+ {
+ // Now the extension function can be called as usual
+ glSpecializeShaderARB(...);
+ }
+}
+@endcode
+
+*/
diff --git a/libs/glfw-3.3.8/docs/extra.css b/libs/glfw-3.3.8/docs/extra.css
new file mode 100644
index 0000000..05c1938
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/extra.css
@@ -0,0 +1 @@
+.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover{background:none;text-shadow:none}.sm-dox a span.sub-arrow{border-color:#f2f2f2 transparent transparent transparent}.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow{border-color:#f60 transparent transparent transparent}.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #f60}.sm-dox ul a:hover{background:#666;text-shadow:none}.sm-dox ul.sm-nowrap a{color:#4d4d4d;text-shadow:none}#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code{background:none}#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator{border:none}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span{text-shadow:none}.memdoc,dl.reflist dd{box-shadow:none}div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code{padding:0}#nav-path,.directory .levels,span.lineno{display:none}html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven{background:#f2f2f2}body{color:#4d4d4d}h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em{color:#1a1a1a;border-bottom:none}h1{padding-top:.5em;font-size:180%}h2{padding-top:.5em;margin-bottom:0;font-size:140%}h3{padding-top:.5em;margin-bottom:0;font-size:110%}.glfwheader{font-size:16px;min-height:64px;max-width:920px;padding:0 32px;margin:0 auto;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#glfwhome{line-height:64px;padding-right:48px;color:#666;font-size:2.5em;background:url("https://www.glfw.org/css/arrow.png") no-repeat right}.glfwnavbar{list-style-type:none;margin:0 0 0 auto;float:right}#glfwhome,.glfwnavbar li{float:left}.glfwnavbar a,.glfwnavbar a:visited{line-height:64px;margin-left:2em;display:block;color:#666}.glfwnavbar{padding-left:0}#glfwhome,.glfwnavbar a,.glfwnavbar a:visited{transition:.35s ease}#titlearea,.footer{color:#666}address.footer{text-align:center;padding:2em;margin-top:3em}#top{background:#666}#main-nav{max-width:960px;margin:0 auto;font-size:13px}#main-menu{max-width:920px;margin:0 auto;font-size:13px}.memtitle{display:none}.memproto,.memname{font-weight:bold;text-shadow:none}#main-menu{min-height:36px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li{color:#f2f2f2}#main-menu li ul.sm-nowrap li a{color:#4d4d4d}#main-menu li ul.sm-nowrap li a:hover{color:#f60}#main-menu>li:last-child{margin:0 0 0 auto}.contents{min-height:590px}div.contents,div.header{max-width:920px;margin:0 auto;padding:0 32px;background:#fff none}table.doxtable th,table.markdownTable th,dl.reflist dt{background:linear-gradient(to bottom, #ffa733 0%, #ff6600 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;text-align:left;color:#fff}dl.reflist dt a.el{color:#f60;padding:.2em;border-radius:4px;background-color:#ffe0cc}div.toc{float:none;width:auto}div.toc h3{font-size:1.17em}div.toc ul{padding-left:1.5em}div.toc li{font-size:1em;padding-left:0;list-style-type:disc}div.toc,.memproto,div.qindex,div.ah{background:linear-gradient(to bottom, #f2f2f2 0%, #e6e6e6 100%);box-shadow:inset 0 0 32px #e6e6e6;text-shadow:0 1px 1px #fff;color:#1a1a1a;border:2px solid #e6e6e6;border-radius:4px}.paramname{color:#803300}dl.reflist dt{border:2px solid #f60;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:none}dl.reflist dd{border:2px solid #f60;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}table.doxtable,table.markdownTable{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover{color:#f60;text-decoration:none}div.directory{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}hr,.memSeparator{height:2px;background:linear-gradient(to right, #f2f2f2 0%, #d9d9d9 50%, #f2f2f2 100%)}dl.note,dl.pre,dl.post,dl.invariant{background:linear-gradient(to bottom, #ddfad1 0%, #cbf7ba 100%);box-shadow:inset 0 0 32px #baf5a3;color:#1e5309;border:2px solid #afe699}dl.warning,dl.attention{background:linear-gradient(to bottom, #fae8d1 0%, #f7ddba 100%);box-shadow:inset 0 0 32px #f5d1a3;color:#533309;border:2px solid #e6c499}dl.deprecated,dl.bug{background:linear-gradient(to bottom, #fad1e3 0%, #f7bad6 100%);box-shadow:inset 0 0 32px #f5a3c8;color:#53092a;border:2px solid #e699bb}dl.todo,dl.test{background:linear-gradient(to bottom, #d1ecfa 0%, #bae3f7 100%);box-shadow:inset 0 0 32px #a3daf5;color:#093a53;border:2px solid #99cce6}dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test{border-radius:4px;padding:1em;text-shadow:0 1px 1px #fff;margin:1em 0}.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited{color:inherit}div.line{line-height:inherit}div.fragment,pre.fragment{background:#f2f2f2;border-radius:4px;border:none;padding:1em;overflow:auto;border-left:4px solid #ccc;margin:1em 0}.lineno a,.lineno a:visited,.line,pre.fragment{color:#4d4d4d}span.preprocessor,span.comment{color:#007899}a.code,a.code:visited{color:#e64500}span.keyword,span.keywordtype,span.keywordflow{color:#404040;font-weight:bold}span.stringliteral{color:#360099}code{padding:.1em;border-radius:4px}/*# sourceMappingURL=extra.css.map */
diff --git a/libs/glfw-3.3.8/docs/extra.css.map b/libs/glfw-3.3.8/docs/extra.css.map
new file mode 100644
index 0000000..7d10c5e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/extra.css.map
@@ -0,0 +1 @@
+{"version":3,"sourceRoot":"","sources":["extra.scss"],"names":[],"mappings":"AA8EA,4GACI,gBACA,iBAGJ,yBACC,yDAGD,6HACC,sDAGD,yIACC,sDAGD,mBACI,WA9EuB,KA+EvB,iBAGJ,uBACC,MAzFoB,QA0FjB,iBAGJ,6UACC,gBAGD,mJACC,YAGD,yHACC,iBAGD,sBACC,gBAGD,4LACC,UAGD,yCACC,aAGD,kMACC,WAnHgC,QAsHjC,KACC,MA1HoB,QA6HrB,sDACC,MA/Ge,QAgHf,mBAGD,GACE,iBACA,eAGF,GACE,iBACA,gBACA,eAGF,GACE,iBACA,gBACA,eAGF,YACC,eACA,gBACA,gBACA,eACA,cAEA,aACA,mBACA,eACA,2BACA,mBACA,sBAGD,UACC,iBACA,mBACA,MA/J0B,KAgK1B,gBACA,qEAGD,YACC,qBACA,kBACA,YAGD,yBACC,WAGD,oCACC,iBACA,gBACA,cACA,MAlL0B,KAqL3B,YACC,eAGD,8CACC,qBAGD,mBACC,MA9L0B,KAiM3B,eACC,kBACA,YACA,eAGD,KACC,WAxM0B,KA2M3B,UACC,gBACA,cACA,eAGD,WACC,gBACA,cACA,eAGD,UACI,aAGJ,mBACI,iBACA,iBAGJ,WACC,gBACA,aACA,mBACA,eACA,2BACA,mBACA,sBAGD,mEACC,MA9OgC,QAiPjC,gCACC,MArPoB,QAwPrB,sCACC,MAjOoB,KAoOrB,yBACC,kBAGD,UACC,iBAGD,wBACC,gBACA,cACA,eACA,qBAGD,uDACC,gEACA,+BACA,+BACA,gBACA,MArPgB,KAwPjB,mBACC,MA5PoB,KA6PpB,aACA,kBACA,yBAGD,QACC,WACA,WAGD,WACC,iBAGD,WACC,mBAGD,WACC,cACA,eACA,qBAGD,oCACC,gEACA,kCACA,2BACA,MAlSe,QAmSf,yBACA,kBAGD,WACC,MA3QuB,QA8QxB,cACC,sBACA,2BACA,4BACA,mBAGD,cACC,sBACA,+BACA,8BACA,gBAGD,mCACC,wBACA,iBACA,sBACA,kBAGD,gIACC,MAxToB,KAyTpB,qBAGD,cACC,wBACA,iBACA,sBACA,kBAGD,iBACC,WACA,4EAGD,oCApSC,gEACA,kCACA,cACA,yBAqSD,wBAxSC,gEACA,kCACA,cACA,yBAySD,qBA5SC,gEACA,kCACA,cACA,yBA6SD,gBAhTC,gEACA,kCACA,cACA,yBAiTD,iGACC,kBACA,YACA,2BACA,aAGD,kRACC,cAGD,SACC,oBAGD,0BACC,mBACA,kBACA,YACA,YACA,cACA,2BACA,aAGD,+CACC,MA1YoB,QA6YrB,+BACC,cAGD,sBACC,cAGD,+CACC,cACA,iBAGD,mBACC,cAGD,KACC,aACA","file":"extra.css"} \ No newline at end of file
diff --git a/libs/glfw-3.3.8/docs/extra.scss b/libs/glfw-3.3.8/docs/extra.scss
new file mode 100644
index 0000000..6c5f3c2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/extra.scss
@@ -0,0 +1,430 @@
+// NOTE: Please use this file to perform modifications on default style sheets.
+//
+// You need to install the official Sass CLI tool:
+// npm install -g sass
+//
+// Run this command to regenerate extra.css after you're finished with changes:
+// sass --style=compressed extra.scss extra.css
+//
+// Alternatively you can use online services to regenerate extra.css.
+
+
+// Default text color for page contents
+$default-text-color: hsl(0,0%,30%);
+
+// Page header, footer, table rows, inline codes and definition lists
+$header-footer-background-color: hsl(0,0%,95%);
+
+// Page header, footer links and navigation bar background
+$header-footer-link-color: hsl(0,0%,40%);
+
+// Doxygen navigation bar links
+$navbar-link-color: $header-footer-background-color;
+
+// Page content background color
+$content-background-color: hsl(0,0%,100%);
+
+// Bold, italic, h1, h2, ... and table of contents
+$heading-color: hsl(0,0%,10%);
+
+// Function, enum and macro definition separator
+$def-separator-color: $header-footer-background-color;
+
+// Base color hue
+$base-hue: 24;
+
+// Default color used for links
+$default-link-color: hsl($base-hue,100%,50%);
+
+// Doxygen navigation bar active tab
+$tab-text-color: hsl(0,0%,100%);
+$tab-background-color1: $default-link-color;
+$tab-background-color2: lighten(adjust-hue($tab-background-color1, 10), 10%);
+
+// Table borders
+$default-border-color: $default-link-color;
+
+// Table header
+$table-text-color: $tab-text-color;
+$table-background-color1: $tab-background-color1;
+$table-background-color2: $tab-background-color2;
+
+// Table of contents, data structure index and prototypes
+$toc-background-color1: hsl(0,0%,90%);
+$toc-background-color2: lighten($toc-background-color1, 5%);
+
+// Function prototype parameters color
+$prototype-param-color: darken($default-link-color, 25%);
+
+// Message box color: note, pre, post and invariant
+$box-note-color: hsl(103,80%,85%);
+
+// Message box color: warning and attention
+$box-warning-color: hsl(34,80%,85%);
+
+// Message box color: deprecated and bug
+$box-bug-color: hsl(333,80%,85%);
+
+// Message box color: todo and test
+$box-todo-color: hsl(200,80%,85%);
+
+// Message box helper function
+@mixin message-box($base-color){
+ background:linear-gradient(to bottom,lighten($base-color, 5%) 0%,$base-color 100%);
+ box-shadow:inset 0 0 32px darken($base-color, 5%);
+ color:darken($base-color, 67%);
+ border:2px solid desaturate(darken($base-color, 10%), 20%);
+}
+
+.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover {
+ background:none;
+ text-shadow:none;
+}
+
+.sm-dox a span.sub-arrow {
+ border-color:$navbar-link-color transparent transparent transparent;
+}
+
+.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow {
+ border-color:$default-link-color transparent transparent transparent;
+}
+
+.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow {
+ border-color:transparent transparent transparent $default-link-color;
+}
+
+.sm-dox ul a:hover {
+ background:$header-footer-link-color;
+ text-shadow:none;
+}
+
+.sm-dox ul.sm-nowrap a {
+ color:$default-text-color;
+ text-shadow:none;
+}
+
+#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code {
+ background:none;
+}
+
+#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator {
+ border:none;
+}
+
+#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span {
+ text-shadow:none;
+}
+
+.memdoc,dl.reflist dd {
+ box-shadow:none;
+}
+
+div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code {
+ padding:0;
+}
+
+#nav-path,.directory .levels,span.lineno {
+ display:none;
+}
+
+html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven {
+ background:$header-footer-background-color;
+}
+
+body {
+ color:$default-text-color;
+}
+
+h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em {
+ color:$heading-color;
+ border-bottom:none;
+}
+
+h1 {
+ padding-top:0.5em;
+ font-size:180%;
+}
+
+h2 {
+ padding-top:0.5em;
+ margin-bottom:0;
+ font-size:140%;
+}
+
+h3 {
+ padding-top:0.5em;
+ margin-bottom:0;
+ font-size:110%;
+}
+
+.glfwheader {
+ font-size:16px;
+ min-height:64px;
+ max-width:920px;
+ padding:0 32px;
+ margin:0 auto;
+
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center;
+ align-content: stretch;
+}
+
+#glfwhome {
+ line-height:64px;
+ padding-right:48px;
+ color:$header-footer-link-color;
+ font-size:2.5em;
+ background:url("https://www.glfw.org/css/arrow.png") no-repeat right;
+}
+
+.glfwnavbar {
+ list-style-type:none;
+ margin:0 0 0 auto;
+ float:right;
+}
+
+#glfwhome,.glfwnavbar li {
+ float:left;
+}
+
+.glfwnavbar a,.glfwnavbar a:visited {
+ line-height:64px;
+ margin-left:2em;
+ display:block;
+ color:$header-footer-link-color;
+}
+
+.glfwnavbar {
+ padding-left: 0;
+}
+
+#glfwhome,.glfwnavbar a,.glfwnavbar a:visited {
+ transition:.35s ease;
+}
+
+#titlearea,.footer {
+ color:$header-footer-link-color;
+}
+
+address.footer {
+ text-align:center;
+ padding:2em;
+ margin-top:3em;
+}
+
+#top {
+ background:$header-footer-link-color;
+}
+
+#main-nav {
+ max-width:960px;
+ margin:0 auto;
+ font-size:13px;
+}
+
+#main-menu {
+ max-width:920px;
+ margin:0 auto;
+ font-size:13px;
+}
+
+.memtitle {
+ display:none;
+}
+
+.memproto,.memname {
+ font-weight:bold;
+ text-shadow:none;
+}
+
+#main-menu {
+ min-height:36px;
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: flex-start;
+ align-items: center;
+ align-content: stretch;
+}
+
+#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li {
+ color:$navbar-link-color;
+}
+
+#main-menu li ul.sm-nowrap li a {
+ color:$default-text-color;
+}
+
+#main-menu li ul.sm-nowrap li a:hover {
+ color:$default-link-color;
+}
+
+#main-menu > li:last-child {
+ margin: 0 0 0 auto;
+}
+
+.contents {
+ min-height:590px;
+}
+
+div.contents,div.header {
+ max-width:920px;
+ margin:0 auto;
+ padding:0 32px;
+ background:$content-background-color none;
+}
+
+table.doxtable th,table.markdownTable th,dl.reflist dt {
+ background:linear-gradient(to bottom,$table-background-color2 0%,$table-background-color1 100%);
+ box-shadow:inset 0 0 32px $table-background-color1;
+ text-shadow:0 -1px 1px darken($table-background-color1, 15%);
+ text-align:left;
+ color:$table-text-color;
+}
+
+dl.reflist dt a.el {
+ color:$default-link-color;
+ padding:.2em;
+ border-radius:4px;
+ background-color:lighten($default-link-color, 40%);
+}
+
+div.toc {
+ float:none;
+ width:auto;
+}
+
+div.toc h3 {
+ font-size:1.17em;
+}
+
+div.toc ul {
+ padding-left:1.5em;
+}
+
+div.toc li {
+ font-size:1em;
+ padding-left:0;
+ list-style-type:disc;
+}
+
+div.toc,.memproto,div.qindex,div.ah {
+ background:linear-gradient(to bottom,$toc-background-color2 0%,$toc-background-color1 100%);
+ box-shadow:inset 0 0 32px $toc-background-color1;
+ text-shadow:0 1px 1px lighten($toc-background-color2, 10%);
+ color:$heading-color;
+ border:2px solid $toc-background-color1;
+ border-radius:4px;
+}
+
+.paramname {
+ color:$prototype-param-color;
+}
+
+dl.reflist dt {
+ border:2px solid $default-border-color;
+ border-top-left-radius:4px;
+ border-top-right-radius:4px;
+ border-bottom:none;
+}
+
+dl.reflist dd {
+ border:2px solid $default-border-color;
+ border-bottom-right-radius:4px;
+ border-bottom-left-radius:4px;
+ border-top:none;
+}
+
+table.doxtable,table.markdownTable {
+ border-collapse:inherit;
+ border-spacing:0;
+ border:2px solid $default-border-color;
+ border-radius:4px;
+}
+
+a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover {
+ color:$default-link-color;
+ text-decoration:none;
+}
+
+div.directory {
+ border-collapse:inherit;
+ border-spacing:0;
+ border:2px solid $default-border-color;
+ border-radius:4px;
+}
+
+hr,.memSeparator {
+ height:2px;
+ background:linear-gradient(to right,$def-separator-color 0%,darken($def-separator-color, 10%) 50%,$def-separator-color 100%);
+}
+
+dl.note,dl.pre,dl.post,dl.invariant {
+ @include message-box($box-note-color);
+}
+
+dl.warning,dl.attention {
+ @include message-box($box-warning-color);
+}
+
+dl.deprecated,dl.bug {
+ @include message-box($box-bug-color);
+}
+
+dl.todo,dl.test {
+ @include message-box($box-todo-color);
+}
+
+dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test {
+ border-radius:4px;
+ padding:1em;
+ text-shadow:0 1px 1px hsl(0,0%,100%);
+ margin:1em 0;
+}
+
+.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited {
+ color:inherit;
+}
+
+div.line {
+ line-height:inherit;
+}
+
+div.fragment,pre.fragment {
+ background:hsl(0,0%,95%);
+ border-radius:4px;
+ border:none;
+ padding:1em;
+ overflow:auto;
+ border-left:4px solid hsl(0,0%,80%);
+ margin:1em 0;
+}
+
+.lineno a,.lineno a:visited,.line,pre.fragment {
+ color:$default-text-color;
+}
+
+span.preprocessor,span.comment {
+ color:hsl(193,100%,30%);
+}
+
+a.code,a.code:visited {
+ color:hsl(18,100%,45%);
+}
+
+span.keyword,span.keywordtype,span.keywordflow {
+ color:darken($default-text-color, 5%);
+ font-weight:bold;
+}
+
+span.stringliteral {
+ color:hsl(261,100%,30%);
+}
+
+code {
+ padding:.1em;
+ border-radius:4px;
+}
diff --git a/libs/glfw-3.3.8/docs/footer.html b/libs/glfw-3.3.8/docs/footer.html
new file mode 100644
index 0000000..b0434ca
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/footer.html
@@ -0,0 +1,7 @@
+<address class="footer">
+<p>
+Last update on $date for $projectname $projectnumber
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/header.html b/libs/glfw-3.3.8/docs/header.html
new file mode 100644
index 0000000..4cefa3d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/header.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen $doxygenversion"/>
+<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
+<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
+<link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="$relpath^jquery.js"></script>
+<script type="text/javascript" src="$relpath^dynsections.js"></script>
+$treeview
+$search
+$mathjax
+<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
+$extrastylesheet
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+
+<!--BEGIN TITLEAREA-->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!--END TITLEAREA-->
+<!-- end header part -->
diff --git a/libs/glfw-3.3.8/docs/html/bc_s.png b/libs/glfw-3.3.8/docs/html/bc_s.png
new file mode 100644
index 0000000..224b29a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/bc_s.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/bdwn.png b/libs/glfw-3.3.8/docs/html/bdwn.png
new file mode 100644
index 0000000..940a0b9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/bdwn.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/build_8dox.html b/libs/glfw-3.3.8/docs/html/build_8dox.html
new file mode 100644
index 0000000..1f81575
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/build_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: build.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">build.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/build_guide.html b/libs/glfw-3.3.8/docs/html/build_guide.html
new file mode 100644
index 0000000..3b09bff
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/build_guide.html
@@ -0,0 +1,192 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Building applications</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Building applications </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#build_include">Including the GLFW header file</a><ul><li class="level2"><a href="#build_macros">GLFW header option macros</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#build_link">Link with the right libraries</a><ul><li class="level2"><a href="#build_link_win32">With MinGW or Visual C++ on Windows</a></li>
+<li class="level2"><a href="#build_link_cmake_source">With CMake and GLFW source</a></li>
+<li class="level2"><a href="#build_link_cmake_package">With CMake and installed GLFW binaries</a></li>
+<li class="level2"><a href="#build_link_pkgconfig">With makefiles and pkg-config on Unix</a></li>
+<li class="level2"><a href="#build_link_xcode">With Xcode on macOS</a></li>
+<li class="level2"><a href="#build_link_osx">With command-line on macOS</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><p >This is about compiling and linking applications that use GLFW. For information on how to write such applications, start with the <a class="el" href="quick_guide.html">introductory tutorial</a>. For information on how to compile the GLFW library itself, see <a class="el" href="compile_guide.html">Compiling GLFW</a>.</p>
+<p >This is not a tutorial on compilation or linking. It assumes basic understanding of how to compile and link a C program as well as how to use the specific compiler of your chosen development environment. The compilation and linking process should be explained in your C programming material and in the documentation for your development environment.</p>
+<h1><a class="anchor" id="build_include"></a>
+Including the GLFW header file</h1>
+<p >You should include the GLFW header in the source files where you use OpenGL or GLFW.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
+</div><!-- fragment --><p >This header defines all the constants and declares all the types and function prototypes of the GLFW API. By default it also includes the OpenGL header from your development environment. See <a class="el" href="build_guide.html#build_macros">option macros</a> below for how to select OpenGL ES headers and more.</p>
+<p >The GLFW header also defines any platform-specific macros needed by your OpenGL header, so that it can be included without needing any window system headers.</p>
+<p >It does this only when needed, so if window system headers are included, the GLFW header does not try to redefine those symbols. The reverse is not true, i.e. <code>windows.h</code> cannot cope if any Win32 symbols have already been defined.</p>
+<p >In other words:</p>
+<ul>
+<li>Use the GLFW header to include OpenGL or OpenGL ES headers portably</li>
+<li>Do not include window system headers unless you will use those APIs directly</li>
+<li>If you do need such headers, include them before the GLFW header</li>
+</ul>
+<p >If you are using an OpenGL extension loading library such as <a href="https://github.com/Dav1dde/glad">glad</a>, the extension loader header should be included before the GLFW one. GLFW attempts to detect any OpenGL or OpenGL ES header or extension loader header included before it and will then disable the inclusion of the default OpenGL header. Most extension loaders also define macros that disable similar headers below it.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+</div><!-- fragment --><p >Both of these mechanisms depend on the extension loader header defining a known macro. If yours doesn't or you don't know which one your users will pick, the <a class="el" href="build_guide.html#GLFW_INCLUDE_NONE">GLFW_INCLUDE_NONE</a> macro will explicitly prevent the GLFW header from including the OpenGL header. This will also allow you to include the two headers in any order.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
+</div><!-- fragment --><h2><a class="anchor" id="build_macros"></a>
+GLFW header option macros</h2>
+<p >These macros may be defined before the inclusion of the GLFW header and affect its behavior.</p>
+<p ><a class="anchor" id="GLFW_DLL"></a><b>GLFW_DLL</b> is required on Windows when using the GLFW DLL, to tell the compiler that the GLFW functions are defined in a DLL.</p>
+<p >The following macros control which OpenGL or OpenGL ES API header is included. Only one of these may be defined at a time.</p>
+<dl class="section note"><dt>Note</dt><dd>GLFW does not provide any of the API headers mentioned below. They are provided by your development environment or your OpenGL, OpenGL ES or Vulkan SDK, and most of them can be downloaded from the <a href="https://www.khronos.org/registry/">Khronos Registry</a>.</dd></dl>
+<p><a class="anchor" id="GLFW_INCLUDE_GLCOREARB"></a><b>GLFW_INCLUDE_GLCOREARB</b> makes the GLFW header include the modern <code>GL/glcorearb.h</code> header (<code>OpenGL/gl3.h</code> on macOS) instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_ES1"></a><b>GLFW_INCLUDE_ES1</b> makes the GLFW header include the OpenGL ES 1.x <code>GLES/gl.h</code> header instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_ES2"></a><b>GLFW_INCLUDE_ES2</b> makes the GLFW header include the OpenGL ES 2.0 <code>GLES2/gl2.h</code> header instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_ES3"></a><b>GLFW_INCLUDE_ES3</b> makes the GLFW header include the OpenGL ES 3.0 <code>GLES3/gl3.h</code> header instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_ES31"></a><b>GLFW_INCLUDE_ES31</b> makes the GLFW header include the OpenGL ES 3.1 <code>GLES3/gl31.h</code> header instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_ES32"></a><b>GLFW_INCLUDE_ES32</b> makes the GLFW header include the OpenGL ES 3.2 <code>GLES3/gl32.h</code> header instead of the regular OpenGL header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_NONE"></a><b>GLFW_INCLUDE_NONE</b> makes the GLFW header not include any OpenGL or OpenGL ES API header. This is useful in combination with an extension loading library.</p>
+<p >If none of the above inclusion macros are defined, the standard OpenGL <code>GL/gl.h</code> header (<code>OpenGL/gl.h</code> on macOS) is included, unless GLFW detects the inclusion guards of any OpenGL, OpenGL ES or extension loader header it knows about.</p>
+<p >The following macros control the inclusion of additional API headers. Any number of these may be defined simultaneously, and/or together with one of the above macros.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_VULKAN"></a><b>GLFW_INCLUDE_VULKAN</b> makes the GLFW header include the Vulkan <code>vulkan/vulkan.h</code> header in addition to any selected OpenGL or OpenGL ES header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_GLEXT"></a><b>GLFW_INCLUDE_GLEXT</b> makes the GLFW header include the appropriate extension header for the OpenGL or OpenGL ES header selected above after and in addition to that header.</p>
+<p ><a class="anchor" id="GLFW_INCLUDE_GLU"></a><b>GLFW_INCLUDE_GLU</b> makes the header include the GLU header in addition to the header selected above. This should only be used with the standard OpenGL header and only for compatibility with legacy code. GLU has been deprecated and should not be used in new code.</p>
+<dl class="section note"><dt>Note</dt><dd>None of these macros may be defined during the compilation of GLFW itself. If your build includes GLFW and you define any these in your build files, make sure they are not applied to the GLFW sources.</dd></dl>
+<h1><a class="anchor" id="build_link"></a>
+Link with the right libraries</h1>
+<p >GLFW is essentially a wrapper of various platform-specific APIs and therefore needs to link against many different system libraries. If you are using GLFW as a shared library / dynamic library / DLL then it takes care of these links. However, if you are using GLFW as a static library then your executable will need to link against these libraries.</p>
+<p >On Windows and macOS, the list of system libraries is static and can be hard-coded into your build environment. See the section for your development environment below. On Linux and other Unix-like operating systems, the list varies but can be retrieved in various ways as described below.</p>
+<p >A good general introduction to linking is <a href="https://www.lurklurk.org/linkers/linkers.html">Beginner's Guide to Linkers</a> by David Drysdale.</p>
+<h2><a class="anchor" id="build_link_win32"></a>
+With MinGW or Visual C++ on Windows</h2>
+<p >The static version of the GLFW library is named <code>glfw3</code>. When using this version, it is also necessary to link with some libraries that GLFW uses.</p>
+<p >When using MinGW to link an application with the static version of GLFW, you must also explicitly link with <code>gdi32</code>. Other toolchains including MinGW-w64 include it in the set of default libraries along with other dependencies like <code>user32</code> and <code>kernel32</code>.</p>
+<p >The link library for the GLFW DLL is named <code>glfw3dll</code>. When compiling an application that uses the DLL version of GLFW, you need to define the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro <em>before</em> any inclusion of the GLFW header. This can be done either with a compiler switch or by defining it in your source code.</p>
+<h2><a class="anchor" id="build_link_cmake_source"></a>
+With CMake and GLFW source</h2>
+<p >This section is about using CMake to compile and link GLFW along with your application. If you want to use an installed binary instead, see <a class="el" href="build_guide.html#build_link_cmake_package">With CMake and installed GLFW binaries</a>.</p>
+<p >With a few changes to your <code>CMakeLists.txt</code> you can have the GLFW source tree built along with your application.</p>
+<p >When including GLFW as part of your build, you probably don't want to build the GLFW tests, examples and documentation. To disable these, set the corresponding cache variables before adding the GLFW source tree.</p>
+<div class="fragment"><div class="line">set(GLFW_BUILD_DOCS OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
+<div class="line">set(GLFW_BUILD_TESTS OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
+<div class="line">set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL <span class="stringliteral">&quot;&quot;</span> FORCE)</div>
+</div><!-- fragment --><p >Add the root directory of the GLFW source tree to your project. This will add the <code>glfw</code> target to your project.</p>
+<div class="fragment"><div class="line">add_subdirectory(path/to/glfw)</div>
+</div><!-- fragment --><p >Once GLFW has been added, link your application against the <code>glfw</code> target. This adds the GLFW library and its link-time dependencies as it is currently configured, the include directory for the GLFW header and, when applicable, the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro.</p>
+<div class="fragment"><div class="line">target_link_libraries(myapp glfw)</div>
+</div><!-- fragment --><p >Note that the <code>glfw</code> target does not depend on OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, use the OpenGL CMake package.</p>
+<div class="fragment"><div class="line">find_package(OpenGL REQUIRED)</div>
+</div><!-- fragment --><p >If OpenGL is found, the <code>OpenGL::GL</code> target is added to your project, containing library and include directory paths. Link against this like any other library.</p>
+<div class="fragment"><div class="line">target_link_libraries(myapp OpenGL::GL)</div>
+</div><!-- fragment --><p >For a minimal example of a program and GLFW sources built with CMake, see the <a href="https://github.com/juliettef/GLFW-CMake-starter">GLFW CMake Starter</a> on GitHub.</p>
+<h2><a class="anchor" id="build_link_cmake_package"></a>
+With CMake and installed GLFW binaries</h2>
+<p >This section is about using CMake to link GLFW after it has been built and installed. If you want to build it along with your application instead, see <a class="el" href="build_guide.html#build_link_cmake_source">With CMake and GLFW source</a>.</p>
+<p >With a few changes to your <code>CMakeLists.txt</code> you can locate the package and target files generated when GLFW is installed.</p>
+<div class="fragment"><div class="line">find_package(glfw3 3.3 REQUIRED)</div>
+</div><!-- fragment --><p >Once GLFW has been added to the project, link against it with the <code>glfw</code> target. This adds the GLFW library and its link-time dependencies, the include directory for the GLFW header and, when applicable, the <a class="el" href="build_guide.html#GLFW_DLL">GLFW_DLL</a> macro.</p>
+<div class="fragment"><div class="line">target_link_libraries(myapp glfw)</div>
+</div><!-- fragment --><p >Note that the <code>glfw</code> target does not depend on OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, use the OpenGL CMake package.</p>
+<div class="fragment"><div class="line">find_package(OpenGL REQUIRED)</div>
+</div><!-- fragment --><p >If OpenGL is found, the <code>OpenGL::GL</code> target is added to your project, containing library and include directory paths. Link against this like any other library.</p>
+<div class="fragment"><div class="line">target_link_libraries(myapp OpenGL::GL)</div>
+</div><!-- fragment --><h2><a class="anchor" id="build_link_pkgconfig"></a>
+With makefiles and pkg-config on Unix</h2>
+<p >GLFW supports <a href="https://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</a>, and the <code>glfw3.pc</code> pkg-config file is generated when the GLFW library is built and is installed along with it. A pkg-config file describes all necessary compile-time and link-time flags and dependencies needed to use a library. When they are updated or if they differ between systems, you will get the correct ones automatically.</p>
+<p >A typical compile and link command-line when using the static version of the GLFW library may look like this:</p>
+<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --static --libs glfw3)</div>
+</div><!-- fragment --><p >If you are using the shared version of the GLFW library, omit the <code>--static</code> flag.</p>
+<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)</div>
+</div><!-- fragment --><p >You can also use the <code>glfw3.pc</code> file without installing it first, by using the <code>PKG_CONFIG_PATH</code> environment variable.</p>
+<div class="fragment"><div class="line">env PKG_CONFIG_PATH=path/to/glfw/src cc $(pkg-config --cflags glfw3) -o myprog myprog.c $(pkg-config --libs glfw3)</div>
+</div><!-- fragment --><p >The dependencies do not include OpenGL, as GLFW loads any OpenGL, OpenGL ES or Vulkan libraries it needs at runtime. If your application calls OpenGL directly, instead of using a modern <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a>, you should add the <code>gl</code> pkg-config package.</p>
+<div class="fragment"><div class="line">cc $(pkg-config --cflags glfw3 gl) -o myprog myprog.c $(pkg-config --libs glfw3 gl)</div>
+</div><!-- fragment --><h2><a class="anchor" id="build_link_xcode"></a>
+With Xcode on macOS</h2>
+<p >If you are using the dynamic library version of GLFW, add it to the project dependencies.</p>
+<p >If you are using the static library version of GLFW, add it and the Cocoa, OpenGL and IOKit frameworks to the project as dependencies. They can all be found in <code>/System/Library/Frameworks</code>.</p>
+<h2><a class="anchor" id="build_link_osx"></a>
+With command-line on macOS</h2>
+<p >It is recommended that you use <a class="el" href="build_guide.html#build_link_pkgconfig">pkg-config</a> when building from the command line on macOS. That way you will get any new dependencies added automatically. If you still wish to build manually, you need to add the required frameworks and libraries to your command-line yourself using the <code>-l</code> and <code>-framework</code> switches.</p>
+<p >If you are using the dynamic GLFW library, which is named <code>libglfw.3.dylib</code>, do:</p>
+<div class="fragment"><div class="line">cc -o myprog myprog.c -lglfw -framework Cocoa -framework OpenGL -framework IOKit</div>
+</div><!-- fragment --><p >If you are using the static library, named <code>libglfw3.a</code>, substitute <code>-lglfw3</code> for <code>-lglfw</code>.</p>
+<p >Note that you do not add the <code>.framework</code> extension to a framework when linking against it from the command-line.</p>
+<dl class="section note"><dt>Note</dt><dd>Your machine may have <code>libGL.*.dylib</code> style OpenGL library, but that is for the X Window System and will not work with the macOS native version of GLFW. </dd></dl>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/closed.png b/libs/glfw-3.3.8/docs/html/closed.png
new file mode 100644
index 0000000..98cc2c9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/closed.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/compat_8dox.html b/libs/glfw-3.3.8/docs/html/compat_8dox.html
new file mode 100644
index 0000000..64a2e2e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/compat_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: compat.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">compat.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/compat_guide.html b/libs/glfw-3.3.8/docs/html/compat_guide.html
new file mode 100644
index 0000000..28e42ba
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/compat_guide.html
@@ -0,0 +1,145 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Standards conformance</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Standards conformance </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#compat_x11">X11 extensions, protocols and IPC standards</a></li>
+<li class="level1"><a href="#compat_wayland">Wayland protocols and IPC standards</a></li>
+<li class="level1"><a href="#compat_glx">GLX extensions</a></li>
+<li class="level1"><a href="#compat_wgl">WGL extensions</a></li>
+<li class="level1"><a href="#compat_osx">OpenGL on macOS</a></li>
+<li class="level1"><a href="#compat_vulkan">Vulkan loader and API</a></li>
+<li class="level1"><a href="#compat_wsi">Vulkan WSI extensions</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This guide describes the various API extensions used by this version of GLFW. It lists what are essentially implementation details, but which are nonetheless vital knowledge for developers intending to deploy their applications on a wide range of machines.</p>
+<p >The information in this guide is not a part of GLFW API, but merely preconditions for some parts of the library to function on a given machine. Any part of this information may change in future versions of GLFW and that will not be considered a breaking API change.</p>
+<h1><a class="anchor" id="compat_x11"></a>
+X11 extensions, protocols and IPC standards</h1>
+<p >As GLFW uses Xlib directly, without any intervening toolkit library, it has sole responsibility for interacting well with the many and varied window managers in use on Unix-like systems. In order for applications and window managers to work well together, a number of standards and conventions have been developed that regulate behavior outside the scope of the X11 API; most importantly the <a href="https://www.tronche.com/gui/x/icccm/">Inter-Client Communication Conventions Manual</a> (ICCCM) and <a href="https://standards.freedesktop.org/wm-spec/wm-spec-latest.html">Extended Window Manager Hints</a> (EWMH) standards.</p>
+<p >GLFW uses the <code>_MOTIF_WM_HINTS</code> window property to support borderless windows. If the running window manager does not support this property, the <code>GLFW_DECORATED</code> hint will have no effect.</p>
+<p >GLFW uses the ICCCM <code>WM_DELETE_WINDOW</code> protocol to intercept the user attempting to close the GLFW window. If the running window manager does not support this protocol, the close callback will never be called.</p>
+<p >GLFW uses the EWMH <code>_NET_WM_PING</code> protocol, allowing the window manager notify the user when the application has stopped responding, i.e. when it has ceased to process events. If the running window manager does not support this protocol, the user will not be notified if the application locks up.</p>
+<p >GLFW uses the EWMH <code>_NET_WM_STATE_FULLSCREEN</code> window state to tell the window manager to make the GLFW window full screen. If the running window manager does not support this state, full screen windows may not work properly. GLFW has a fallback code path in case this state is unavailable, but every window manager behaves slightly differently in this regard.</p>
+<p >GLFW uses the EWMH <code>_NET_WM_BYPASS_COMPOSITOR</code> window property to tell a compositing window manager to un-redirect full screen GLFW windows. If the running window manager uses compositing but does not support this property then additional copying may be performed for each buffer swap of full screen windows.</p>
+<p >GLFW uses the <a href="https://www.freedesktop.org/wiki/ClipboardManager/">clipboard manager protocol</a> to push a clipboard string (i.e. selection) owned by a GLFW window about to be destroyed to the clipboard manager. If there is no running clipboard manager, the clipboard string will be unavailable once the window has been destroyed.</p>
+<p >GLFW uses the <a href="https://www.freedesktop.org/wiki/Specifications/XDND/">X drag-and-drop protocol</a> to provide file drop events. If the application originating the drag does not support this protocol, drag and drop will not work.</p>
+<p >GLFW uses the XRandR 1.3 extension to provide multi-monitor support. If the running X server does not support this version of this extension, multi-monitor support will not function and only a single, desktop-spanning monitor will be reported.</p>
+<p >GLFW uses the XRandR 1.3 and Xf86vidmode extensions to provide gamma ramp support. If the running X server does not support either or both of these extensions, gamma ramp support will not function.</p>
+<p >GLFW uses the Xkb extension and detectable auto-repeat to provide keyboard input. If the running X server does not support this extension, a non-Xkb fallback path is used.</p>
+<p >GLFW uses the XInput2 extension to provide raw, non-accelerated mouse motion when the cursor is disabled. If the running X server does not support this extension, regular accelerated mouse motion will be used.</p>
+<p >GLFW uses both the XRender extension and the compositing manager to support transparent window framebuffers. If the running X server does not support this extension or there is no running compositing manager, the <code>GLFW_TRANSPARENT_FRAMEBUFFER</code> framebuffer hint will have no effect.</p>
+<h1><a class="anchor" id="compat_wayland"></a>
+Wayland protocols and IPC standards</h1>
+<p >As GLFW uses libwayland directly, without any intervening toolkit library, it has sole responsibility for interacting well with every compositor in use on Unix-like systems. Most of the features are provided by the core protocol, while cursor support is provided by the libwayland-cursor helper library, EGL integration by libwayland-egl, and keyboard handling by <a href="https://xkbcommon.org/">libxkbcommon</a>. In addition, GLFW uses some protocols from wayland-protocols to provide additional features if the compositor supports them.</p>
+<p >GLFW uses xkbcommon 0.5.0 to provide compose key support. When it has been built against an older xkbcommon, the compose key will be disabled even if it has been configured in the compositor.</p>
+<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/xdg-shell/xdg-shell.xml">xdg-shell protocol</a> to provide better window management. This protocol is part of wayland-protocols 1.12, and mandatory at build time.</p>
+<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/relative-pointer/relative-pointer-unstable-v1.xml">relative pointer protocol</a> alongside the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/pointer-constraints/pointer-constraints-unstable-v1.xml">pointer constraints protocol</a> to implement disabled cursor. These two protocols are part of wayland-protocols 1.1, and mandatory at build time. If the running compositor does not support both of these protocols, disabling the cursor will have no effect.</p>
+<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/idle-inhibit/idle-inhibit-unstable-v1.xml">idle inhibit protocol</a> to prohibit the screensaver from starting. This protocol is part of wayland-protocols 1.6, and mandatory at build time. If the running compositor does not support this protocol, the screensaver may start even for full screen windows.</p>
+<p >GLFW uses the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml">xdg-decoration protocol</a> to request decorations to be drawn around its windows. This protocol is part of wayland-protocols 1.15, and mandatory at build time. If the running compositor does not support this protocol, a very simple frame will be drawn by GLFW itself, using the <a href="https://cgit.freedesktop.org/wayland/wayland-protocols/tree/stable/viewporter/viewporter.xml">viewporter protocol</a> alongside <a href="https://cgit.freedesktop.org/wayland/wayland/tree/protocol/wayland.xml#n2598">subsurfaces</a>. This protocol is part of wayland-protocols 1.4, and mandatory at build time. If the running compositor does not support this protocol either, no decorations will be drawn around windows.</p>
+<h1><a class="anchor" id="compat_glx"></a>
+GLX extensions</h1>
+<p >The GLX API is the default API used to create OpenGL contexts on Unix-like systems using the X Window System.</p>
+<p >GLFW uses the GLX 1.3 <code>GLXFBConfig</code> functions to enumerate and select framebuffer pixel formats. If GLX 1.3 is not supported, <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> will fail.</p>
+<p >GLFW uses the <code>GLX_MESA_swap_control,</code> <code>GLX_EXT_swap_control</code> and <code>GLX_SGI_swap_control</code> extensions to provide vertical retrace synchronization (or <em>vsync</em>), in that order of preference. Where none of these extension are available, calling <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> will have no effect.</p>
+<p >GLFW uses the <code>GLX_ARB_multisample</code> extension to create contexts with multisampling anti-aliasing. Where this extension is unavailable, the <code>GLFW_SAMPLES</code> hint will have no effect.</p>
+<p >GLFW uses the <code>GLX_ARB_create_context</code> extension when available, even when creating OpenGL contexts of version 2.1 and below. Where this extension is unavailable, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will only be partially supported, the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint will have no effect, and setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to <code>GLFW_TRUE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
+<p >GLFW uses the <code>GLX_ARB_create_context_profile</code> extension to provide support for context profiles. Where this extension is unavailable, setting the <code>GLFW_OPENGL_PROFILE</code> hint to anything but <code>GLFW_OPENGL_ANY_PROFILE</code>, or setting <code>GLFW_CLIENT_API</code> to anything but <code>GLFW_OPENGL_API</code> or <code>GLFW_NO_API</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
+<p >GLFW uses the <code>GLX_ARB_context_flush_control</code> extension to provide control over whether a context is flushed when it is released (made non-current). Where this extension is unavailable, the <code>GLFW_CONTEXT_RELEASE_BEHAVIOR</code> hint will have no effect and the context will always be flushed when released.</p>
+<p >GLFW uses the <code>GLX_ARB_framebuffer_sRGB</code> and <code>GLX_EXT_framebuffer_sRGB</code> extensions to provide support for sRGB framebuffers. Where both of these extensions are unavailable, the <code>GLFW_SRGB_CAPABLE</code> hint will have no effect.</p>
+<h1><a class="anchor" id="compat_wgl"></a>
+WGL extensions</h1>
+<p >The WGL API is used to create OpenGL contexts on Microsoft Windows and other implementations of the Win32 API, such as Wine.</p>
+<p >GLFW uses either the <code>WGL_EXT_extension_string</code> or the <code>WGL_ARB_extension_string</code> extension to check for the presence of all other WGL extensions listed below. If both are available, the EXT one is preferred. If neither is available, no other extensions are used and many GLFW features related to context creation will have no effect or cause errors when used.</p>
+<p >GLFW uses the <code>WGL_EXT_swap_control</code> extension to provide vertical retrace synchronization (or <em>vsync</em>). Where this extension is unavailable, calling <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> will have no effect.</p>
+<p >GLFW uses the <code>WGL_ARB_pixel_format</code> and <code>WGL_ARB_multisample</code> extensions to create contexts with multisampling anti-aliasing. Where these extensions are unavailable, the <code>GLFW_SAMPLES</code> hint will have no effect.</p>
+<p >GLFW uses the <code>WGL_ARB_create_context</code> extension when available, even when creating OpenGL contexts of version 2.1 and below. Where this extension is unavailable, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will only be partially supported, the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint will have no effect, and setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to <code>GLFW_TRUE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
+<p >GLFW uses the <code>WGL_ARB_create_context_profile</code> extension to provide support for context profiles. Where this extension is unavailable, setting the <code>GLFW_OPENGL_PROFILE</code> hint to anything but <code>GLFW_OPENGL_ANY_PROFILE</code> will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail.</p>
+<p >GLFW uses the <code>WGL_ARB_context_flush_control</code> extension to provide control over whether a context is flushed when it is released (made non-current). Where this extension is unavailable, the <code>GLFW_CONTEXT_RELEASE_BEHAVIOR</code> hint will have no effect and the context will always be flushed when released.</p>
+<p >GLFW uses the <code>WGL_ARB_framebuffer_sRGB</code> and <code>WGL_EXT_framebuffer_sRGB</code> extensions to provide support for sRGB framebuffers. Where both of these extension are unavailable, the <code>GLFW_SRGB_CAPABLE</code> hint will have no effect.</p>
+<h1><a class="anchor" id="compat_osx"></a>
+OpenGL on macOS</h1>
+<p >Support for OpenGL 3.2 and above was introduced with OS X 10.7 and even then only forward-compatible, core profile contexts are supported. Support for OpenGL 4.1 was introduced with OS X 10.9, also limited to forward-compatible, core profile contexts. There is also still no mechanism for requesting debug contexts or no-error contexts. Versions of Mac OS X earlier than 10.7 support at most OpenGL version 2.1.</p>
+<p >Because of this, on OS X 10.7 and later, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail if given version 3.0 or 3.1. The <code>GLFW_OPENGL_FORWARD_COMPAT</code> hint must be set to <code>GLFW_TRUE</code> and the <code>GLFW_OPENGL_PROFILE</code> hint must be set to <code>GLFW_OPENGL_CORE_PROFILE</code> when creating OpenGL 3.2 and later contexts. The <code>GLFW_OPENGL_DEBUG_CONTEXT</code> and <code>GLFW_CONTEXT_NO_ERROR</code> hints are ignored.</p>
+<p >Also, on Mac OS X 10.6 and below, the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints will fail if given a version above 2.1, setting the <code>GLFW_OPENGL_PROFILE</code> or <code>GLFW_OPENGL_FORWARD_COMPAT</code> hints to a non-default value will cause <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> to fail and the <code>GLFW_OPENGL_DEBUG_CONTEXT</code> hint is ignored.</p>
+<h1><a class="anchor" id="compat_vulkan"></a>
+Vulkan loader and API</h1>
+<p >By default, GLFW uses the standard system-wide Vulkan loader to access the Vulkan API on all platforms except macOS. This is installed by both graphics drivers and Vulkan SDKs. If either the loader or at least one minimally functional ICD is missing, <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> will return <code>GLFW_FALSE</code> and all other Vulkan-related functions will fail with an <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error.</p>
+<h1><a class="anchor" id="compat_wsi"></a>
+Vulkan WSI extensions</h1>
+<p >The Vulkan WSI extensions are used to create Vulkan surfaces for GLFW windows on all supported platforms.</p>
+<p >GLFW uses the <code>VK_KHR_surface</code> and <code>VK_KHR_win32_surface</code> extensions to create surfaces on Microsoft Windows. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
+<p >GLFW uses the <code>VK_KHR_surface</code> and either the <code>VK_MVK_macos_surface</code> or <code>VK_EXT_metal_surface</code> extensions to create surfaces on macOS. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
+<p >GLFW uses the <code>VK_KHR_surface</code> and either the <code>VK_KHR_xlib_surface</code> or <code>VK_KHR_xcb_surface</code> extensions to create surfaces on X11. If <code>VK_KHR_surface</code> or both <code>VK_KHR_xlib_surface</code> and <code>VK_KHR_xcb_surface</code> are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail.</p>
+<p >GLFW uses the <code>VK_KHR_surface</code> and <code>VK_KHR_wayland_surface</code> extensions to create surfaces on Wayland. If any of these extensions are not available, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> will return an empty list and window surface creation will fail. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/compile_8dox.html b/libs/glfw-3.3.8/docs/html/compile_8dox.html
new file mode 100644
index 0000000..35f284a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/compile_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: compile.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">compile.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/compile_guide.html b/libs/glfw-3.3.8/docs/html/compile_guide.html
new file mode 100644
index 0000000..3a28819
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/compile_guide.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Compiling GLFW</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Compiling GLFW </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#compile_cmake">Using CMake</a><ul><li class="level2"><a href="#compile_deps">Installing dependencies</a><ul><li class="level3"><a href="#compile_deps_x11">Dependencies for X11 on Unix-like systems</a></li>
+<li class="level3"><a href="#compile_deps_wayland">Dependencies for Wayland on Unix-like systems</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#compile_generate">Generating build files with CMake</a><ul><li class="level3"><a href="#compile_generate_gui">Generating files with the CMake GUI</a></li>
+<li class="level3"><a href="#compile_generate_cli">Generating files with the CMake command-line tool</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#compile_compile">Compiling the library</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#compile_options">CMake options</a><ul><li class="level2"><a href="#compile_options_shared">Shared CMake options</a></li>
+<li class="level2"><a href="#compile_options_win32">Windows specific CMake options</a></li>
+<li class="level2"><a href="#compile_options_wayland">Wayland specific CMake options</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#compile_mingw_cross">Cross-compilation with CMake and MinGW</a></li>
+<li class="level1"><a href="#compile_manual">Compiling GLFW manually</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This is about compiling the GLFW library itself. For information on how to build applications that use GLFW, see <a class="el" href="build_guide.html">Building applications</a>.</p>
+<h1><a class="anchor" id="compile_cmake"></a>
+Using CMake</h1>
+<dl class="section note"><dt>Note</dt><dd>GLFW behaves like most other libraries that use CMake so this guide mostly describes the basic configure/generate/compile sequence. If you are already familiar with this from other projects, you may want to focus on the <a class="el" href="compile_guide.html#compile_deps">Installing dependencies</a> and <a class="el" href="compile_guide.html#compile_options">CMake options</a> sections for GLFW-specific information.</dd></dl>
+<p>GLFW uses <a href="https://cmake.org/">CMake</a> to generate project files or makefiles for your chosen development environment. To compile GLFW, first generate these files with CMake and then use them to compile the GLFW library.</p>
+<p >If you are on Windows and macOS you can <a href="https://cmake.org/download/">download CMake</a> from their site.</p>
+<p >If you are on a Unix-like system such as Linux, FreeBSD or Cygwin or have a package system like Fink, MacPorts or Homebrew, you can install its CMake package.</p>
+<p >CMake is a complex tool and this guide will only show a few of the possible ways to set up and compile GLFW. The CMake project has their own much more detailed <a href="https://cmake.org/cmake/help/latest/guide/user-interaction/">CMake user guide</a> that includes everything in this guide not specific to GLFW. It may be a useful companion to this one.</p>
+<h2><a class="anchor" id="compile_deps"></a>
+Installing dependencies</h2>
+<p >The C/C++ development environments in Visual Studio, Xcode and MinGW come with all necessary dependencies for compiling GLFW, but on Unix-like systems like Linux and FreeBSD you will need a few extra packages.</p>
+<h3><a class="anchor" id="compile_deps_x11"></a>
+Dependencies for X11 on Unix-like systems</h3>
+<p >To compile GLFW for X11, you need to have the X11 development packages installed. They are not needed to build or run programs that use GLFW.</p>
+<p >On Debian and derivates like Ubuntu and Linux Mint the <code>xorg-dev</code> meta-package pulls in the development packages for all of X11.</p>
+<div class="fragment"><div class="line">sudo apt install xorg-dev</div>
+</div><!-- fragment --><p >On Fedora and derivatives like Red Hat the X11 extension packages <code>libXcursor-devel</code>, <code>libXi-devel</code>, <code>libXinerama-devel</code> and <code>libXrandr-devel</code> required by GLFW pull in all its other dependencies.</p>
+<div class="fragment"><div class="line">sudo dnf install libXcursor-devel libXi-devel libXinerama-devel libXrandr-devel</div>
+</div><!-- fragment --><p >On FreeBSD the X11 headers are installed along the end-user X11 packages, so if you have an X server running you should have the headers as well. If not, install the <code>xorgproto</code> package.</p>
+<div class="fragment"><div class="line">pkg install xorgproto</div>
+</div><!-- fragment --><p >On Cygwin the <code>libXcursor-devel</code>, <code>libXi-devel</code>, <code>libXinerama-devel</code>, <code>libXrandr-devel</code> and <code>libXrender-devel</code> packages in the Libs section of the GUI installer will install all the headers and other development related files GLFW requires for X11.</p>
+<p >Once you have the required depdendencies, move on to <a class="el" href="compile_guide.html#compile_generate">Generating build files with CMake</a>.</p>
+<h3><a class="anchor" id="compile_deps_wayland"></a>
+Dependencies for Wayland on Unix-like systems</h3>
+<p >To compile GLFW for Wayland, you need to have the Wayland and xkbcommon development packages installed. They are not needed to build or run programs that use GLFW.</p>
+<p >On Debian and derivates like Ubuntu and Linux Mint you will need the <code>libwayland-dev</code>, <code>libxkbcommon-dev</code>, <code>wayland-protocols</code> and <code>extra-cmake-modules</code> packages.</p>
+<div class="fragment"><div class="line">sudo apt install libwayland-dev libxkbcommon-dev wayland-protocols extra-cmake-modules</div>
+</div><!-- fragment --><p >On Fedora and derivatives like Red Hat you will need the <code>wayland-devel</code>, <code>libxkbcommon-devel</code>, <code>wayland-protocols-devel</code> and <code>extra-cmake-modules</code> packages.</p>
+<div class="fragment"><div class="line">sudo dnf install wayland-devel libxkbcommon-devel wayland-protocols-devel extra-cmake-modules</div>
+</div><!-- fragment --><p >On FreeBSD you will need the <code>wayland</code>, <code>libxkbcommon</code>, <code>wayland-protocols</code> and <code>kf5-extra-cmake-modules</code> packages.</p>
+<div class="fragment"><div class="line">pkg install wayland libxkbcommon wayland-protocols kf5-extra-cmake-modules</div>
+</div><!-- fragment --><p >Once you have the required depdendencies, move on to <a class="el" href="compile_guide.html#compile_generate">Generating build files with CMake</a>.</p>
+<h2><a class="anchor" id="compile_generate"></a>
+Generating build files with CMake</h2>
+<p >Once you have all necessary dependencies it is time to generate the project files or makefiles for your development environment. CMake needs two paths for this:</p>
+<ul>
+<li>the path to the root directory of the GLFW source tree (not its <code>src</code> subdirectory)</li>
+<li>the path to the directory where the generated build files and compiled binaries will be placed</li>
+</ul>
+<p >If these are the same, it is called an in-tree build, otherwise it is called an out-of-tree build.</p>
+<p >Out-of-tree builds are recommended as they avoid cluttering up the source tree. They also allow you to have several build directories for different configurations all using the same source tree.</p>
+<p >A common pattern when building a single configuration is to have a build directory named <code>build</code> in the root of the source tree.</p>
+<h3><a class="anchor" id="compile_generate_gui"></a>
+Generating files with the CMake GUI</h3>
+<p >Start the CMake GUI and set the paths to the source and build directories described above. Then press <em>Configure</em> and <em>Generate</em>.</p>
+<p >If you wish change any CMake variables in the list, press <em>Configure</em> and then <em>Generate</em> to have the new values take effect. The variable list will be populated after the first configure step.</p>
+<p >By default GLFW will use X11 on Linux and other Unix-like systems other than macOS. To use Wayland instead, set the <code>GLFW_USE_WAYLAND</code> option in the GLFW section of the variable list, then apply the new value as described above.</p>
+<p >Once you have generated the project files or makefiles for your chosen development environment, move on to <a class="el" href="compile_guide.html#compile_compile">Compiling the library</a>.</p>
+<h3><a class="anchor" id="compile_generate_cli"></a>
+Generating files with the CMake command-line tool</h3>
+<p >To make a build directory, pass the source and build directories to the <code>cmake</code> command. These can be relative or absolute paths. The build directory is created if it doesn't already exist.</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build</div>
+</div><!-- fragment --><p >It is common to name the build directory <code>build</code> and place it in the root of the source tree when only planning to build a single configuration.</p>
+<div class="fragment"><div class="line">cd path/to/glfw</div>
+<div class="line">cmake -S . -B build</div>
+</div><!-- fragment --><p >Without other flags these will generate Visual Studio project files on Windows and makefiles on other platforms. You can choose other targets using the <code>-G</code> flag.</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -G Xcode</div>
+</div><!-- fragment --><p >By default GLFW will use X11 on Linux and other Unix-like systems other than macOS. To use Wayland instead, set the <code>GLFW_USE_WAYLAND</code> CMake option.</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D GLFW_USE_WAYLAND=1</div>
+</div><!-- fragment --><p >Once you have generated the project files or makefiles for your chosen development environment, move on to <a class="el" href="compile_guide.html#compile_compile">Compiling the library</a>.</p>
+<h2><a class="anchor" id="compile_compile"></a>
+Compiling the library</h2>
+<p >You should now have all required dependencies and the project files or makefiles necessary to compile GLFW. Go ahead and compile the actual GLFW library with these files as you would with any other project.</p>
+<p >With Visual Studio open <code>GLFW.sln</code> and use the Build menu. With Xcode open <code>GLFW.xcodeproj</code> and use the Project menu.</p>
+<p >With Linux, macOS and other forms of Unix, run <code>make</code>.</p>
+<div class="fragment"><div class="line">cd path/to/build</div>
+<div class="line">make</div>
+</div><!-- fragment --><p >With MinGW, it is <code>mingw32-make</code>.</p>
+<div class="fragment"><div class="line">cd path/to/build</div>
+<div class="line">mingw32-make</div>
+</div><!-- fragment --><p >Any CMake build directory can also be built with the <code>cmake</code> command and the <code>--build</code> flag.</p>
+<div class="fragment"><div class="line">cmake --build path/to/build</div>
+</div><!-- fragment --><p >This will run the platform specific build tool the directory was generated for.</p>
+<p >Once the GLFW library is compiled you are ready to build your application, linking it to the GLFW library. See <a class="el" href="build_guide.html">Building applications</a> for more information.</p>
+<h1><a class="anchor" id="compile_options"></a>
+CMake options</h1>
+<p >The CMake files for GLFW provide a number of options, although not all are available on all supported platforms. Some of these are de facto standards among projects using CMake and so have no <code>GLFW_</code> prefix.</p>
+<p >If you are using the GUI version of CMake, these are listed and can be changed from there. If you are using the command-line version of CMake you can use the <code>ccmake</code> ncurses GUI to set options. Some package systems like Ubuntu and other distributions based on Debian GNU/Linux have this tool in a separate <code>cmake-curses-gui</code> package.</p>
+<p >Finally, if you don't want to use any GUI, you can set options from the <code>cmake</code> command-line with the <code>-D</code> flag.</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D BUILD_SHARED_LIBS=ON</div>
+</div><!-- fragment --><h2><a class="anchor" id="compile_options_shared"></a>
+Shared CMake options</h2>
+<p ><a class="anchor" id="BUILD_SHARED_LIBS"></a><b>BUILD_SHARED_LIBS</b> determines whether GLFW is built as a static library or as a DLL / shared library / dynamic library. This is disabled by default, producing a static GLFW library.</p>
+<p ><a class="anchor" id="GLFW_BUILD_EXAMPLES"></a><b>GLFW_BUILD_EXAMPLES</b> determines whether the GLFW examples are built along with the library.</p>
+<p ><a class="anchor" id="GLFW_BUILD_TESTS"></a><b>GLFW_BUILD_TESTS</b> determines whether the GLFW test programs are built along with the library.</p>
+<p ><a class="anchor" id="GLFW_BUILD_DOCS"></a><b>GLFW_BUILD_DOCS</b> determines whether the GLFW documentation is built along with the library. This is enabled by default if <a href="https://www.doxygen.nl/">Doxygen</a> is found by CMake during configuration.</p>
+<p ><a class="anchor" id="GLFW_VULKAN_STATIC"></a><b>GLFW_VULKAN_STATIC</b> determines whether to use the Vulkan loader linked directly with the application. This is disabled by default.</p>
+<h2><a class="anchor" id="compile_options_win32"></a>
+Windows specific CMake options</h2>
+<p ><a class="anchor" id="USE_MSVC_RUNTIME_LIBRARY_DLL"></a><b>USE_MSVC_RUNTIME_LIBRARY_DLL</b> determines whether to use the DLL version or the static library version of the Visual C++ runtime library. When enabled, the DLL version of the Visual C++ library is used. This is enabled by default.</p>
+<p >On CMake 3.15 and later you can set the standard CMake <a href="https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html">CMAKE_MSVC_RUNTIME_LIBRARY</a> variable instead of this GLFW-specific option.</p>
+<p ><a class="anchor" id="GLFW_USE_HYBRID_HPG"></a><b>GLFW_USE_HYBRID_HPG</b> determines whether to export the <code>NvOptimusEnablement</code> and <code>AmdPowerXpressRequestHighPerformance</code> symbols, which force the use of the high-performance GPU on Nvidia Optimus and AMD PowerXpress systems. These symbols need to be exported by the EXE to be detected by the driver, so the override will not work if GLFW is built as a DLL. This is disabled by default, letting the operating system and driver decide.</p>
+<h2><a class="anchor" id="compile_options_wayland"></a>
+Wayland specific CMake options</h2>
+<p ><a class="anchor" id="GLFW_USE_WAYLAND"></a><b>GLFW_USE_WAYLAND</b> determines whether to compile the library for Wayland. This option is only available on Linux and other Unix-like systems other than macOS. This is disabled by default.</p>
+<h1><a class="anchor" id="compile_mingw_cross"></a>
+Cross-compilation with CMake and MinGW</h1>
+<p >Both Cygwin and many Linux distributions have MinGW or MinGW-w64 packages. For example, Cygwin has the <code>mingw64-i686-gcc</code> and <code>mingw64-x86_64-gcc</code> packages for 32- and 64-bit version of MinGW-w64, while Debian GNU/Linux and derivatives like Ubuntu have the <code>mingw-w64</code> package for both.</p>
+<p >GLFW has CMake toolchain files in the <code>CMake</code> subdirectory that set up cross-compilation of Windows binaries. To use these files you set the <code>CMAKE_TOOLCHAIN_FILE</code> CMake variable with the <code>-D</code> flag add an option when configuring and generating the build files.</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=path/to/file</div>
+</div><!-- fragment --><p >The exact toolchain file to use depends on the prefix used by the MinGW or MinGW-w64 binaries on your system. You can usually see this in the /usr directory. For example, both the Ubuntu and Cygwin MinGW-w64 packages have <code>/usr/x86_64-w64-mingw32</code> for the 64-bit compilers, so the correct invocation would be:</p>
+<div class="fragment"><div class="line">cmake -S path/to/glfw -B path/to/build -D CMAKE_TOOLCHAIN_FILE=CMake/x86_64-w64-mingw32.cmake</div>
+</div><!-- fragment --><p >The path to the toolchain file is relative to the path to the GLFW source tree passed to the <code>-S</code> flag, not to the current directory.</p>
+<p >For more details see the <a href="https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html">CMake toolchain guide</a>.</p>
+<h1><a class="anchor" id="compile_manual"></a>
+Compiling GLFW manually</h1>
+<p >If you wish to compile GLFW without its CMake build environment then you will have to do at least some of the platform detection yourself. GLFW needs a configuration macro to be defined in order to know what window system it is being compiled for and also has optional, platform-specific ones for various features.</p>
+<p >When building with CMake, the <code>glfw_config.h</code> configuration header is generated based on the current platform and CMake options. The GLFW CMake environment defines <b>GLFW_USE_CONFIG_H</b>, which causes this header to be included by <code>internal.h</code>. Without this macro, GLFW will expect the necessary configuration macros to be defined on the command-line.</p>
+<p >The window creation API is used to create windows, handle input, monitors, gamma ramps and clipboard. The options are:</p>
+<ul>
+<li><b>_GLFW_COCOA</b> to use the Cocoa frameworks</li>
+<li><b>_GLFW_WIN32</b> to use the Win32 API</li>
+<li><b>_GLFW_X11</b> to use the X Window System</li>
+<li><b>_GLFW_WAYLAND</b> to use the Wayland API (experimental and incomplete)</li>
+<li><b>_GLFW_OSMESA</b> to use the OSMesa API (headless and non-interactive)</li>
+</ul>
+<p >If you are building GLFW as a shared library / dynamic library / DLL then you must also define <b>_GLFW_BUILD_DLL</b>. Otherwise, you must not define it.</p>
+<p >If you are linking the Vulkan loader directly with your application then you must also define <b>_GLFW_VULKAN_STATIC</b>. Otherwise, GLFW will attempt to use the external version.</p>
+<p >If you are using a custom name for the Vulkan, EGL, GLX, OSMesa, OpenGL, GLESv1 or GLESv2 library, you can override the default names by defining those you need of <b>_GLFW_VULKAN_LIBRARY</b>, <b>_GLFW_EGL_LIBRARY</b>, <b>_GLFW_GLX_LIBRARY</b>, <b>_GLFW_OSMESA_LIBRARY</b>, <b>_GLFW_OPENGL_LIBRARY</b>, <b>_GLFW_GLESV1_LIBRARY</b> and <b>_GLFW_GLESV2_LIBRARY</b>. Otherwise, GLFW will use the built-in default names.</p>
+<dl class="section note"><dt>Note</dt><dd>None of the <a class="el" href="build_guide.html#build_macros">GLFW header option macros</a> may be defined during the compilation of GLFW. If you define any of these in your build files, make sure they are not applied to the GLFW sources. </dd></dl>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/context_8dox.html b/libs/glfw-3.3.8/docs/html/context_8dox.html
new file mode 100644
index 0000000..89cb318
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/context_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: context.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">context.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/context_guide.html b/libs/glfw-3.3.8/docs/html/context_guide.html
new file mode 100644
index 0000000..04c9c09
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/context_guide.html
@@ -0,0 +1,251 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Context guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Context guide </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#context_object">Context objects</a><ul><li class="level2"><a href="#context_hints">Context creation hints</a></li>
+<li class="level2"><a href="#context_sharing">Context object sharing</a></li>
+<li class="level2"><a href="#context_offscreen">Offscreen contexts</a></li>
+<li class="level2"><a href="#context_less">Windows without contexts</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#context_current">Current context</a></li>
+<li class="level1"><a href="#context_swap">Buffer swapping</a></li>
+<li class="level1"><a href="#context_glext">OpenGL and OpenGL ES extensions</a><ul><li class="level2"><a href="#context_glext_auto">Loading extension with a loader library</a></li>
+<li class="level2"><a href="#context_glext_manual">Loading extensions manually</a><ul><li class="level3"><a href="#context_glext_header">The glext.h header</a></li>
+<li class="level3"><a href="#context_glext_string">Checking for extensions</a></li>
+<li class="level3"><a href="#context_glext_proc">Fetching function pointers</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><p >This guide introduces the OpenGL and OpenGL ES context related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__context.html">Context reference</a>. There are also guides for the other areas of the GLFW API.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<h1><a class="anchor" id="context_object"></a>
+Context objects</h1>
+<p >A window object encapsulates both a top-level window and an OpenGL or OpenGL ES context. It is created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>. See <a class="el" href="window_guide.html#window_creation">Window creation</a> for more information.</p>
+<p >As the window and context are inseparably linked, the window object also serves as the context handle.</p>
+<p >To test the creation of various kinds of contexts and see their properties, run the <code>glfwinfo</code> test program.</p>
+<dl class="section note"><dt>Note</dt><dd>Vulkan does not have a context and the Vulkan instance is created via the Vulkan API itself. If you will be using Vulkan to render to a window, disable context creation by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>. For more information, see the <a class="el" href="vulkan_guide.html">Vulkan guide</a>.</dd></dl>
+<h2><a class="anchor" id="context_hints"></a>
+Context creation hints</h2>
+<p >There are a number of hints, specified using <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>, related to what kind of context is created. See <a class="el" href="window_guide.html#window_hints_ctx">context related hints</a> in the window guide.</p>
+<h2><a class="anchor" id="context_sharing"></a>
+Context object sharing</h2>
+<p >When creating a window and its OpenGL or OpenGL ES context with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, you can specify another window whose context the new one should share its objects (textures, vertex and element buffers, etc.) with.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* second_window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Second Window&quot;</span>, NULL, first_window);</div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><p >Object sharing is implemented by the operating system and graphics driver. On platforms where it is possible to choose which types of objects are shared, GLFW requests that all types are shared.</p>
+<p >See the relevant chapter of the <a href="https://www.opengl.org/registry/">OpenGL</a> or <a href="https://www.khronos.org/opengles/">OpenGL ES</a> reference documents for more information. The name and number of this chapter unfortunately varies between versions and APIs, but has at times been named <em>Shared Objects and Multiple Contexts</em>.</p>
+<p >GLFW comes with a barebones object sharing example program called <code>sharing</code>.</p>
+<h2><a class="anchor" id="context_offscreen"></a>
+Offscreen contexts</h2>
+<p >GLFW doesn't support creating contexts without an associated window. However, contexts with hidden windows can be created with the <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* offscreen_context = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;&quot;</span>, NULL, NULL);</div>
+<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:321</div></div>
+<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+<div class="ttc" id="agroup__window_html_gafb3cdc45297e06d8f1eb13adc69ca6c4"><div class="ttname"><a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a></div><div class="ttdeci">#define GLFW_VISIBLE</div><div class="ttdoc">Window visibility window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:814</div></div>
+</div><!-- fragment --><p >The window never needs to be shown and its context can be used as a plain offscreen context. Depending on the window manager, the size of a hidden window's framebuffer may not be usable or modifiable, so framebuffer objects are recommended for rendering with such contexts.</p>
+<p >You should still <a class="el" href="input_guide.html#events">process events</a> as long as you have at least one window, even if none of them are visible.</p>
+<p ><b>macOS:</b> The first time a window is created the menu bar is created. This is not desirable for example when writing a command-line only application. Menu bar creation can be disabled with the <a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> init hint.</p>
+<h2><a class="anchor" id="context_less"></a>
+Windows without contexts</h2>
+<p >You can disable context creation by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>. Windows without contexts must not be passed to <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> or <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</p>
+<h1><a class="anchor" id="context_current"></a>
+Current context</h1>
+<p >Before you can make OpenGL or OpenGL ES calls, you need to have a current context of the correct type. A context can only be current for a single thread at a time, and a thread can only have a single context current at a time.</p>
+<p >When moving a context between threads, you must make it non-current on the old thread before making it current on the new one.</p>
+<p >The context of a window is made current with <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
+<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
+</div><!-- fragment --><p >The window of the current context is returned by <a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>();</div>
+<div class="ttc" id="agroup__context_html_gad94e80185397a6cf5fe2ab30567af71c"><div class="ttname"><a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></div><div class="ttdeci">GLFWwindow * glfwGetCurrentContext(void)</div><div class="ttdoc">Returns the window whose context is current on the calling thread.</div></div>
+</div><!-- fragment --><p >The following GLFW functions require a context to be current. Calling any these functions without a current context will generate a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
+<ul>
+<li><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></li>
+<li><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></li>
+<li><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></li>
+</ul>
+<h1><a class="anchor" id="context_swap"></a>
+Buffer swapping</h1>
+<p >See <a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> in the window guide.</p>
+<h1><a class="anchor" id="context_glext"></a>
+OpenGL and OpenGL ES extensions</h1>
+<p >One of the benefits of OpenGL and OpenGL ES is their extensibility. Hardware vendors may include extensions in their implementations that extend the API before that functionality is included in a new version of the OpenGL or OpenGL ES specification, and some extensions are never included and remain as extensions until they become obsolete.</p>
+<p >An extension is defined by:</p>
+<ul>
+<li>An extension name (e.g. <code>GL_ARB_gl_spirv</code>)</li>
+<li>New OpenGL tokens (e.g. <code>GL_SPIR_V_BINARY_ARB</code>)</li>
+<li>New OpenGL functions (e.g. <code>glSpecializeShaderARB</code>)</li>
+</ul>
+<p >Note the <code>ARB</code> affix, which stands for Architecture Review Board and is used for official extensions. The extension above was created by the ARB, but there are many different affixes, like <code>NV</code> for Nvidia and <code>AMD</code> for, well, AMD. Any group may also use the generic <code>EXT</code> affix. Lists of extensions, together with their specifications, can be found at the <a href="https://www.opengl.org/registry/">OpenGL Registry</a> and <a href="https://www.khronos.org/registry/gles/">OpenGL ES Registry</a>.</p>
+<h2><a class="anchor" id="context_glext_auto"></a>
+Loading extension with a loader library</h2>
+<p >An extension loader library is the easiest and best way to access both OpenGL and OpenGL ES extensions and modern versions of the core OpenGL or OpenGL ES APIs. They will take care of all the details of declaring and loading everything you need. One such library is <a href="https://github.com/Dav1dde/glad">glad</a> and there are several others.</p>
+<p >The following example will use glad but all extension loader libraries work similarly.</p>
+<p >First you need to generate the source files using the glad Python script. This example generates a loader for any version of OpenGL, which is the default for both GLFW and glad, but loaders for OpenGL ES, as well as loaders for specific API versions and extension sets can be generated. The generated files are written to the <code>output</code> directory.</p>
+<div class="fragment"><div class="line">python main.py --generator c --no-loader --out-path output</div>
+</div><!-- fragment --><p >The <code>--no-loader</code> option is added because GLFW already provides a function for loading OpenGL and OpenGL ES function pointers, one that automatically uses the selected context creation API, and glad can call this instead of having to implement its own. There are several other command-line options as well. See the glad documentation for details.</p>
+<p >Add the generated <code>output/src/glad.c</code>, <code>output/include/glad/glad.h</code> and <code>output/include/KHR/khrplatform.h</code> files to your build. Then you need to include the glad header file, which will replace the OpenGL header of your development environment. By including the glad header before the GLFW header, it suppresses the development environment's OpenGL or OpenGL ES header.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/glad.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
+</div><!-- fragment --><p >Finally you need to initialize glad once you have a suitable current context.</p>
+<div class="fragment"><div class="line">window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Window&quot;</span>, NULL, NULL);</div>
+<div class="line"><span class="keywordflow">if</span> (!window)</div>
+<div class="line">{</div>
+<div class="line"> ...</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
+<div class="line"> </div>
+<div class="line">gladLoadGLLoader((GLADloadproc) <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
+<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
+</div><!-- fragment --><p >Once glad has been loaded, you have access to all OpenGL core and extension functions supported by both the context you created and the glad loader you generated and you are ready to start rendering.</p>
+<p >You can specify a minimum required OpenGL or OpenGL ES version with <a class="el" href="window_guide.html#window_hints_ctx">context hints</a>. If your needs are more complex, you can check the actual OpenGL or OpenGL ES version with <a class="el" href="window_guide.html#window_attribs_ctx">context attributes</a>, or you can check whether a specific version is supported by the current context with the <code>GLAD_GL_VERSION_x_x</code> booleans.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (GLAD_GL_VERSION_3_2)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Call OpenGL 3.2+ specific code</span></div>
+<div class="line">}</div>
+</div><!-- fragment --><p >To check whether a specific extension is supported, use the <code>GLAD_GL_xxx</code> booleans.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (GLAD_GL_ARB_gl_spirv)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Use GL_ARB_gl_spirv</span></div>
+<div class="line">}</div>
+</div><!-- fragment --><h2><a class="anchor" id="context_glext_manual"></a>
+Loading extensions manually</h2>
+<p ><b>Do not use this technique</b> unless it is absolutely necessary. An <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> will save you a ton of tedious, repetitive, error prone work.</p>
+<p >To use a certain extension, you must first check whether the context supports that extension and then, if it introduces new functions, retrieve the pointers to those functions. GLFW provides <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> and <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> for manual loading of extensions and new API functions.</p>
+<p >This section will demonstrate manual loading of OpenGL extensions. The loading of OpenGL ES extensions is identical except for the name of the extension header.</p>
+<h3><a class="anchor" id="context_glext_header"></a>
+The glext.h header</h3>
+<p >The <code>glext.h</code> extension header is a continually updated file that defines the interfaces for all OpenGL extensions. The latest version of this can always be found at the <a href="https://www.opengl.org/registry/">OpenGL Registry</a>. There are also extension headers for the various versions of OpenGL ES at the <a href="https://www.khronos.org/registry/gles/">OpenGL ES Registry</a>. It it strongly recommended that you use your own copy of the extension header, as the one included in your development environment may be several years out of date and may not include the extensions you wish to use.</p>
+<p >The header defines function pointer types for all functions of all extensions it supports. These have names like <code>PFNGLSPECIALIZESHADERARBPROC</code> (for <code>glSpecializeShaderARB</code>), i.e. the name is made uppercase and <code>PFN</code> (pointer to function) and <code>PROC</code> (procedure) are added to the ends.</p>
+<p >To include the extension header, define <a class="el" href="build_guide.html#GLFW_INCLUDE_GLEXT">GLFW_INCLUDE_GLEXT</a> before including the GLFW header.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLEXT</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+</div><!-- fragment --><h3><a class="anchor" id="context_glext_string"></a>
+Checking for extensions</h3>
+<p >A given machine may not actually support the extension (it may have older drivers or a graphics card that lacks the necessary hardware features), so it is necessary to check at run-time whether the context supports the extension. This is done with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="stringliteral">&quot;GL_ARB_gl_spirv&quot;</span>))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// The extension is supported by the current context</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__context_html_ga87425065c011cef1ebd6aac75e059dfa"><div class="ttname"><a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></div><div class="ttdeci">int glfwExtensionSupported(const char *extension)</div><div class="ttdoc">Returns whether the specified extension is available.</div></div>
+</div><!-- fragment --><p >The argument is a null terminated ASCII string with the extension name. If the extension is supported, <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> returns <code>GLFW_TRUE</code>, otherwise it returns <code>GLFW_FALSE</code>.</p>
+<h3><a class="anchor" id="context_glext_proc"></a>
+Fetching function pointers</h3>
+<p >Many extensions, though not all, require the use of new OpenGL functions. These functions often do not have entry points in the client API libraries of your operating system, making it necessary to fetch them at run time. You can retrieve pointers to these functions with <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>.</p>
+<div class="fragment"><div class="line">PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB = <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="stringliteral">&quot;glSpecializeShaderARB&quot;</span>);</div>
+</div><!-- fragment --><p >In general, you should avoid giving the function pointer variables the (exact) same name as the function, as this may confuse your linker. Instead, you can use a different prefix, like above, or some other naming scheme.</p>
+<p >Now that all the pieces have been introduced, here is what they might look like when used together.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLEXT</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="line"> </div>
+<div class="line"><span class="preprocessor">#define glSpecializeShaderARB pfnSpecializeShaderARB</span></div>
+<div class="line">PFNGLSPECIALIZESHADERARBPROC pfnSpecializeShaderARB;</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">// Flag indicating whether the extension is supported</span></div>
+<div class="line"><span class="keywordtype">int</span> has_ARB_gl_spirv = 0;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> load_extensions(<span class="keywordtype">void</span>)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (<a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="stringliteral">&quot;GL_ARB_gl_spirv&quot;</span>))</div>
+<div class="line"> {</div>
+<div class="line"> pfnSpecializeShaderARB = (PFNGLSPECIALIZESHADERARBPROC)</div>
+<div class="line"> <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="stringliteral">&quot;glSpecializeShaderARB&quot;</span>);</div>
+<div class="line"> has_ARB_gl_spirv = 1;</div>
+<div class="line"> }</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">void</span> some_function(<span class="keywordtype">void</span>)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (has_ARB_gl_spirv)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// Now the extension function can be called as usual</span></div>
+<div class="line"> glSpecializeShaderARB(...);</div>
+<div class="line"> }</div>
+<div class="line">}</div>
+</div><!-- fragment --> </div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/deprecated.html b/libs/glfw-3.3.8/docs/html/deprecated.html
new file mode 100644
index 0000000..f516c9a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/deprecated.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Deprecated List</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Deprecated List </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock"><dl class="reflist">
+<dt>Global <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> )(GLFWwindow *window, unsigned int codepoint, int mods)</dt>
+<dd><a class="anchor" id="_deprecated000001"></a>Scheduled for removal in version 4.0. </dd>
+<dt>Global <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (GLFWwindow *window, GLFWcharmodsfun callback)</dt>
+<dd><a class="anchor" id="_deprecated000002"></a>Scheduled for removal in version 4.0.</dd>
+</dl>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/dir_1dfd43b3952c5bc1ba15d15b12afff7b.html b/libs/glfw-3.3.8/docs/html/dir_1dfd43b3952c5bc1ba15d15b12afff7b.html
new file mode 100644
index 0000000..ec0844b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/dir_1dfd43b3952c5bc1ba15d15b12afff7b.html
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: GLFW Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li><li class="navelem"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">GLFW Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="files" name="files"></a>
+Files</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html">glfw3.h</a> <a href="glfw3_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:glfw3_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The header of the GLFW 3 API. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">file &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3native_8h.html">glfw3native.h</a> <a href="glfw3native_8h_source.html">[code]</a></td></tr>
+<tr class="memdesc:glfw3native_8h"><td class="mdescLeft">&#160;</td><td class="mdescRight">The header of the native access functions. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/dir_4351554941a2744586042c1cf3cf139a.html b/libs/glfw-3.3.8/docs/html/dir_4351554941a2744586042c1cf3cf139a.html
new file mode 100644
index 0000000..bb36bd1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/dir_4351554941a2744586042c1cf3cf139a.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: glfw-3.3.8 Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">glfw-3.3.8 Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_fda32cf7bec00275262cb8799a618f76.html">docs</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html b/libs/glfw-3.3.8/docs/html/dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html
new file mode 100644
index 0000000..4a9295a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: include Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">include Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="subdirs" name="subdirs"></a>
+Directories</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">directory &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/dir_fda32cf7bec00275262cb8799a618f76.html b/libs/glfw-3.3.8/docs/html/dir_fda32cf7bec00275262cb8799a618f76.html
new file mode 100644
index 0000000..3464fd1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/dir_fda32cf7bec00275262cb8799a618f76.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: docs Directory Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_fda32cf7bec00275262cb8799a618f76.html">docs</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">docs Directory Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/doc.png b/libs/glfw-3.3.8/docs/html/doc.png
new file mode 100644
index 0000000..17edabf
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/doc.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/doxygen.css b/libs/glfw-3.3.8/docs/html/doxygen.css
new file mode 100644
index 0000000..2010785
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/doxygen.css
@@ -0,0 +1,1841 @@
+/* The standard CSS for doxygen 1.9.4 */
+
+body, table, div, p, dl {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+p.reference, p.definition {
+ font: 400 14px/22px Roboto,sans-serif;
+}
+
+/* @group Heading Levels */
+
+h1.groupheader {
+ font-size: 150%;
+}
+
+.title {
+ font: 400 14px/28px Roboto,sans-serif;
+ font-size: 150%;
+ font-weight: bold;
+ margin: 10px 2px;
+}
+
+h2.groupheader {
+ border-bottom: 1px solid #879ECB;
+ color: #354C7B;
+ font-size: 150%;
+ font-weight: normal;
+ margin-top: 1.75em;
+ padding-top: 8px;
+ padding-bottom: 4px;
+ width: 100%;
+}
+
+h3.groupheader {
+ font-size: 100%;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ -webkit-transition: text-shadow 0.5s linear;
+ -moz-transition: text-shadow 0.5s linear;
+ -ms-transition: text-shadow 0.5s linear;
+ -o-transition: text-shadow 0.5s linear;
+ transition: text-shadow 0.5s linear;
+ margin-right: 15px;
+}
+
+h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
+ text-shadow: 0 0 15px cyan;
+}
+
+dt {
+ font-weight: bold;
+}
+
+ul.multicol {
+ -moz-column-gap: 1em;
+ -webkit-column-gap: 1em;
+ column-gap: 1em;
+ -moz-column-count: 3;
+ -webkit-column-count: 3;
+ column-count: 3;
+}
+
+p.startli, p.startdd {
+ margin-top: 2px;
+}
+
+th p.starttd, th p.intertd, th p.endtd {
+ font-size: 100%;
+ font-weight: 700;
+}
+
+p.starttd {
+ margin-top: 0px;
+}
+
+p.endli {
+ margin-bottom: 0px;
+}
+
+p.enddd {
+ margin-bottom: 4px;
+}
+
+p.endtd {
+ margin-bottom: 2px;
+}
+
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
+/* @end */
+
+caption {
+ font-weight: bold;
+}
+
+span.legend {
+ font-size: 70%;
+ text-align: center;
+}
+
+h3.version {
+ font-size: 90%;
+ text-align: center;
+}
+
+div.navtab {
+ border-right: 1px solid #A3B4D7;
+ padding-right: 15px;
+ text-align: right;
+ line-height: 110%;
+}
+
+div.navtab table {
+ border-spacing: 0;
+}
+
+td.navtab {
+ padding-right: 6px;
+ padding-left: 6px;
+}
+td.navtabHL {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ padding-right: 6px;
+ padding-left: 6px;
+}
+
+td.navtabHL a, td.navtabHL a:visited {
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+a.navtab {
+ font-weight: bold;
+}
+
+div.qindex{
+ text-align: center;
+ width: 100%;
+ line-height: 140%;
+ font-size: 130%;
+ color: #A0A0A0;
+}
+
+dt.alphachar{
+ font-size: 180%;
+ font-weight: bold;
+}
+
+.alphachar a{
+ color: black;
+}
+
+.alphachar a:hover, .alphachar a:visited{
+ text-decoration: none;
+}
+
+.classindex dl {
+ padding: 25px;
+ column-count:1
+}
+
+.classindex dd {
+ display:inline-block;
+ margin-left: 50px;
+ width: 90%;
+ line-height: 1.15em;
+}
+
+.classindex dl.odd {
+ background-color: #F8F9FC;
+}
+
+@media(min-width: 1120px) {
+ .classindex dl {
+ column-count:2
+ }
+}
+
+@media(min-width: 1320px) {
+ .classindex dl {
+ column-count:3
+ }
+}
+
+
+/* @group Link Styling */
+
+a {
+ color: #3D578C;
+ font-weight: normal;
+ text-decoration: none;
+}
+
+.contents a:visited {
+ color: #4665A2;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+.contents a.qindexHL:visited {
+ color: #FFFFFF;
+}
+
+a.el {
+ font-weight: bold;
+}
+
+a.elRef {
+}
+
+a.code, a.code:visited, a.line, a.line:visited {
+ color: #4665A2;
+}
+
+a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited {
+ color: #4665A2;
+}
+
+a.code.hl_class { /* style for links to class names in code snippets */ }
+a.code.hl_struct { /* style for links to struct names in code snippets */ }
+a.code.hl_union { /* style for links to union names in code snippets */ }
+a.code.hl_interface { /* style for links to interface names in code snippets */ }
+a.code.hl_protocol { /* style for links to protocol names in code snippets */ }
+a.code.hl_category { /* style for links to category names in code snippets */ }
+a.code.hl_exception { /* style for links to exception names in code snippets */ }
+a.code.hl_service { /* style for links to service names in code snippets */ }
+a.code.hl_singleton { /* style for links to singleton names in code snippets */ }
+a.code.hl_concept { /* style for links to concept names in code snippets */ }
+a.code.hl_namespace { /* style for links to namespace names in code snippets */ }
+a.code.hl_package { /* style for links to package names in code snippets */ }
+a.code.hl_define { /* style for links to macro names in code snippets */ }
+a.code.hl_function { /* style for links to function names in code snippets */ }
+a.code.hl_variable { /* style for links to variable names in code snippets */ }
+a.code.hl_typedef { /* style for links to typedef names in code snippets */ }
+a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ }
+a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ }
+a.code.hl_signal { /* style for links to Qt signal names in code snippets */ }
+a.code.hl_slot { /* style for links to Qt slot names in code snippets */ }
+a.code.hl_friend { /* style for links to friend names in code snippets */ }
+a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ }
+a.code.hl_property { /* style for links to property names in code snippets */ }
+a.code.hl_event { /* style for links to event names in code snippets */ }
+a.code.hl_sequence { /* style for links to sequence names in code snippets */ }
+a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ }
+
+/* @end */
+
+dl.el {
+ margin-left: -1cm;
+}
+
+ul {
+ overflow: visible;
+}
+
+#side-nav ul {
+ overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+ overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+ text-align: left;
+ direction: ltr;
+ overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+ overflow-y: hidden;
+}
+
+pre.fragment {
+ border: 1px solid #C4CFE5;
+ background-color: #FBFCFD;
+ padding: 4px 6px;
+ margin: 4px 8px 4px 2px;
+ overflow: auto;
+ word-wrap: break-word;
+ font-size: 9pt;
+ line-height: 125%;
+ font-family: monospace, fixed;
+ font-size: 105%;
+}
+
+div.fragment {
+ padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+ margin: 4px 8px 4px 2px;
+ background-color: #FBFCFD;
+ border: 1px solid #C4CFE5;
+}
+
+div.line {
+ font-family: monospace, fixed;
+ font-size: 13px;
+ min-height: 13px;
+ line-height: 1.0;
+ text-wrap: unrestricted;
+ white-space: -moz-pre-wrap; /* Moz */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ white-space: pre-wrap; /* CSS3 */
+ word-wrap: break-word; /* IE 5.5+ */
+ text-indent: -53px;
+ padding-left: 53px;
+ padding-bottom: 0px;
+ margin: 0px;
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+div.line:after {
+ content:"\000A";
+ white-space: pre;
+}
+
+div.line.glow {
+ background-color: cyan;
+ box-shadow: 0 0 10px cyan;
+}
+
+
+span.lineno {
+ padding-right: 4px;
+ margin-right: 9px;
+ text-align: right;
+ border-right: 2px solid #0F0;
+ background-color: #E8E8E8;
+ white-space: pre;
+}
+span.lineno a {
+ background-color: #D8D8D8;
+}
+
+span.lineno a:hover {
+ background-color: #C8C8C8;
+}
+
+.lineno {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+div.ah, span.ah {
+ background-color: black;
+ font-weight: bold;
+ color: #FFFFFF;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ padding: 0.2em;
+ border: solid thin #333;
+ border-radius: 0.5em;
+ -webkit-border-radius: .5em;
+ -moz-border-radius: .5em;
+ box-shadow: 2px 2px 3px #999;
+ -webkit-box-shadow: 2px 2px 3px #999;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444));
+ background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%);
+}
+
+div.classindex ul {
+ list-style: none;
+ padding-left: 0;
+}
+
+div.classindex span.ai {
+ display: inline-block;
+}
+
+div.groupHeader {
+ margin-left: 16px;
+ margin-top: 12px;
+ font-weight: bold;
+}
+
+div.groupText {
+ margin-left: 16px;
+ font-style: italic;
+}
+
+body {
+ background-color: white;
+ color: black;
+ margin: 0;
+}
+
+div.contents {
+ margin-top: 10px;
+ margin-left: 12px;
+ margin-right: 8px;
+}
+
+td.indexkey {
+ background-color: #EBEFF6;
+ font-weight: bold;
+ border: 1px solid #C4CFE5;
+ margin: 2px 0px 2px 0;
+ padding: 2px 10px;
+ white-space: nowrap;
+ vertical-align: top;
+}
+
+td.indexvalue {
+ background-color: #EBEFF6;
+ border: 1px solid #C4CFE5;
+ padding: 2px 10px;
+ margin: 2px 0px;
+}
+
+tr.memlist {
+ background-color: #EEF1F7;
+}
+
+p.formulaDsp {
+ text-align: center;
+}
+
+img.formulaDsp {
+
+}
+
+img.formulaInl, img.inline {
+ vertical-align: middle;
+}
+
+div.center {
+ text-align: center;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding: 0px;
+}
+
+div.center img {
+ border: 0px;
+}
+
+address.footer {
+ text-align: right;
+ padding-right: 12px;
+}
+
+img.footer {
+ border: 0px;
+ vertical-align: middle;
+}
+
+.compoundTemplParams {
+ color: #4665A2;
+ font-size: 80%;
+ line-height: 120%;
+}
+
+/* @group Code Colorization */
+
+span.keyword {
+ color: #008000
+}
+
+span.keywordtype {
+ color: #604020
+}
+
+span.keywordflow {
+ color: #e08000
+}
+
+span.comment {
+ color: #800000
+}
+
+span.preprocessor {
+ color: #806020
+}
+
+span.stringliteral {
+ color: #002080
+}
+
+span.charliteral {
+ color: #008080
+}
+
+span.vhdldigit {
+ color: #ff00ff
+}
+
+span.vhdlchar {
+ color: #000000
+}
+
+span.vhdlkeyword {
+ color: #700070
+}
+
+span.vhdllogic {
+ color: #ff0000
+}
+
+blockquote {
+ background-color: #F7F8FB;
+ border-left: 2px solid #9CAFD4;
+ margin: 0 24px 0 4px;
+ padding: 0 12px 0 16px;
+}
+
+blockquote.DocNodeRTL {
+ border-left: 0;
+ border-right: 2px solid #9CAFD4;
+ margin: 0 4px 0 24px;
+ padding: 0 16px 0 12px;
+}
+
+/* @end */
+
+/*
+.search {
+ color: #003399;
+ font-weight: bold;
+}
+
+form.search {
+ margin-bottom: 0px;
+ margin-top: 0px;
+}
+
+input.search {
+ font-size: 75%;
+ color: #000080;
+ font-weight: normal;
+ background-color: #e8eef2;
+}
+*/
+
+td.tiny {
+ font-size: 75%;
+}
+
+.dirtab {
+ padding: 4px;
+ border-collapse: collapse;
+ border: 1px solid #A3B4D7;
+}
+
+th.dirtab {
+ background: #EBEFF6;
+ font-weight: bold;
+}
+
+hr {
+ height: 0px;
+ border: none;
+ border-top: 1px solid #4A6AAA;
+}
+
+hr.footer {
+ height: 1px;
+}
+
+/* @group Member Descriptions */
+
+table.memberdecls {
+ border-spacing: 0px;
+ padding: 0px;
+}
+
+.memberdecls td, .fieldtable tr {
+ -webkit-transition-property: background-color, box-shadow;
+ -webkit-transition-duration: 0.5s;
+ -moz-transition-property: background-color, box-shadow;
+ -moz-transition-duration: 0.5s;
+ -ms-transition-property: background-color, box-shadow;
+ -ms-transition-duration: 0.5s;
+ -o-transition-property: background-color, box-shadow;
+ -o-transition-duration: 0.5s;
+ transition-property: background-color, box-shadow;
+ transition-duration: 0.5s;
+}
+
+.memberdecls td.glow, .fieldtable tr.glow {
+ background-color: cyan;
+ box-shadow: 0 0 15px cyan;
+}
+
+.mdescLeft, .mdescRight,
+.memItemLeft, .memItemRight,
+.memTemplItemLeft, .memTemplItemRight, .memTemplParams {
+ background-color: #F9FAFC;
+ border: none;
+ margin: 4px;
+ padding: 1px 0 0 8px;
+}
+
+.mdescLeft, .mdescRight {
+ padding: 0px 8px 4px 8px;
+ color: #555;
+}
+
+.memSeparator {
+ border-bottom: 1px solid #DEE4F0;
+ line-height: 1px;
+ margin: 0px;
+ padding: 0px;
+}
+
+.memItemLeft, .memTemplItemLeft {
+ white-space: nowrap;
+}
+
+.memItemRight, .memTemplItemRight {
+ width: 100%;
+}
+
+.memTemplParams {
+ color: #4665A2;
+ white-space: nowrap;
+ font-size: 80%;
+}
+
+/* @end */
+
+/* @group Member Details */
+
+/* Styles for detailed member documentation */
+
+.memtitle {
+ padding: 8px;
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ margin-bottom: -1px;
+ background-image: url('nav_f.png');
+ background-repeat: repeat-x;
+ background-color: #E2E8F2;
+ line-height: 1.25;
+ font-weight: 300;
+ float:left;
+}
+
+.permalink
+{
+ font-size: 65%;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.memtemplate {
+ font-size: 80%;
+ color: #4665A2;
+ font-weight: normal;
+ margin-left: 9px;
+}
+
+.memnav {
+ background-color: #EBEFF6;
+ border: 1px solid #A3B4D7;
+ text-align: center;
+ margin: 2px;
+ margin-right: 15px;
+ padding: 2px;
+}
+
+.mempage {
+ width: 100%;
+}
+
+.memitem {
+ padding: 0;
+ margin-bottom: 10px;
+ margin-right: 5px;
+ -webkit-transition: box-shadow 0.5s linear;
+ -moz-transition: box-shadow 0.5s linear;
+ -ms-transition: box-shadow 0.5s linear;
+ -o-transition: box-shadow 0.5s linear;
+ transition: box-shadow 0.5s linear;
+ display: table !important;
+ width: 100%;
+}
+
+.memitem.glow {
+ box-shadow: 0 0 15px cyan;
+}
+
+.memname {
+ font-weight: 400;
+ margin-left: 6px;
+}
+
+.memname td {
+ vertical-align: bottom;
+}
+
+.memproto, dl.reflist dt {
+ border-top: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 0px 6px 0px;
+ color: #253555;
+ font-weight: bold;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ background-color: #DFE5F1;
+ /* opera specific markup */
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ border-top-right-radius: 4px;
+ /* firefox specific markup */
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ -moz-border-radius-topright: 4px;
+ /* webkit specific markup */
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ -webkit-border-top-right-radius: 4px;
+
+}
+
+.overload {
+ font-family: "courier new",courier,monospace;
+ font-size: 65%;
+}
+
+.memdoc, dl.reflist dd {
+ border-bottom: 1px solid #A8B8D9;
+ border-left: 1px solid #A8B8D9;
+ border-right: 1px solid #A8B8D9;
+ padding: 6px 10px 2px 10px;
+ background-color: #FBFCFD;
+ border-top-width: 0;
+ background-image:url('nav_g.png');
+ background-repeat:repeat-x;
+ background-color: #FFFFFF;
+ /* opera specific markup */
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+ box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+ /* firefox specific markup */
+ -moz-border-radius-bottomleft: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
+ /* webkit specific markup */
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+dl.reflist dt {
+ padding: 5px;
+}
+
+dl.reflist dd {
+ margin: 0px 0px 10px 0px;
+ padding: 5px;
+}
+
+.paramkey {
+ text-align: right;
+}
+
+.paramtype {
+ white-space: nowrap;
+}
+
+.paramname {
+ color: #602020;
+ white-space: nowrap;
+}
+.paramname em {
+ font-style: normal;
+}
+.paramname code {
+ line-height: 14px;
+}
+
+.params, .retval, .exception, .tparams {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
+ font-weight: bold;
+ vertical-align: top;
+}
+
+.params .paramtype, .tparams .paramtype {
+ font-style: italic;
+ vertical-align: top;
+}
+
+.params .paramdir, .tparams .paramdir {
+ font-family: "courier new",courier,monospace;
+ vertical-align: top;
+}
+
+table.mlabels {
+ border-spacing: 0px;
+}
+
+td.mlabels-left {
+ width: 100%;
+ padding: 0px;
+}
+
+td.mlabels-right {
+ vertical-align: bottom;
+ padding: 0px;
+ white-space: nowrap;
+}
+
+span.mlabels {
+ margin-left: 8px;
+}
+
+span.mlabel {
+ background-color: #728DC1;
+ border-top:1px solid #5373B4;
+ border-left:1px solid #5373B4;
+ border-right:1px solid #C4CFE5;
+ border-bottom:1px solid #C4CFE5;
+ text-shadow: none;
+ color: white;
+ margin-right: 4px;
+ padding: 2px 3px;
+ border-radius: 3px;
+ font-size: 7pt;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+
+
+
+/* @end */
+
+/* these are for tree view inside a (index) page */
+
+div.directory {
+ margin: 10px 0px;
+ border-top: 1px solid #9CAFD4;
+ border-bottom: 1px solid #9CAFD4;
+ width: 100%;
+}
+
+.directory table {
+ border-collapse:collapse;
+}
+
+.directory td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+
+.directory td.entry {
+ white-space: nowrap;
+ padding-right: 6px;
+ padding-top: 3px;
+}
+
+.directory td.entry a {
+ outline:none;
+}
+
+.directory td.entry a img {
+ border: none;
+}
+
+.directory td.desc {
+ width: 100%;
+ padding-left: 6px;
+ padding-right: 6px;
+ padding-top: 3px;
+ border-left: 1px solid rgba(0,0,0,0.05);
+}
+
+.directory tr.even {
+ padding-left: 6px;
+ background-color: #F7F8FB;
+}
+
+.directory img {
+ vertical-align: -30%;
+}
+
+.directory .levels {
+ white-space: nowrap;
+ width: 100%;
+ text-align: right;
+ font-size: 9pt;
+}
+
+.directory .levels span {
+ cursor: pointer;
+ padding-left: 2px;
+ padding-right: 2px;
+ color: #3D578C;
+}
+
+.arrow {
+ color: #9CAFD4;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ cursor: pointer;
+ font-size: 80%;
+ display: inline-block;
+ width: 16px;
+ height: 22px;
+}
+
+.icon {
+ font-family: Arial, Helvetica;
+ font-weight: bold;
+ font-size: 12px;
+ height: 14px;
+ width: 16px;
+ display: inline-block;
+ background-color: #728DC1;
+ color: white;
+ text-align: center;
+ border-radius: 4px;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+
+.icona {
+ width: 24px;
+ height: 22px;
+ display: inline-block;
+}
+
+.iconfopen {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderopen.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.iconfclosed {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('folderclosed.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+.icondoc {
+ width: 24px;
+ height: 18px;
+ margin-bottom: 4px;
+ background-image:url('doc.png');
+ background-position: 0px -4px;
+ background-repeat: repeat-y;
+ vertical-align:top;
+ display: inline-block;
+}
+
+table.directory {
+ font: 400 14px Roboto,sans-serif;
+}
+
+/* @end */
+
+div.dynheader {
+ margin-top: 8px;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+address {
+ font-style: normal;
+ color: #2A3D61;
+}
+
+table.doxtable caption {
+ caption-side: top;
+}
+
+table.doxtable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.doxtable td, table.doxtable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.doxtable th {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+table.fieldtable {
+ /*width: 100%;*/
+ margin-bottom: 10px;
+ border: 1px solid #A8B8D9;
+ border-spacing: 0px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ border-radius: 4px;
+ -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px;
+ -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+ box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15);
+}
+
+.fieldtable td, .fieldtable th {
+ padding: 3px 7px 2px;
+}
+
+.fieldtable td.fieldtype, .fieldtable td.fieldname {
+ white-space: nowrap;
+ border-right: 1px solid #A8B8D9;
+ border-bottom: 1px solid #A8B8D9;
+ vertical-align: top;
+}
+
+.fieldtable td.fieldname {
+ padding-top: 3px;
+}
+
+.fieldtable td.fielddoc {
+ border-bottom: 1px solid #A8B8D9;
+ /*width: 100%;*/
+}
+
+.fieldtable td.fielddoc p:first-child {
+ margin-top: 0px;
+}
+
+.fieldtable td.fielddoc p:last-child {
+ margin-bottom: 2px;
+}
+
+.fieldtable tr:last-child td {
+ border-bottom: none;
+}
+
+.fieldtable th {
+ background-image:url('nav_f.png');
+ background-repeat:repeat-x;
+ background-color: #E2E8F2;
+ font-size: 90%;
+ color: #253555;
+ padding-bottom: 4px;
+ padding-top: 5px;
+ text-align:left;
+ font-weight: 400;
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-topright: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom: 1px solid #A8B8D9;
+}
+
+
+.tabsearch {
+ top: 0px;
+ left: 10px;
+ height: 36px;
+ background-image: url('tab_b.png');
+ z-index: 101;
+ overflow: hidden;
+ font-size: 13px;
+}
+
+.navpath ul
+{
+ font-size: 11px;
+ background-image:url('tab_b.png');
+ background-repeat:repeat-x;
+ background-position: 0 -5px;
+ height:30px;
+ line-height:30px;
+ color:#8AA0CC;
+ border:solid 1px #C2CDE4;
+ overflow:hidden;
+ margin:0px;
+ padding:0px;
+}
+
+.navpath li
+{
+ list-style-type:none;
+ float:left;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:url('bc_s.png');
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+}
+
+.navpath li.navelem a
+{
+ height:32px;
+ display:block;
+ text-decoration: none;
+ outline: none;
+ color: #283A5D;
+ font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+ text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
+ text-decoration: none;
+}
+
+.navpath li.navelem a:hover
+{
+ color:#6884BD;
+}
+
+.navpath li.footer
+{
+ list-style-type:none;
+ float:right;
+ padding-left:10px;
+ padding-right:15px;
+ background-image:none;
+ background-repeat:no-repeat;
+ background-position:right;
+ color:#364D7C;
+ font-size: 8pt;
+}
+
+
+div.summary
+{
+ float: right;
+ font-size: 8pt;
+ padding-right: 5px;
+ width: 50%;
+ text-align: right;
+}
+
+div.summary a
+{
+ white-space: nowrap;
+}
+
+table.classindex
+{
+ margin: 10px;
+ white-space: nowrap;
+ margin-left: 3%;
+ margin-right: 3%;
+ width: 94%;
+ border: 0;
+ border-spacing: 0;
+ padding: 0;
+}
+
+div.ingroups
+{
+ font-size: 8pt;
+ width: 50%;
+ text-align: left;
+}
+
+div.ingroups a
+{
+ white-space: nowrap;
+}
+
+div.header
+{
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ margin: 0px;
+ border-bottom: 1px solid #C4CFE5;
+}
+
+div.headertitle
+{
+ padding: 5px 5px 5px 10px;
+}
+
+.PageDocRTL-title div.headertitle {
+ text-align: right;
+ direction: rtl;
+}
+
+dl {
+ padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
+ margin-left: 0px;
+ padding-left: 0px;
+}
+
+dl.section.DocNodeRTL {
+ margin-right: 0px;
+ padding-right: 0px;
+}
+
+dl.note {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.note.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #D0C000;
+}
+
+dl.warning, dl.attention {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #FF0000;
+}
+
+dl.pre, dl.post, dl.invariant {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00D000;
+}
+
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00D000;
+}
+
+dl.deprecated {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #505050;
+}
+
+dl.todo {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #00C0E0;
+}
+
+dl.test {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #3030E0;
+}
+
+dl.bug {
+ margin-left: -7px;
+ padding-left: 3px;
+ border-left: 4px solid;
+ border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+ margin-left: 0;
+ padding-left: 0;
+ border-left: 0;
+ margin-right: -7px;
+ padding-right: 3px;
+ border-right: 4px solid;
+ border-color: #C08050;
+}
+
+dl.section dd {
+ margin-bottom: 6px;
+}
+
+
+#projectrow
+{
+ height: 56px;
+}
+
+#projectlogo
+{
+ text-align: center;
+ vertical-align: bottom;
+ border-collapse: separate;
+}
+
+#projectlogo img
+{
+ border: 0px none;
+}
+
+#projectalign
+{
+ vertical-align: middle;
+ padding-left: 0.5em;
+}
+
+#projectname
+{
+ font: 200% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 2px 0px;
+}
+
+#projectbrief
+{
+ font: 90% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#projectnumber
+{
+ font: 50% Tahoma, Arial,sans-serif;
+ margin: 0px;
+ padding: 0px;
+}
+
+#titlearea
+{
+ padding: 0px;
+ margin: 0px;
+ width: 100%;
+ border-bottom: 1px solid #5373B4;
+}
+
+.image
+{
+ text-align: center;
+}
+
+.dotgraph
+{
+ text-align: center;
+}
+
+.mscgraph
+{
+ text-align: center;
+}
+
+.plantumlgraph
+{
+ text-align: center;
+}
+
+.diagraph
+{
+ text-align: center;
+}
+
+.caption
+{
+ font-weight: bold;
+}
+
+div.zoom
+{
+ border: 1px solid #90A5CE;
+}
+
+dl.citelist {
+ margin-bottom:50px;
+}
+
+dl.citelist dt {
+ color:#334975;
+ float:left;
+ font-weight:bold;
+ margin-right:10px;
+ padding:5px;
+ text-align:right;
+ width:52px;
+}
+
+dl.citelist dd {
+ margin:2px 0 2px 72px;
+ padding:5px 0;
+}
+
+div.toc {
+ padding: 14px 25px;
+ background-color: #F4F6FA;
+ border: 1px solid #D8DFEE;
+ border-radius: 7px 7px 7px 7px;
+ float: right;
+ height: auto;
+ margin: 0 8px 10px 10px;
+ width: 200px;
+}
+
+.PageDocRTL-title div.toc {
+ float: left !important;
+ text-align: right;
+}
+
+div.toc li {
+ background: url("bdwn.png") no-repeat scroll 0 5px transparent;
+ font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
+ margin-top: 5px;
+ padding-left: 10px;
+ padding-top: 2px;
+}
+
+.PageDocRTL-title div.toc li {
+ background-position-x: right !important;
+ padding-left: 0 !important;
+ padding-right: 10px;
+}
+
+div.toc h3 {
+ font: bold 12px/1.2 Arial,FreeSans,sans-serif;
+ color: #4665A2;
+ border-bottom: 0 none;
+ margin: 0;
+}
+
+div.toc ul {
+ list-style: none outside none;
+ border: medium none;
+ padding: 0px;
+}
+
+div.toc li.level1 {
+ margin-left: 0px;
+}
+
+div.toc li.level2 {
+ margin-left: 15px;
+}
+
+div.toc li.level3 {
+ margin-left: 30px;
+}
+
+div.toc li.level4 {
+ margin-left: 45px;
+}
+
+span.emoji {
+ /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html
+ * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort;
+ */
+}
+
+span.obfuscator {
+ display: none;
+}
+
+.PageDocRTL-title div.toc li.level1 {
+ margin-left: 0 !important;
+ margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+ margin-left: 0 !important;
+ margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+ margin-left: 0 !important;
+ margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+ margin-left: 0 !important;
+ margin-right: 45px;
+}
+
+.inherit_header {
+ font-weight: bold;
+ color: gray;
+ cursor: pointer;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -khtml-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.inherit_header td {
+ padding: 6px 0px 2px 5px;
+}
+
+.inherit {
+ display: none;
+}
+
+tr.heading h2 {
+ margin-top: 12px;
+ margin-bottom: 4px;
+}
+
+/* tooltip related style info */
+
+.ttc {
+ position: absolute;
+ display: none;
+}
+
+#powerTip {
+ cursor: default;
+ /*white-space: nowrap;*/
+ background-color: white;
+ border: 1px solid gray;
+ border-radius: 4px 4px 4px 4px;
+ box-shadow: 1px 1px 7px gray;
+ display: none;
+ font-size: smaller;
+ max-width: 80%;
+ opacity: 0.9;
+ padding: 1ex 1em 1em;
+ position: absolute;
+ z-index: 2147483647;
+}
+
+#powerTip div.ttdoc {
+ color: grey;
+ font-style: italic;
+}
+
+#powerTip div.ttname a {
+ font-weight: bold;
+}
+
+#powerTip div.ttname {
+ font-weight: bold;
+}
+
+#powerTip div.ttdeci {
+ color: #006318;
+}
+
+#powerTip div {
+ margin: 0px;
+ padding: 0px;
+ font: 12px/16px Roboto,sans-serif;
+}
+
+#powerTip:before, #powerTip:after {
+ content: "";
+ position: absolute;
+ margin: 0px;
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.w:after, #powerTip.w:before,
+#powerTip.e:after, #powerTip.e:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.nw:after, #powerTip.nw:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ border: solid transparent;
+ content: " ";
+ height: 0;
+ width: 0;
+ position: absolute;
+}
+
+#powerTip.n:after, #powerTip.s:after,
+#powerTip.w:after, #powerTip.e:after,
+#powerTip.nw:after, #powerTip.ne:after,
+#powerTip.sw:after, #powerTip.se:after {
+ border-color: rgba(255, 255, 255, 0);
+}
+
+#powerTip.n:before, #powerTip.s:before,
+#powerTip.w:before, #powerTip.e:before,
+#powerTip.nw:before, #powerTip.ne:before,
+#powerTip.sw:before, #powerTip.se:before {
+ border-color: rgba(128, 128, 128, 0);
+}
+
+#powerTip.n:after, #powerTip.n:before,
+#powerTip.ne:after, #powerTip.ne:before,
+#powerTip.nw:after, #powerTip.nw:before {
+ top: 100%;
+}
+
+#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
+ border-top-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+#powerTip.n:before {
+ border-top-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+#powerTip.n:after, #powerTip.n:before {
+ left: 50%;
+}
+
+#powerTip.nw:after, #powerTip.nw:before {
+ right: 14px;
+}
+
+#powerTip.ne:after, #powerTip.ne:before {
+ left: 14px;
+}
+
+#powerTip.s:after, #powerTip.s:before,
+#powerTip.se:after, #powerTip.se:before,
+#powerTip.sw:after, #powerTip.sw:before {
+ bottom: 100%;
+}
+
+#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
+ border-bottom-color: #FFFFFF;
+ border-width: 10px;
+ margin: 0px -10px;
+}
+
+#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before {
+ border-bottom-color: #808080;
+ border-width: 11px;
+ margin: 0px -11px;
+}
+
+#powerTip.s:after, #powerTip.s:before {
+ left: 50%;
+}
+
+#powerTip.sw:after, #powerTip.sw:before {
+ right: 14px;
+}
+
+#powerTip.se:after, #powerTip.se:before {
+ left: 14px;
+}
+
+#powerTip.e:after, #powerTip.e:before {
+ left: 100%;
+}
+#powerTip.e:after {
+ border-left-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.e:before {
+ border-left-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+#powerTip.w:after, #powerTip.w:before {
+ right: 100%;
+}
+#powerTip.w:after {
+ border-right-color: #FFFFFF;
+ border-width: 10px;
+ top: 50%;
+ margin-top: -10px;
+}
+#powerTip.w:before {
+ border-right-color: #808080;
+ border-width: 11px;
+ top: 50%;
+ margin-top: -11px;
+}
+
+@media print
+{
+ #top { display: none; }
+ #side-nav { display: none; }
+ #nav-path { display: none; }
+ body { overflow:visible; }
+ h1, h2, h3, h4, h5, h6 { page-break-after: avoid; }
+ .summary { display: none; }
+ .memitem { page-break-inside: avoid; }
+ #doc-content
+ {
+ margin-left:0 !important;
+ height:auto !important;
+ width:auto !important;
+ overflow:inherit;
+ display:inline;
+ }
+}
+
+/* @group Markdown */
+
+table.markdownTable {
+ border-collapse:collapse;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+ border: 1px solid #2D4068;
+ padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+ background-color: #374F7F;
+ color: #FFFFFF;
+ font-size: 110%;
+ padding-bottom: 4px;
+ padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+ text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+ text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+ text-align: center
+}
+
+.DocNodeRTL {
+ text-align: right;
+ direction: rtl;
+}
+
+.DocNodeLTR {
+ text-align: left;
+ direction: ltr;
+}
+
+table.DocNodeRTL {
+ width: auto;
+ margin-right: 0;
+ margin-left: auto;
+}
+
+table.DocNodeLTR {
+ width: auto;
+ margin-right: auto;
+ margin-left: 0;
+}
+
+code.JavaDocCode {
+ direction:ltr;
+}
+
+tt, code, kbd, samp
+{
+ display: inline-block;
+ direction:ltr;
+}
+/* @end */
+
+u {
+ text-decoration: underline;
+}
+
diff --git a/libs/glfw-3.3.8/docs/html/doxygen.svg b/libs/glfw-3.3.8/docs/html/doxygen.svg
new file mode 100644
index 0000000..d42dad5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/doxygen.svg
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg version="1.1" viewBox="0 0 104 31" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="a">
+ <stop stop-color="#5373B4" offset="0"/>
+ <stop stop-color="#7C95C6" offset="1"/>
+ </linearGradient>
+ <linearGradient id="d" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="c" x1="31.474" x2="31.474" y1="24.821" y2="26.773" gradientTransform="matrix(.6816 0 0 1.0248 72.391 -.91809)" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="b" x1="56.295" x2="56.295" y1="24.622" y2="26.574" gradientUnits="userSpaceOnUse" xlink:href="#a"/>
+ <linearGradient id="e" x1="49.067" x2="48.956" y1="19.719" y2="9.5227" gradientTransform="matrix(.97968 0 0 1.0207 -.25579 -.25579)" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#C0CCE3" offset="0"/>
+ <stop stop-color="#EEF1F7" offset="1"/>
+ </linearGradient>
+ <filter id="f" x="-.010676" y="-.045304" width="1.0214" height="1.0906" color-interpolation-filters="sRGB">
+ <feGaussianBlur stdDeviation="0.45293203"/>
+ </filter>
+ </defs>
+ <g>
+ <path transform="translate(-2.5759 -27.848)" d="m13.609 32.203v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23645 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88018-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35277 3.7988-1.0566 1.0471-0.70387 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.92299-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.4611 0.28066 1.7988 0.84375 0.33777 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5976v-8.3926c0-0.84464-0.0765-1.6106-0.22851-2.2969-0.13511-0.70387-0.37971-1.2925-0.73438-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.063 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07028-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06051 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3438h-0.05078l-2.9648-9.3438zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914 0.38844 0.24635 0.6991 0.57184 0.93555 0.97656 0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13253 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10134 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88814-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70105 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.4927-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89025 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74023 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" filter="url(#f)" opacity=".3" stroke="#969696" xlink:href="#path141"/>
+ <path d="m0.97202 24.161 43.605-0.0019 0.0508 3.3061-43.6 0.04174z" fill="url(#d)" stroke="#000" stroke-width=".5"/>
+ <path d="m10.283 3.5547v6.8633h-0.05078c-0.40533-0.66867-0.96254-1.1715-1.6719-1.5059-0.69244-0.35193-1.4282-0.52734-2.2051-0.52734-0.96267 0-1.807 0.2027-2.5332 0.60742-0.72622 0.38713-1.3344 0.90556-1.8242 1.5566-0.47289 0.65108-0.83456 1.4092-1.0879 2.2715-0.23644 0.84464-0.35547 1.7236-0.35547 2.6387 0 0.95022 0.11902 1.8643 0.35547 2.7441 0.25333 0.87983 0.615 1.6633 1.0879 2.3496 0.48978 0.66867 1.1065 1.2066 1.8496 1.6113 0.74311 0.38713 1.6044 0.58008 2.584 0.58008 0.86133 0 1.6311-0.15787 2.3066-0.47461 0.69244-0.33434 1.2497-0.87227 1.6719-1.6113h0.05078v1.7422h3.4199v-18.846zm12.875 4.8301c-1.0302 0-1.9596 0.17541-2.7871 0.52734-0.82756 0.33434-1.5358 0.81965-2.127 1.4531-0.59111 0.61588-1.0483 1.3721-1.3691 2.2695-0.32089 0.87983-0.48047 1.866-0.48047 2.957s0.15958 2.0752 0.48047 2.9551c0.32089 0.87983 0.77803 1.6361 1.3691 2.2695 0.59111 0.61588 1.2994 1.0914 2.127 1.4258 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.0302 0 1.9596-0.16762 2.7871-0.50195 0.84444-0.33434 1.5612-0.8099 2.1523-1.4258 0.59111-0.63348 1.0483-1.3897 1.3691-2.2695 0.32089-0.87983 0.48047-1.8641 0.48047-2.9551s-0.15958-2.0772-0.48047-2.957c-0.32089-0.89743-0.77803-1.6536-1.3691-2.2695-0.59111-0.63348-1.3079-1.1188-2.1523-1.4531-0.82756-0.35193-1.7569-0.52734-2.7871-0.52734zm41.715 0c-0.912 0-1.7223 0.18516-2.4316 0.55469-0.69244 0.36953-1.2752 0.87043-1.748 1.5039-0.47289 0.61588-0.83651 1.337-1.0898 2.1641-0.23644 0.80944-0.35352 1.6553-0.35352 2.5352 0 0.93262 0.10007 1.8214 0.30273 2.666 0.21956 0.82704 0.55767 1.556 1.0137 2.1895 0.456 0.61588 1.0387 1.109 1.748 1.4785 0.70933 0.35193 1.5536 0.5293 2.5332 0.5293 0.79378 0 1.5446-0.16762 2.2539-0.50195 0.72622-0.35193 1.2834-0.88986 1.6719-1.6113h0.05078v1.7949c0.01689 0.96782-0.21071 1.7689-0.68359 2.4023-0.456 0.63348-1.1898 0.95117-2.2031 0.95117-0.64178 0-1.2075-0.14228-1.6973-0.42383-0.48978-0.26395-0.81939-0.74731-0.98828-1.4512h-3.5723c0.05067 0.77425 0.25276 1.435 0.60742 1.9805 0.37156 0.56309 0.8287 1.0192 1.3691 1.3711 0.55733 0.35193 1.1656 0.60726 1.8242 0.76562 0.67556 0.17597 1.3328 0.26562 1.9746 0.26562 1.5031 0 2.7025-0.21245 3.5977-0.63477 0.89511-0.42232 1.5798-0.94076 2.0527-1.5566 0.47289-0.59829 0.777-1.2493 0.91211-1.9531 0.152-0.70386 0.22656-1.3295 0.22656-1.875v-12.775h-3.4199v1.8223h-0.05078c-0.43911-0.79185-0.98782-1.3551-1.6465-1.6895-0.64178-0.33434-1.3926-0.50195-2.2539-0.50195zm16.523 0c-0.99644 0-1.9088 0.18516-2.7363 0.55469-0.81067 0.36953-1.5124 0.88017-2.1035 1.5312-0.59111 0.63348-1.0463 1.3897-1.3672 2.2695s-0.48047 1.831-0.48047 2.8516c0 1.0558 0.15108 2.0225 0.45508 2.9023 0.32089 0.87983 0.76758 1.6361 1.3418 2.2695 0.57422 0.63348 1.276 1.1266 2.1035 1.4785 0.82756 0.33434 1.7569 0.50195 2.7871 0.50195 1.4862 0 2.7517-0.35278 3.7988-1.0566 1.0471-0.70386 1.8254-1.8733 2.332-3.5098h-3.168c-0.11822 0.42232-0.43934 0.82772-0.96289 1.2148-0.52355 0.36953-1.1468 0.55274-1.873 0.55273-1.0133 0-1.7916-0.27286-2.332-0.81836-0.54044-0.5455-0.83605-1.4245-0.88672-2.6387h9.4492c0.06756-1.0558-0.01551-2.0673-0.25195-3.0352-0.23644-0.96782-0.62557-1.8293-1.166-2.5859-0.52356-0.75666-1.1998-1.355-2.0273-1.7949-0.82756-0.45751-1.7974-0.6875-2.9121-0.6875zm16.189 0c-0.76 0-1.5023 0.18516-2.2285 0.55469-0.72622 0.35193-1.3174 0.923-1.7734 1.7148h-0.07617v-1.9004h-3.4199v13.646h3.5977v-7.1523c0-1.3901 0.21909-2.3841 0.6582-2.9824 0.43911-0.61588 1.1494-0.92383 2.1289-0.92383 0.86133 0 1.461 0.28066 1.7988 0.84375 0.33778 0.5455 0.50586 1.3816 0.50586 2.5078v7.707h3.5977v-8.3926c0-0.84464-0.0765-1.6106-0.22852-2.2969-0.13511-0.70387-0.3797-1.2925-0.73437-1.7676-0.35466-0.49271-0.84386-0.87277-1.4688-1.1367-0.608-0.28155-1.3948-0.42188-2.3574-0.42188zm-66.062 0.36914 4.3066 6.4668-4.7129 7.1797h4.0293l2.7363-4.3027 2.7344 4.3027h4.1055l-4.8398-7.2578 4.3066-6.3887h-3.9766l-2.2793 3.5645-2.3066-3.5645zm13.275 0 4.584 12.803c0.10133 0.26395 0.15234 0.54461 0.15234 0.84375 0 0.40472-0.11707 0.77504-0.35352 1.1094-0.21956 0.33434-0.56617 0.52729-1.0391 0.58008-0.35467 0.0176-0.70979 0.0098-1.0645-0.02539-0.35467-0.03519-0.70128-0.07027-1.0391-0.10547v3.0879c0.37156 0.03519 0.73518 0.06052 1.0898 0.07813 0.37156 0.03519 0.74368 0.05273 1.1152 0.05273 1.2329 0 2.1943-0.23778 2.8867-0.71289 0.69244-0.47511 1.2326-1.2664 1.6211-2.375l5.4727-15.336h-3.7246l-2.8613 9.3437h-0.05078l-2.9648-9.3437zm-37.48 2.4551c0.59111 0 1.0823 0.12279 1.4707 0.36914s0.6991 0.57184 0.93555 0.97656c0.25333 0.38713 0.43187 0.84515 0.5332 1.373 0.10133 0.5103 0.15234 1.0482 0.15234 1.6113 0 0.56309-0.05101 1.1069-0.15234 1.6348-0.10133 0.5279-0.27137 1.0035-0.50781 1.4258-0.23644 0.40472-0.5556 0.73021-0.96094 0.97656-0.38844 0.24635-0.87959 0.36914-1.4707 0.36914-0.55733 0-1.038-0.12279-1.4434-0.36914-0.38844-0.26395-0.71806-0.59723-0.98828-1.002-0.25333-0.42232-0.43842-0.89788-0.55664-1.4258s-0.17773-1.0561-0.17773-1.584c-1e-7 -0.56309 0.05101-1.0991 0.15234-1.6094 0.11822-0.5279 0.29481-0.99567 0.53125-1.4004 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.24635 0.90303-0.36914 1.4941-0.36914zm15.84 0c0.608 0 1.1142 0.13254 1.5195 0.39648 0.42222 0.24635 0.75184 0.57184 0.98828 0.97656 0.25333 0.40472 0.42992 0.87054 0.53125 1.3984 0.10133 0.5279 0.15234 1.0658 0.15234 1.6113 0 0.5455-0.05101 1.0815-0.15234 1.6094-0.10133 0.5103-0.27792 0.97612-0.53125 1.3984-0.23644 0.40472-0.56606 0.73021-0.98828 0.97656-0.40533 0.24635-0.91153 0.36914-1.5195 0.36914-0.608 0-1.1142-0.12279-1.5195-0.36914s-0.73495-0.57184-0.98828-0.97656c-0.23644-0.42232-0.40648-0.88813-0.50781-1.3984-0.10133-0.5279-0.15234-1.0639-0.15234-1.6094 0-0.5455 0.05101-1.0834 0.15234-1.6113 0.10133-0.5279 0.27137-0.99371 0.50781-1.3984 0.25333-0.40472 0.58295-0.73021 0.98828-0.97656 0.40533-0.26395 0.91153-0.39648 1.5195-0.39648zm42.602 0c0.59111 0 1.0803 0.11499 1.4688 0.34375 0.38844 0.22876 0.70106 0.5367 0.9375 0.92383 0.23644 0.38713 0.40648 0.8354 0.50781 1.3457 0.10133 0.49271 0.15039 1.0209 0.15039 1.584 0 0.49271-0.06606 0.96827-0.20117 1.4258-0.11822 0.43992-0.30526 0.83557-0.55859 1.1875-0.25333 0.35193-0.57445 0.63259-0.96289 0.84375-0.38844 0.21116-0.83513 0.31836-1.3418 0.31836-0.55733 0-1.021-0.12474-1.3926-0.37109-0.37156-0.24635-0.67566-0.56209-0.91211-0.94922-0.21956-0.38713-0.38109-0.81786-0.48242-1.293-0.08444-0.49271-0.12695-0.98581-0.12695-1.4785 0-0.5103 0.05101-0.99366 0.15234-1.4512 0.11822-0.47511 0.29676-0.89026 0.5332-1.2422 0.25333-0.36953 0.55744-0.65993 0.91211-0.87109 0.37156-0.21116 0.80974-0.31641 1.3164-0.31641zm15.535 0c0.87822 0 1.529 0.24753 1.9512 0.74024 0.43911 0.49271 0.74322 1.2138 0.91211 2.1641h-5.8535c0.01689-0.26395 0.0679-0.5641 0.15234-0.89844 0.10133-0.33434 0.26287-0.65008 0.48242-0.94922 0.23644-0.29914 0.54055-0.54667 0.91211-0.74023 0.38845-0.21116 0.86914-0.31641 1.4434-0.31641z" fill="url(#e)" stroke="#4665A2" stroke-width=".7"/>
+ <path d="m52.988 27.291c0.99602-1.0359 1.3944-1.8725 1.7928-3.1076l3.8247-0.03984c0.3113 1.6096 0.82413 2.5137 1.6335 3.1474z" fill="url(#b)" stroke="#000" stroke-width=".5"/>
+ <path d="m73.89 24.04 28.885-0.2011-0.12476 3.3879-31.033 0.16229c1.2621-1.0234 1.9665-2.2859 2.2724-3.3491z" fill="url(#c)" stroke="#000" stroke-width=".41788"/>
+ </g>
+</svg>
diff --git a/libs/glfw-3.3.8/docs/html/dynsections.js b/libs/glfw-3.3.8/docs/html/dynsections.js
new file mode 100644
index 0000000..3174bd7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/dynsections.js
@@ -0,0 +1,121 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function toggleVisibility(linkObj)
+{
+ var base = $(linkObj).attr('id');
+ var summary = $('#'+base+'-summary');
+ var content = $('#'+base+'-content');
+ var trigger = $('#'+base+'-trigger');
+ var src=$(trigger).attr('src');
+ if (content.is(':visible')===true) {
+ content.hide();
+ summary.show();
+ $(linkObj).addClass('closed').removeClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ content.show();
+ summary.hide();
+ $(linkObj).removeClass('closed').addClass('opened');
+ $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+ return false;
+}
+
+function updateStripes()
+{
+ $('table.directory tr').
+ removeClass('even').filter(':visible:even').addClass('even');
+}
+
+function toggleLevel(level)
+{
+ $('table.directory tr').each(function() {
+ var l = this.id.split('_').length-1;
+ var i = $('#img'+this.id.substring(3));
+ var a = $('#arr'+this.id.substring(3));
+ if (l<level+1) {
+ i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
+ a.html('&#9660;');
+ $(this).show();
+ } else if (l==level+1) {
+ i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
+ a.html('&#9658;');
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ updateStripes();
+}
+
+function toggleFolder(id)
+{
+ // the clicked row
+ var currentRow = $('#row_'+id);
+
+ // all rows after the clicked row
+ var rows = currentRow.nextAll("tr");
+
+ var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
+
+ // only match elements AFTER this one (can't hide elements before)
+ var childRows = rows.filter(function() { return this.id.match(re); });
+
+ // first row is visible we are HIDING
+ if (childRows.filter(':first').is(':visible')===true) {
+ // replace down arrow by right arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ currentRowSpans.filter(".arrow").html('&#9658;');
+ rows.filter("[id^=row_"+id+"]").hide(); // hide all children
+ } else { // we are SHOWING
+ // replace right arrow by down arrow for current row
+ var currentRowSpans = currentRow.find("span");
+ currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
+ currentRowSpans.filter(".arrow").html('&#9660;');
+ // replace down arrows by right arrows for child rows
+ var childRowsSpans = childRows.find("span");
+ childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
+ childRowsSpans.filter(".arrow").html('&#9658;');
+ childRows.show(); //show all children
+ }
+ updateStripes();
+}
+
+
+function toggleInherit(id)
+{
+ var rows = $('tr.inherit.'+id);
+ var img = $('tr.inherit_header.'+id+' img');
+ var src = $(img).attr('src');
+ if (rows.filter(':first').is(':visible')===true) {
+ rows.css('display','none');
+ $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
+ } else {
+ rows.css('display','table-row'); // using show() causes jump in firefox
+ $(img).attr('src',src.substring(0,src.length-10)+'open.png');
+ }
+}
+/* @license-end */
diff --git a/libs/glfw-3.3.8/docs/html/extra.css b/libs/glfw-3.3.8/docs/html/extra.css
new file mode 100644
index 0000000..05c1938
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/extra.css
@@ -0,0 +1 @@
+.sm-dox,.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted,.sm-dox ul a:hover{background:none;text-shadow:none}.sm-dox a span.sub-arrow{border-color:#f2f2f2 transparent transparent transparent}.sm-dox a span.sub-arrow:active,.sm-dox a span.sub-arrow:focus,.sm-dox a span.sub-arrow:hover,.sm-dox a:hover span.sub-arrow{border-color:#f60 transparent transparent transparent}.sm-dox ul a span.sub-arrow:active,.sm-dox ul a span.sub-arrow:focus,.sm-dox ul a span.sub-arrow:hover,.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #f60}.sm-dox ul a:hover{background:#666;text-shadow:none}.sm-dox ul.sm-nowrap a{color:#4d4d4d;text-shadow:none}#main-nav,#main-menu,#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.memdoc,dl.reflist dd,div.toc li,.ah,span.lineno,span.lineno a,span.lineno a:hover,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,.doxtable code,.markdownTable code{background:none}#titlearea,.footer,.contents,div.header,.memdoc,table.doxtable td,table.doxtable th,table.markdownTable td,table.markdownTable th,hr,.memSeparator{border:none}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li,.reflist dt a.el,.levels span,.directory .levels span{text-shadow:none}.memdoc,dl.reflist dd{box-shadow:none}div.headertitle,.note code,.pre code,.post code,.invariant code,.warning code,.attention code,.deprecated code,.bug code,.todo code,.test code,table.doxtable code,table.markdownTable code{padding:0}#nav-path,.directory .levels,span.lineno{display:none}html,#titlearea,.footer,tr.even,.directory tr.even,.doxtable tr:nth-child(even),tr.markdownTableBody:nth-child(even),.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,code,.markdownTableRowEven{background:#f2f2f2}body{color:#4d4d4d}h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em{color:#1a1a1a;border-bottom:none}h1{padding-top:.5em;font-size:180%}h2{padding-top:.5em;margin-bottom:0;font-size:140%}h3{padding-top:.5em;margin-bottom:0;font-size:110%}.glfwheader{font-size:16px;min-height:64px;max-width:920px;padding:0 32px;margin:0 auto;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#glfwhome{line-height:64px;padding-right:48px;color:#666;font-size:2.5em;background:url("https://www.glfw.org/css/arrow.png") no-repeat right}.glfwnavbar{list-style-type:none;margin:0 0 0 auto;float:right}#glfwhome,.glfwnavbar li{float:left}.glfwnavbar a,.glfwnavbar a:visited{line-height:64px;margin-left:2em;display:block;color:#666}.glfwnavbar{padding-left:0}#glfwhome,.glfwnavbar a,.glfwnavbar a:visited{transition:.35s ease}#titlearea,.footer{color:#666}address.footer{text-align:center;padding:2em;margin-top:3em}#top{background:#666}#main-nav{max-width:960px;margin:0 auto;font-size:13px}#main-menu{max-width:920px;margin:0 auto;font-size:13px}.memtitle{display:none}.memproto,.memname{font-weight:bold;text-shadow:none}#main-menu{min-height:36px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;align-items:center;align-content:stretch}#main-menu a,#main-menu a:visited,#main-menu a:hover,#main-menu li{color:#f2f2f2}#main-menu li ul.sm-nowrap li a{color:#4d4d4d}#main-menu li ul.sm-nowrap li a:hover{color:#f60}#main-menu>li:last-child{margin:0 0 0 auto}.contents{min-height:590px}div.contents,div.header{max-width:920px;margin:0 auto;padding:0 32px;background:#fff none}table.doxtable th,table.markdownTable th,dl.reflist dt{background:linear-gradient(to bottom, #ffa733 0%, #ff6600 100%);box-shadow:inset 0 0 32px #f60;text-shadow:0 -1px 1px #b34700;text-align:left;color:#fff}dl.reflist dt a.el{color:#f60;padding:.2em;border-radius:4px;background-color:#ffe0cc}div.toc{float:none;width:auto}div.toc h3{font-size:1.17em}div.toc ul{padding-left:1.5em}div.toc li{font-size:1em;padding-left:0;list-style-type:disc}div.toc,.memproto,div.qindex,div.ah{background:linear-gradient(to bottom, #f2f2f2 0%, #e6e6e6 100%);box-shadow:inset 0 0 32px #e6e6e6;text-shadow:0 1px 1px #fff;color:#1a1a1a;border:2px solid #e6e6e6;border-radius:4px}.paramname{color:#803300}dl.reflist dt{border:2px solid #f60;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom:none}dl.reflist dd{border:2px solid #f60;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:none}table.doxtable,table.markdownTable{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}a,a:hover,a:visited,a:visited:hover,.contents a:visited,.el,a.el:visited,#glfwhome:hover,#main-menu a:hover,span.lineno a:hover{color:#f60;text-decoration:none}div.directory{border-collapse:inherit;border-spacing:0;border:2px solid #f60;border-radius:4px}hr,.memSeparator{height:2px;background:linear-gradient(to right, #f2f2f2 0%, #d9d9d9 50%, #f2f2f2 100%)}dl.note,dl.pre,dl.post,dl.invariant{background:linear-gradient(to bottom, #ddfad1 0%, #cbf7ba 100%);box-shadow:inset 0 0 32px #baf5a3;color:#1e5309;border:2px solid #afe699}dl.warning,dl.attention{background:linear-gradient(to bottom, #fae8d1 0%, #f7ddba 100%);box-shadow:inset 0 0 32px #f5d1a3;color:#533309;border:2px solid #e6c499}dl.deprecated,dl.bug{background:linear-gradient(to bottom, #fad1e3 0%, #f7bad6 100%);box-shadow:inset 0 0 32px #f5a3c8;color:#53092a;border:2px solid #e699bb}dl.todo,dl.test{background:linear-gradient(to bottom, #d1ecfa 0%, #bae3f7 100%);box-shadow:inset 0 0 32px #a3daf5;color:#093a53;border:2px solid #99cce6}dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test{border-radius:4px;padding:1em;text-shadow:0 1px 1px #fff;margin:1em 0}.note a,.pre a,.post a,.invariant a,.warning a,.attention a,.deprecated a,.bug a,.todo a,.test a,.note a:visited,.pre a:visited,.post a:visited,.invariant a:visited,.warning a:visited,.attention a:visited,.deprecated a:visited,.bug a:visited,.todo a:visited,.test a:visited{color:inherit}div.line{line-height:inherit}div.fragment,pre.fragment{background:#f2f2f2;border-radius:4px;border:none;padding:1em;overflow:auto;border-left:4px solid #ccc;margin:1em 0}.lineno a,.lineno a:visited,.line,pre.fragment{color:#4d4d4d}span.preprocessor,span.comment{color:#007899}a.code,a.code:visited{color:#e64500}span.keyword,span.keywordtype,span.keywordflow{color:#404040;font-weight:bold}span.stringliteral{color:#360099}code{padding:.1em;border-radius:4px}/*# sourceMappingURL=extra.css.map */
diff --git a/libs/glfw-3.3.8/docs/html/files.html b/libs/glfw-3.3.8/docs/html/files.html
new file mode 100644
index 0000000..3c035b1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/files.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Files</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle"><div class="title">Files</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span><span onclick="javascript:toggleLevel(4);">4</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span id="img_0_" class="iconfopen" onclick="toggleFolder('0_')">&#160;</span><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html" target="_self">glfw-3.3.8</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="iconfclosed"></span><a class="el" href="dir_fda32cf7bec00275262cb8799a618f76.html" target="_self">docs</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_1_" class="arrow" onclick="toggleFolder('0_1_')">&#9660;</span><span id="img_0_1_" class="iconfopen" onclick="toggleFolder('0_1_')">&#160;</span><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html" target="_self">include</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span id="arr_0_1_0_" class="arrow" onclick="toggleFolder('0_1_0_')">&#9660;</span><span id="img_0_1_0_" class="iconfopen" onclick="toggleFolder('0_1_0_')">&#160;</span><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html" target="_self">GLFW</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_0_0_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="glfw3_8h_source.html"><span class="icondoc"></span></a><a class="el" href="glfw3_8h.html" target="_self">glfw3.h</a></td><td class="desc">The header of the GLFW 3 API </td></tr>
+<tr id="row_0_1_0_1_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="glfw3native_8h_source.html"><span class="icondoc"></span></a><a class="el" href="glfw3native_8h.html" target="_self">glfw3native.h</a></td><td class="desc">The header of the native access functions </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/folderclosed.png b/libs/glfw-3.3.8/docs/html/folderclosed.png
new file mode 100644
index 0000000..bb8ab35
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/folderclosed.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/folderopen.png b/libs/glfw-3.3.8/docs/html/folderopen.png
new file mode 100644
index 0000000..d6c7f67
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/folderopen.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/glfw3_8h.html b/libs/glfw-3.3.8/docs/html/glfw3_8h.html
new file mode 100644
index 0000000..b01a690
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/glfw3_8h.html
@@ -0,0 +1,1619 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: glfw3.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li><li class="navelem"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">glfw3.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<div class="textblock"><p >This is the header file of the GLFW 3 API. It defines all its types and declares all its functions.</p>
+<p >For more information about how to use this file, see <a class="el" href="build_guide.html#build_include">Including the GLFW header file</a>. </p>
+</div>
+<p><a href="glfw3_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:a8a8538c5500308b4211844f2fb26c7b9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9">GLFW_APIENTRY_DEFINED</a></td></tr>
+<tr class="separator:a8a8538c5500308b4211844f2fb26c7b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>&#160;&#160;&#160;1</td></tr>
+<tr class="memdesc:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="mdescLeft">&#160;</td><td class="mdescRight">One. <a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">More...</a><br /></td></tr>
+<tr class="separator:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memdesc:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zero. <a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">More...</a><br /></td></tr>
+<tr class="separator:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2c0bcb7aec609e4736437554f6638fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:gae2c0bcb7aec609e4736437554f6638fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8c9720c76cd1b912738159ed74c85b36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga8c9720c76cd1b912738159ed74c85b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac775f4b3154fdf5db93eb432ba546dff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:gac775f4b3154fdf5db93eb432ba546dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga94aea0ae241a8b902883536c592ee693"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
+<tr class="separator:ga94aea0ae241a8b902883536c592ee693"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
+<tr class="separator:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga638f0e20dc5de90de21a33564e8ce129"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
+<tr class="separator:ga638f0e20dc5de90de21a33564e8ce129"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
+<tr class="separator:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga99aacc875b6b27a072552631e13775c7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7">GLFW_KEY_UNKNOWN</a>&#160;&#160;&#160;-1</td></tr>
+<tr class="separator:ga99aacc875b6b27a072552631e13775c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014">GLFW_KEY_SPACE</a>&#160;&#160;&#160;32</td></tr>
+<tr class="separator:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24">GLFW_KEY_APOSTROPHE</a>&#160;&#160;&#160;39 /* ' */</td></tr>
+<tr class="separator:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab3d5d72e59d3055f494627b0a524926c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c">GLFW_KEY_COMMA</a>&#160;&#160;&#160;44 /* , */</td></tr>
+<tr class="separator:gab3d5d72e59d3055f494627b0a524926c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4">GLFW_KEY_MINUS</a>&#160;&#160;&#160;45 /* - */</td></tr>
+<tr class="separator:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga37e296b650eab419fc474ff69033d927"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga37e296b650eab419fc474ff69033d927">GLFW_KEY_PERIOD</a>&#160;&#160;&#160;46 /* . */</td></tr>
+<tr class="separator:ga37e296b650eab419fc474ff69033d927"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadf3d753b2d479148d711de34b83fd0db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db">GLFW_KEY_SLASH</a>&#160;&#160;&#160;47 /* / */</td></tr>
+<tr class="separator:gadf3d753b2d479148d711de34b83fd0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1">GLFW_KEY_0</a>&#160;&#160;&#160;48</td></tr>
+<tr class="separator:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f">GLFW_KEY_1</a>&#160;&#160;&#160;49</td></tr>
+<tr class="separator:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c">GLFW_KEY_2</a>&#160;&#160;&#160;50</td></tr>
+<tr class="separator:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga812f0273fe1a981e1fa002ae73e92271"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271">GLFW_KEY_3</a>&#160;&#160;&#160;51</td></tr>
+<tr class="separator:ga812f0273fe1a981e1fa002ae73e92271"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356">GLFW_KEY_4</a>&#160;&#160;&#160;52</td></tr>
+<tr class="separator:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924">GLFW_KEY_5</a>&#160;&#160;&#160;53</td></tr>
+<tr class="separator:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d">GLFW_KEY_6</a>&#160;&#160;&#160;54</td></tr>
+<tr class="separator:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666">GLFW_KEY_7</a>&#160;&#160;&#160;55</td></tr>
+<tr class="separator:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f">GLFW_KEY_8</a>&#160;&#160;&#160;56</td></tr>
+<tr class="separator:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39">GLFW_KEY_9</a>&#160;&#160;&#160;57</td></tr>
+<tr class="separator:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d">GLFW_KEY_SEMICOLON</a>&#160;&#160;&#160;59 /* ; */</td></tr>
+<tr class="separator:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae1a2de47240d6664423c204bdd91bd17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17">GLFW_KEY_EQUAL</a>&#160;&#160;&#160;61 /* = */</td></tr>
+<tr class="separator:gae1a2de47240d6664423c204bdd91bd17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga03e842608e1ea323370889d33b8f70ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>&#160;&#160;&#160;65</td></tr>
+<tr class="separator:ga03e842608e1ea323370889d33b8f70ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941">GLFW_KEY_B</a>&#160;&#160;&#160;66</td></tr>
+<tr class="separator:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga00ccf3475d9ee2e679480d540d554669"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669">GLFW_KEY_C</a>&#160;&#160;&#160;67</td></tr>
+<tr class="separator:ga00ccf3475d9ee2e679480d540d554669"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga011f7cdc9a654da984a2506479606933"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga011f7cdc9a654da984a2506479606933">GLFW_KEY_D</a>&#160;&#160;&#160;68</td></tr>
+<tr class="separator:ga011f7cdc9a654da984a2506479606933"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabf48fcc3afbe69349df432b470c96ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>&#160;&#160;&#160;69</td></tr>
+<tr class="separator:gabf48fcc3afbe69349df432b470c96ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5df402e02aca08444240058fd9b42a55"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55">GLFW_KEY_F</a>&#160;&#160;&#160;70</td></tr>
+<tr class="separator:ga5df402e02aca08444240058fd9b42a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae74ecddf7cc96104ab23989b1cdab536"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536">GLFW_KEY_G</a>&#160;&#160;&#160;71</td></tr>
+<tr class="separator:gae74ecddf7cc96104ab23989b1cdab536"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076">GLFW_KEY_H</a>&#160;&#160;&#160;72</td></tr>
+<tr class="separator:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga274655c8bfe39742684ca393cf8ed093"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093">GLFW_KEY_I</a>&#160;&#160;&#160;73</td></tr>
+<tr class="separator:ga274655c8bfe39742684ca393cf8ed093"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f">GLFW_KEY_J</a>&#160;&#160;&#160;74</td></tr>
+<tr class="separator:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0">GLFW_KEY_K</a>&#160;&#160;&#160;75</td></tr>
+<tr class="separator:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2">GLFW_KEY_L</a>&#160;&#160;&#160;76</td></tr>
+<tr class="separator:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">GLFW_KEY_M</a>&#160;&#160;&#160;77</td></tr>
+<tr class="separator:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda">GLFW_KEY_N</a>&#160;&#160;&#160;78</td></tr>
+<tr class="separator:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaecbbb79130df419d58dd7f09a169efe9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9">GLFW_KEY_O</a>&#160;&#160;&#160;79</td></tr>
+<tr class="separator:gaecbbb79130df419d58dd7f09a169efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1">GLFW_KEY_P</a>&#160;&#160;&#160;80</td></tr>
+<tr class="separator:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafdd01e38b120d67cf51e348bb47f3964"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964">GLFW_KEY_Q</a>&#160;&#160;&#160;81</td></tr>
+<tr class="separator:gafdd01e38b120d67cf51e348bb47f3964"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">GLFW_KEY_R</a>&#160;&#160;&#160;82</td></tr>
+<tr class="separator:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9">GLFW_KEY_S</a>&#160;&#160;&#160;83</td></tr>
+<tr class="separator:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9">GLFW_KEY_T</a>&#160;&#160;&#160;84</td></tr>
+<tr class="separator:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d">GLFW_KEY_U</a>&#160;&#160;&#160;85</td></tr>
+<tr class="separator:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga22c7763899ecf7788862e5f90eacce6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b">GLFW_KEY_V</a>&#160;&#160;&#160;86</td></tr>
+<tr class="separator:ga22c7763899ecf7788862e5f90eacce6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>&#160;&#160;&#160;87</td></tr>
+<tr class="separator:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1c42c0bf4192cea713c55598b06b744"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>&#160;&#160;&#160;88</td></tr>
+<tr class="separator:gac1c42c0bf4192cea713c55598b06b744"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafd9f115a549effdf8e372a787c360313"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafd9f115a549effdf8e372a787c360313">GLFW_KEY_Y</a>&#160;&#160;&#160;89</td></tr>
+<tr class="separator:gafd9f115a549effdf8e372a787c360313"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac489e208c26afda8d4938ed88718760a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac489e208c26afda8d4938ed88718760a">GLFW_KEY_Z</a>&#160;&#160;&#160;90</td></tr>
+<tr class="separator:gac489e208c26afda8d4938ed88718760a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1c8d9adac53925276ecb1d592511d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a">GLFW_KEY_LEFT_BRACKET</a>&#160;&#160;&#160;91 /* [ */</td></tr>
+<tr class="separator:gad1c8d9adac53925276ecb1d592511d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1">GLFW_KEY_BACKSLASH</a>&#160;&#160;&#160;92 /* \ */</td></tr>
+<tr class="separator:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga86ef225fd6a66404caae71044cdd58d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8">GLFW_KEY_RIGHT_BRACKET</a>&#160;&#160;&#160;93 /* ] */</td></tr>
+<tr class="separator:ga86ef225fd6a66404caae71044cdd58d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668">GLFW_KEY_GRAVE_ACCENT</a>&#160;&#160;&#160;96 /* ` */</td></tr>
+<tr class="separator:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc78dad3dab76bcd4b5c20114052577a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a">GLFW_KEY_WORLD_1</a>&#160;&#160;&#160;161 /* non-US #1 */</td></tr>
+<tr class="separator:gadc78dad3dab76bcd4b5c20114052577a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e">GLFW_KEY_WORLD_2</a>&#160;&#160;&#160;162 /* non-US #2 */</td></tr>
+<tr class="separator:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaac6596c350b635c245113b81c2123b93"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a>&#160;&#160;&#160;256</td></tr>
+<tr class="separator:gaac6596c350b635c245113b81c2123b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9555a92ecbecdbc1f3435219c571d667"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667">GLFW_KEY_ENTER</a>&#160;&#160;&#160;257</td></tr>
+<tr class="separator:ga9555a92ecbecdbc1f3435219c571d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df">GLFW_KEY_TAB</a>&#160;&#160;&#160;258</td></tr>
+<tr class="separator:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635">GLFW_KEY_BACKSPACE</a>&#160;&#160;&#160;259</td></tr>
+<tr class="separator:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga373ac7365435d6b0eb1068f470e34f47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47">GLFW_KEY_INSERT</a>&#160;&#160;&#160;260</td></tr>
+<tr class="separator:ga373ac7365435d6b0eb1068f470e34f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadb111e4df74b8a715f2c05dad58d2682"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682">GLFW_KEY_DELETE</a>&#160;&#160;&#160;261</td></tr>
+<tr class="separator:gadb111e4df74b8a715f2c05dad58d2682"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac">GLFW_KEY_RIGHT</a>&#160;&#160;&#160;262</td></tr>
+<tr class="separator:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae12a010d33c309a67ab9460c51eb2462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462">GLFW_KEY_LEFT</a>&#160;&#160;&#160;263</td></tr>
+<tr class="separator:gae12a010d33c309a67ab9460c51eb2462"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2e3958c71595607416aa7bf082be2f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9">GLFW_KEY_DOWN</a>&#160;&#160;&#160;264</td></tr>
+<tr class="separator:gae2e3958c71595607416aa7bf082be2f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f3342b194020d3544c67e3506b6f144"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144">GLFW_KEY_UP</a>&#160;&#160;&#160;265</td></tr>
+<tr class="separator:ga2f3342b194020d3544c67e3506b6f144"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586">GLFW_KEY_PAGE_UP</a>&#160;&#160;&#160;266</td></tr>
+<tr class="separator:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaee0a8fa442001cc2147812f84b59041c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c">GLFW_KEY_PAGE_DOWN</a>&#160;&#160;&#160;267</td></tr>
+<tr class="separator:gaee0a8fa442001cc2147812f84b59041c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga41452c7287195d481e43207318c126a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga41452c7287195d481e43207318c126a7">GLFW_KEY_HOME</a>&#160;&#160;&#160;268</td></tr>
+<tr class="separator:ga41452c7287195d481e43207318c126a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9">GLFW_KEY_END</a>&#160;&#160;&#160;269</td></tr>
+<tr class="separator:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672">GLFW_KEY_CAPS_LOCK</a>&#160;&#160;&#160;280</td></tr>
+<tr class="separator:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf622b63b9537f7084c2ab649b8365630"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630">GLFW_KEY_SCROLL_LOCK</a>&#160;&#160;&#160;281</td></tr>
+<tr class="separator:gaf622b63b9537f7084c2ab649b8365630"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3946edc362aeff213b2be6304296cf43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43">GLFW_KEY_NUM_LOCK</a>&#160;&#160;&#160;282</td></tr>
+<tr class="separator:ga3946edc362aeff213b2be6304296cf43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642">GLFW_KEY_PRINT_SCREEN</a>&#160;&#160;&#160;283</td></tr>
+<tr class="separator:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8116b9692d87382afb5849b6d8907f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18">GLFW_KEY_PAUSE</a>&#160;&#160;&#160;284</td></tr>
+<tr class="separator:ga8116b9692d87382afb5849b6d8907f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb8d66c573acf22e364049477dcbea30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30">GLFW_KEY_F1</a>&#160;&#160;&#160;290</td></tr>
+<tr class="separator:gafb8d66c573acf22e364049477dcbea30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0900750aff94889b940f5e428c07daee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0900750aff94889b940f5e428c07daee">GLFW_KEY_F2</a>&#160;&#160;&#160;291</td></tr>
+<tr class="separator:ga0900750aff94889b940f5e428c07daee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015">GLFW_KEY_F3</a>&#160;&#160;&#160;292</td></tr>
+<tr class="separator:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6">GLFW_KEY_F4</a>&#160;&#160;&#160;293</td></tr>
+<tr class="separator:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf258dda9947daa428377938ed577c8c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2">GLFW_KEY_F5</a>&#160;&#160;&#160;294</td></tr>
+<tr class="separator:gaf258dda9947daa428377938ed577c8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">GLFW_KEY_F6</a>&#160;&#160;&#160;295</td></tr>
+<tr class="separator:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a">GLFW_KEY_F7</a>&#160;&#160;&#160;296</td></tr>
+<tr class="separator:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac9d39390336ae14e4a93e295de43c7e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8">GLFW_KEY_F8</a>&#160;&#160;&#160;297</td></tr>
+<tr class="separator:gac9d39390336ae14e4a93e295de43c7e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851">GLFW_KEY_F9</a>&#160;&#160;&#160;298</td></tr>
+<tr class="separator:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga718d11d2f7d57471a2f6a894235995b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1">GLFW_KEY_F10</a>&#160;&#160;&#160;299</td></tr>
+<tr class="separator:ga718d11d2f7d57471a2f6a894235995b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0bc04b11627e7d69339151e7306b2832"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832">GLFW_KEY_F11</a>&#160;&#160;&#160;300</td></tr>
+<tr class="separator:ga0bc04b11627e7d69339151e7306b2832"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">GLFW_KEY_F12</a>&#160;&#160;&#160;301</td></tr>
+<tr class="separator:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b">GLFW_KEY_F13</a>&#160;&#160;&#160;302</td></tr>
+<tr class="separator:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f">GLFW_KEY_F14</a>&#160;&#160;&#160;303</td></tr>
+<tr class="separator:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7f70970db6e8be1794da8516a6d14058"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058">GLFW_KEY_F15</a>&#160;&#160;&#160;304</td></tr>
+<tr class="separator:ga7f70970db6e8be1794da8516a6d14058"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27">GLFW_KEY_F16</a>&#160;&#160;&#160;305</td></tr>
+<tr class="separator:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga972ce5c365e2394b36104b0e3125c748"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748">GLFW_KEY_F17</a>&#160;&#160;&#160;306</td></tr>
+<tr class="separator:ga972ce5c365e2394b36104b0e3125c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaebf6391058d5566601e357edc5ea737c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c">GLFW_KEY_F18</a>&#160;&#160;&#160;307</td></tr>
+<tr class="separator:gaebf6391058d5566601e357edc5ea737c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaec011d9ba044058cb54529da710e9791"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaec011d9ba044058cb54529da710e9791">GLFW_KEY_F19</a>&#160;&#160;&#160;308</td></tr>
+<tr class="separator:gaec011d9ba044058cb54529da710e9791"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga82b9c721ada04cd5ca8de767da38022f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f">GLFW_KEY_F20</a>&#160;&#160;&#160;309</td></tr>
+<tr class="separator:ga82b9c721ada04cd5ca8de767da38022f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f">GLFW_KEY_F21</a>&#160;&#160;&#160;310</td></tr>
+<tr class="separator:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90960bd2a155f2b09675324d3dff1565"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565">GLFW_KEY_F22</a>&#160;&#160;&#160;311</td></tr>
+<tr class="separator:ga90960bd2a155f2b09675324d3dff1565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga43c21099aac10952d1be909a8ddee4d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5">GLFW_KEY_F23</a>&#160;&#160;&#160;312</td></tr>
+<tr class="separator:ga43c21099aac10952d1be909a8ddee4d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8150374677b5bed3043408732152dea2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8150374677b5bed3043408732152dea2">GLFW_KEY_F24</a>&#160;&#160;&#160;313</td></tr>
+<tr class="separator:ga8150374677b5bed3043408732152dea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199">GLFW_KEY_F25</a>&#160;&#160;&#160;314</td></tr>
+<tr class="separator:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d">GLFW_KEY_KP_0</a>&#160;&#160;&#160;320</td></tr>
+<tr class="separator:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3">GLFW_KEY_KP_1</a>&#160;&#160;&#160;321</td></tr>
+<tr class="separator:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf82d5a802ab8213c72653d7480c16f13"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13">GLFW_KEY_KP_2</a>&#160;&#160;&#160;322</td></tr>
+<tr class="separator:gaf82d5a802ab8213c72653d7480c16f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2">GLFW_KEY_KP_3</a>&#160;&#160;&#160;323</td></tr>
+<tr class="separator:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gada7ec86778b85e0b4de0beea72234aea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea">GLFW_KEY_KP_4</a>&#160;&#160;&#160;324</td></tr>
+<tr class="separator:gada7ec86778b85e0b4de0beea72234aea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9a5be274434866c51738cafbb6d26b45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45">GLFW_KEY_KP_5</a>&#160;&#160;&#160;325</td></tr>
+<tr class="separator:ga9a5be274434866c51738cafbb6d26b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc141b0f8450519084c01092a3157faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafc141b0f8450519084c01092a3157faa">GLFW_KEY_KP_6</a>&#160;&#160;&#160;326</td></tr>
+<tr class="separator:gafc141b0f8450519084c01092a3157faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8882f411f05d04ec77a9563974bbfa53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53">GLFW_KEY_KP_7</a>&#160;&#160;&#160;327</td></tr>
+<tr class="separator:ga8882f411f05d04ec77a9563974bbfa53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab2ea2e6a12f89d315045af520ac78cec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec">GLFW_KEY_KP_8</a>&#160;&#160;&#160;328</td></tr>
+<tr class="separator:gab2ea2e6a12f89d315045af520ac78cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb21426b630ed4fcc084868699ba74c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1">GLFW_KEY_KP_9</a>&#160;&#160;&#160;329</td></tr>
+<tr class="separator:gafb21426b630ed4fcc084868699ba74c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b">GLFW_KEY_KP_DECIMAL</a>&#160;&#160;&#160;330</td></tr>
+<tr class="separator:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabca1733780a273d549129ad0f250d1e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5">GLFW_KEY_KP_DIVIDE</a>&#160;&#160;&#160;331</td></tr>
+<tr class="separator:gabca1733780a273d549129ad0f250d1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef">GLFW_KEY_KP_MULTIPLY</a>&#160;&#160;&#160;332</td></tr>
+<tr class="separator:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236">GLFW_KEY_KP_SUBTRACT</a>&#160;&#160;&#160;333</td></tr>
+<tr class="separator:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad09c7c98acc79e89aa6a0a91275becac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac">GLFW_KEY_KP_ADD</a>&#160;&#160;&#160;334</td></tr>
+<tr class="separator:gad09c7c98acc79e89aa6a0a91275becac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf">GLFW_KEY_KP_ENTER</a>&#160;&#160;&#160;335</td></tr>
+<tr class="separator:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97">GLFW_KEY_KP_EQUAL</a>&#160;&#160;&#160;336</td></tr>
+<tr class="separator:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6">GLFW_KEY_LEFT_SHIFT</a>&#160;&#160;&#160;340</td></tr>
+<tr class="separator:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f97b743e81460ac4b2deddecd10a464"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464">GLFW_KEY_LEFT_CONTROL</a>&#160;&#160;&#160;341</td></tr>
+<tr class="separator:ga9f97b743e81460ac4b2deddecd10a464"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7f27dabf63a7789daa31e1c96790219b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b">GLFW_KEY_LEFT_ALT</a>&#160;&#160;&#160;342</td></tr>
+<tr class="separator:ga7f27dabf63a7789daa31e1c96790219b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb1207c91997fc295afd1835fbc5641a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a">GLFW_KEY_LEFT_SUPER</a>&#160;&#160;&#160;343</td></tr>
+<tr class="separator:gafb1207c91997fc295afd1835fbc5641a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaffca36b99c9dce1a19cb9befbadce691"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691">GLFW_KEY_RIGHT_SHIFT</a>&#160;&#160;&#160;344</td></tr>
+<tr class="separator:gaffca36b99c9dce1a19cb9befbadce691"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519">GLFW_KEY_RIGHT_CONTROL</a>&#160;&#160;&#160;345</td></tr>
+<tr class="separator:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga687b38009131cfdd07a8d05fff8fa446"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446">GLFW_KEY_RIGHT_ALT</a>&#160;&#160;&#160;346</td></tr>
+<tr class="separator:ga687b38009131cfdd07a8d05fff8fa446"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad4547a3e8e247594acb60423fe6502db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db">GLFW_KEY_RIGHT_SUPER</a>&#160;&#160;&#160;347</td></tr>
+<tr class="separator:gad4547a3e8e247594acb60423fe6502db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9845be48a745fc232045c9ec174d8820"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a>&#160;&#160;&#160;348</td></tr>
+<tr class="separator:ga9845be48a745fc232045c9ec174d8820"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789">GLFW_KEY_LAST</a>&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td></tr>
+<tr class="separator:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga14994d3196c290aaa347248e51740274"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga14994d3196c290aaa347248e51740274">GLFW_MOD_SHIFT</a>&#160;&#160;&#160;0x0001</td></tr>
+<tr class="memdesc:ga14994d3196c290aaa347248e51740274"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Shift keys were held down. <a href="group__mods.html#ga14994d3196c290aaa347248e51740274">More...</a><br /></td></tr>
+<tr class="separator:ga14994d3196c290aaa347248e51740274"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ed94871c3208eefd85713fa929d45aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">GLFW_MOD_CONTROL</a>&#160;&#160;&#160;0x0002</td></tr>
+<tr class="memdesc:ga6ed94871c3208eefd85713fa929d45aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Control keys were held down. <a href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">More...</a><br /></td></tr>
+<tr class="separator:ga6ed94871c3208eefd85713fa929d45aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad2acd5633463c29e07008687ea73c0f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">GLFW_MOD_ALT</a>&#160;&#160;&#160;0x0004</td></tr>
+<tr class="memdesc:gad2acd5633463c29e07008687ea73c0f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Alt keys were held down. <a href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">More...</a><br /></td></tr>
+<tr class="separator:gad2acd5633463c29e07008687ea73c0f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">GLFW_MOD_SUPER</a>&#160;&#160;&#160;0x0008</td></tr>
+<tr class="memdesc:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Super keys were held down. <a href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">More...</a><br /></td></tr>
+<tr class="separator:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaefeef8fcf825a6e43e241b337897200f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a>&#160;&#160;&#160;0x0010</td></tr>
+<tr class="memdesc:gaefeef8fcf825a6e43e241b337897200f"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Caps Lock key is enabled. <a href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">More...</a><br /></td></tr>
+<tr class="separator:gaefeef8fcf825a6e43e241b337897200f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga64e020b8a42af8376e944baf61feecbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a>&#160;&#160;&#160;0x0020</td></tr>
+<tr class="memdesc:ga64e020b8a42af8376e944baf61feecbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Num Lock key is enabled. <a href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">More...</a><br /></td></tr>
+<tr class="separator:ga64e020b8a42af8376e944baf61feecbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga181a6e875251fd8671654eff00f9112e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga181a6e875251fd8671654eff00f9112e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0130d505563d0236a6f85545f19e1721"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga0130d505563d0236a6f85545f19e1721"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9">GLFW_MOUSE_BUTTON_4</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c">GLFW_MOUSE_BUTTON_5</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8513e06aab8aa393b595f22c6d8257a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a">GLFW_MOUSE_BUTTON_6</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:gae8513e06aab8aa393b595f22c6d8257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7">GLFW_MOUSE_BUTTON_7</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf">GLFW_MOUSE_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td></tr>
+<tr class="separator:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td></tr>
+<tr class="separator:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td></tr>
+<tr class="separator:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a">GLFW_MOUSE_BUTTON_MIDDLE</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td></tr>
+<tr class="separator:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga34a0443d059e9f22272cd4669073f73d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga34a0443d059e9f22272cd4669073f73d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga74771620aa53bd68a487186dea66fd77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77">GLFW_JOYSTICK_6</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:ga74771620aa53bd68a487186dea66fd77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb">GLFW_JOYSTICK_8</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">GLFW_JOYSTICK_9</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec">GLFW_JOYSTICK_10</a>&#160;&#160;&#160;9</td></tr>
+<tr class="separator:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae7d26e3df447c2c14a569fcc18516af4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4">GLFW_JOYSTICK_11</a>&#160;&#160;&#160;10</td></tr>
+<tr class="separator:gae7d26e3df447c2c14a569fcc18516af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">GLFW_JOYSTICK_12</a>&#160;&#160;&#160;11</td></tr>
+<tr class="separator:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508">GLFW_JOYSTICK_13</a>&#160;&#160;&#160;12</td></tr>
+<tr class="separator:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga89540873278ae5a42b3e70d64164dc74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74">GLFW_JOYSTICK_14</a>&#160;&#160;&#160;13</td></tr>
+<tr class="separator:ga89540873278ae5a42b3e70d64164dc74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">GLFW_JOYSTICK_15</a>&#160;&#160;&#160;14</td></tr>
+<tr class="separator:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga453edeeabf350827646b6857df4f80ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a>&#160;&#160;&#160;15</td></tr>
+<tr class="separator:ga453edeeabf350827646b6857df4f80ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9">GLFW_JOYSTICK_LAST</a>&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td></tr>
+<tr class="separator:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2228a6512fd5950cdb51ba07846546fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga2228a6512fd5950cdb51ba07846546fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga52cc94785cf3fe9a12e246539259887c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga52cc94785cf3fe9a12e246539259887c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc931248bda494b530cbe057f386a5ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:gafc931248bda494b530cbe057f386a5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabc7c0264ce778835b516a472b47f6caf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:gabc7c0264ce778835b516a472b47f6caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga04606949dd9139434b8a1bedf4ac1021"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga04606949dd9139434b8a1bedf4ac1021"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3e089787327454f7bfca7364d6ca206a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a>&#160;&#160;&#160;9</td></tr>
+<tr class="separator:ga3e089787327454f7bfca7364d6ca206a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1c003f52b5aebb45272475b48953b21a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a>&#160;&#160;&#160;10</td></tr>
+<tr class="separator:ga1c003f52b5aebb45272475b48953b21a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a>&#160;&#160;&#160;11</td></tr>
+<tr class="separator:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a>&#160;&#160;&#160;12</td></tr>
+<tr class="separator:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8f2b731b97d80f90f11967a83207665c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a>&#160;&#160;&#160;13</td></tr>
+<tr class="separator:ga8f2b731b97d80f90f11967a83207665c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a>&#160;&#160;&#160;14</td></tr>
+<tr class="separator:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5cc98882f4f81dacf761639a567f61eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td></tr>
+<tr class="separator:ga5cc98882f4f81dacf761639a567f61eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf08d0df26527c9305253422bd98ed63a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td></tr>
+<tr class="separator:gaf08d0df26527c9305253422bd98ed63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaef094b3dacbf15f272b274516839b82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td></tr>
+<tr class="separator:gaaef094b3dacbf15f272b274516839b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td></tr>
+<tr class="separator:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td></tr>
+<tr class="separator:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga544e396d092036a7d80c1e5f233f7a38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga544e396d092036a7d80c1e5f233f7a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6d79561dd8907c37354426242901b86e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:ga6d79561dd8907c37354426242901b86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0818fd9433e1359692b7443293e5ac86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td></tr>
+<tr class="separator:ga0818fd9433e1359692b7443293e5ac86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memdesc:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">No error has occurred. <a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">More...</a><br /></td></tr>
+<tr class="separator:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>&#160;&#160;&#160;0x00010001</td></tr>
+<tr class="memdesc:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW has not been initialized. <a href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">More...</a><br /></td></tr>
+<tr class="separator:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>&#160;&#160;&#160;0x00010002</td></tr>
+<tr class="memdesc:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">No context is current for this thread. <a href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">More...</a><br /></td></tr>
+<tr class="separator:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76f6bb9c4eea73db675f096b404593ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>&#160;&#160;&#160;0x00010003</td></tr>
+<tr class="memdesc:ga76f6bb9c4eea73db675f096b404593ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid enum value. <a href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">More...</a><br /></td></tr>
+<tr class="separator:ga76f6bb9c4eea73db675f096b404593ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>&#160;&#160;&#160;0x00010004</td></tr>
+<tr class="memdesc:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid value. <a href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">More...</a><br /></td></tr>
+<tr class="separator:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">GLFW_OUT_OF_MEMORY</a>&#160;&#160;&#160;0x00010005</td></tr>
+<tr class="memdesc:ga9023953a2bcb98c2906afd071d21ee7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">A memory allocation failed. <a href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">More...</a><br /></td></tr>
+<tr class="separator:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga56882b290db23261cc6c053c40c2d08e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>&#160;&#160;&#160;0x00010006</td></tr>
+<tr class="memdesc:ga56882b290db23261cc6c053c40c2d08e"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW could not find support for the requested API on the system. <a href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">More...</a><br /></td></tr>
+<tr class="separator:ga56882b290db23261cc6c053c40c2d08e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>&#160;&#160;&#160;0x00010007</td></tr>
+<tr class="memdesc:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested OpenGL or OpenGL ES version is not available. <a href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">More...</a><br /></td></tr>
+<tr class="separator:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>&#160;&#160;&#160;0x00010008</td></tr>
+<tr class="memdesc:gad44162d78100ea5e87cdd38426b8c7a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">A platform-specific error occurred that does not match any of the more specific categories. <a href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">More...</a><br /></td></tr>
+<tr class="separator:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga196e125ef261d94184e2b55c05762f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a>&#160;&#160;&#160;0x00010009</td></tr>
+<tr class="memdesc:ga196e125ef261d94184e2b55c05762f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested format is not supported or available. <a href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">More...</a><br /></td></tr>
+<tr class="separator:ga196e125ef261d94184e2b55c05762f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacff24d2757da752ae4c80bf452356487"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a>&#160;&#160;&#160;0x0001000A</td></tr>
+<tr class="memdesc:gacff24d2757da752ae4c80bf452356487"><td class="mdescLeft">&#160;</td><td class="mdescRight">The specified window does not have an OpenGL or OpenGL ES context. <a href="group__errors.html#gacff24d2757da752ae4c80bf452356487">More...</a><br /></td></tr>
+<tr class="separator:gacff24d2757da752ae4c80bf452356487"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>&#160;&#160;&#160;0x00020001</td></tr>
+<tr class="memdesc:ga54ddb14825a1541a56e22afb5f832a9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus window hint and attribute. <a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">More...</a><br /></td></tr>
+<tr class="separator:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga39d44b7c056e55e581355a92d240b58a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>&#160;&#160;&#160;0x00020002</td></tr>
+<tr class="memdesc:ga39d44b7c056e55e581355a92d240b58a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window iconification window attribute. <a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">More...</a><br /></td></tr>
+<tr class="separator:ga39d44b7c056e55e581355a92d240b58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>&#160;&#160;&#160;0x00020003</td></tr>
+<tr class="memdesc:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window resize-ability window hint and attribute. <a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">More...</a><br /></td></tr>
+<tr class="separator:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>&#160;&#160;&#160;0x00020004</td></tr>
+<tr class="memdesc:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window visibility window hint and attribute. <a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">More...</a><br /></td></tr>
+<tr class="separator:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga21b854d36314c94d65aed84405b2f25e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a>&#160;&#160;&#160;0x00020005</td></tr>
+<tr class="memdesc:ga21b854d36314c94d65aed84405b2f25e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">More...</a><br /></td></tr>
+<tr class="separator:ga21b854d36314c94d65aed84405b2f25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9d9874fc928200136a6dcdad726aa252"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">GLFW_AUTO_ICONIFY</a>&#160;&#160;&#160;0x00020006</td></tr>
+<tr class="memdesc:ga9d9874fc928200136a6dcdad726aa252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window auto-iconification window hint and attribute. <a href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">More...</a><br /></td></tr>
+<tr class="separator:ga9d9874fc928200136a6dcdad726aa252"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a>&#160;&#160;&#160;0x00020007</td></tr>
+<tr class="memdesc:ga7fb0be51407783b41adbf5bec0b09d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">More...</a><br /></td></tr>
+<tr class="separator:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>&#160;&#160;&#160;0x00020008</td></tr>
+<tr class="memdesc:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window maximization window hint and attribute. <a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">More...</a><br /></td></tr>
+<tr class="separator:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a>&#160;&#160;&#160;0x00020009</td></tr>
+<tr class="memdesc:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cursor centering window hint. <a href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">More...</a><br /></td></tr>
+<tr class="separator:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>&#160;&#160;&#160;0x0002000A</td></tr>
+<tr class="memdesc:ga60a0578c3b9449027d683a9c6abb9f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window framebuffer transparency hint and attribute. <a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">More...</a><br /></td></tr>
+<tr class="separator:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>&#160;&#160;&#160;0x0002000B</td></tr>
+<tr class="memdesc:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse cursor hover window attribute. <a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">More...</a><br /></td></tr>
+<tr class="separator:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafa94b1da34bfd6488c0d709761504dfc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a>&#160;&#160;&#160;0x0002000C</td></tr>
+<tr class="memdesc:gafa94b1da34bfd6488c0d709761504dfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus on calling show window hint and attribute. <a href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">More...</a><br /></td></tr>
+<tr class="separator:gafa94b1da34bfd6488c0d709761504dfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>&#160;&#160;&#160;0x00021001</td></tr>
+<tr class="memdesc:gaf78ed8e417dbcc1e354906cc2708c982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">More...</a><br /></td></tr>
+<tr class="separator:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>&#160;&#160;&#160;0x00021002</td></tr>
+<tr class="memdesc:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">More...</a><br /></td></tr>
+<tr class="separator:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab292ea403db6d514537b515311bf9ae3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>&#160;&#160;&#160;0x00021003</td></tr>
+<tr class="memdesc:gab292ea403db6d514537b515311bf9ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">More...</a><br /></td></tr>
+<tr class="separator:gab292ea403db6d514537b515311bf9ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafed79a3f468997877da86c449bd43e8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafed79a3f468997877da86c449bd43e8c">GLFW_ALPHA_BITS</a>&#160;&#160;&#160;0x00021004</td></tr>
+<tr class="memdesc:gafed79a3f468997877da86c449bd43e8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafed79a3f468997877da86c449bd43e8c">More...</a><br /></td></tr>
+<tr class="separator:gafed79a3f468997877da86c449bd43e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga318a55eac1fee57dfe593b6d38149d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">GLFW_DEPTH_BITS</a>&#160;&#160;&#160;0x00021005</td></tr>
+<tr class="memdesc:ga318a55eac1fee57dfe593b6d38149d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">More...</a><br /></td></tr>
+<tr class="separator:ga318a55eac1fee57dfe593b6d38149d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">GLFW_STENCIL_BITS</a>&#160;&#160;&#160;0x00021006</td></tr>
+<tr class="memdesc:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">More...</a><br /></td></tr>
+<tr class="separator:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">GLFW_ACCUM_RED_BITS</a>&#160;&#160;&#160;0x00021007</td></tr>
+<tr class="memdesc:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">More...</a><br /></td></tr>
+<tr class="separator:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga65713cee1326f8e9d806fdf93187b471"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">GLFW_ACCUM_GREEN_BITS</a>&#160;&#160;&#160;0x00021008</td></tr>
+<tr class="memdesc:ga65713cee1326f8e9d806fdf93187b471"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">More...</a><br /></td></tr>
+<tr class="separator:ga65713cee1326f8e9d806fdf93187b471"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">GLFW_ACCUM_BLUE_BITS</a>&#160;&#160;&#160;0x00021009</td></tr>
+<tr class="memdesc:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">More...</a><br /></td></tr>
+<tr class="separator:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae829b55591c18169a40ab4067a041b1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae829b55591c18169a40ab4067a041b1f">GLFW_ACCUM_ALPHA_BITS</a>&#160;&#160;&#160;0x0002100A</td></tr>
+<tr class="memdesc:gae829b55591c18169a40ab4067a041b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gae829b55591c18169a40ab4067a041b1f">More...</a><br /></td></tr>
+<tr class="separator:gae829b55591c18169a40ab4067a041b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab05108c5029443b371112b031d1fa174"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab05108c5029443b371112b031d1fa174">GLFW_AUX_BUFFERS</a>&#160;&#160;&#160;0x0002100B</td></tr>
+<tr class="memdesc:gab05108c5029443b371112b031d1fa174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer auxiliary buffer hint. <a href="group__window.html#gab05108c5029443b371112b031d1fa174">More...</a><br /></td></tr>
+<tr class="separator:gab05108c5029443b371112b031d1fa174"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga83d991efca02537e2d69969135b77b03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga83d991efca02537e2d69969135b77b03">GLFW_STEREO</a>&#160;&#160;&#160;0x0002100C</td></tr>
+<tr class="memdesc:ga83d991efca02537e2d69969135b77b03"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL stereoscopic rendering hint. <a href="group__window.html#ga83d991efca02537e2d69969135b77b03">More...</a><br /></td></tr>
+<tr class="separator:ga83d991efca02537e2d69969135b77b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">GLFW_SAMPLES</a>&#160;&#160;&#160;0x0002100D</td></tr>
+<tr class="memdesc:ga2cdf86fdcb7722fb8829c4e201607535"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer MSAA samples hint. <a href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">More...</a><br /></td></tr>
+<tr class="separator:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga444a8f00414a63220591f9fdb7b5642b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">GLFW_SRGB_CAPABLE</a>&#160;&#160;&#160;0x0002100E</td></tr>
+<tr class="memdesc:ga444a8f00414a63220591f9fdb7b5642b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer sRGB hint. <a href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">More...</a><br /></td></tr>
+<tr class="separator:ga444a8f00414a63220591f9fdb7b5642b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0f20825e6e47ee8ba389024519682212"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>&#160;&#160;&#160;0x0002100F</td></tr>
+<tr class="memdesc:ga0f20825e6e47ee8ba389024519682212"><td class="mdescLeft">&#160;</td><td class="mdescRight">Monitor refresh rate hint. <a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">More...</a><br /></td></tr>
+<tr class="separator:ga0f20825e6e47ee8ba389024519682212"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga714a5d569e8a274ea58fdfa020955339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">GLFW_DOUBLEBUFFER</a>&#160;&#160;&#160;0x00021010</td></tr>
+<tr class="memdesc:ga714a5d569e8a274ea58fdfa020955339"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer double buffering hint. <a href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">More...</a><br /></td></tr>
+<tr class="separator:ga714a5d569e8a274ea58fdfa020955339"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>&#160;&#160;&#160;0x00022001</td></tr>
+<tr class="memdesc:ga649309cf72a3d3de5b1348ca7936c95b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API hint and attribute. <a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">More...</a><br /></td></tr>
+<tr class="separator:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>&#160;&#160;&#160;0x00022002</td></tr>
+<tr class="memdesc:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API major version hint and attribute. <a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">More...</a><br /></td></tr>
+<tr class="separator:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>&#160;&#160;&#160;0x00022003</td></tr>
+<tr class="memdesc:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API minor version hint and attribute. <a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">More...</a><br /></td></tr>
+<tr class="separator:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">GLFW_CONTEXT_REVISION</a>&#160;&#160;&#160;0x00022004</td></tr>
+<tr class="memdesc:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API revision number attribute. <a href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">More...</a><br /></td></tr>
+<tr class="separator:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gade3593916b4c507900aa2d6844810e00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gade3593916b4c507900aa2d6844810e00">GLFW_CONTEXT_ROBUSTNESS</a>&#160;&#160;&#160;0x00022005</td></tr>
+<tr class="memdesc:gade3593916b4c507900aa2d6844810e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context robustness hint and attribute. <a href="group__window.html#gade3593916b4c507900aa2d6844810e00">More...</a><br /></td></tr>
+<tr class="separator:gade3593916b4c507900aa2d6844810e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga13d24b12465da8b28985f46c8557925b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga13d24b12465da8b28985f46c8557925b">GLFW_OPENGL_FORWARD_COMPAT</a>&#160;&#160;&#160;0x00022006</td></tr>
+<tr class="memdesc:ga13d24b12465da8b28985f46c8557925b"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL forward-compatibility hint and attribute. <a href="group__window.html#ga13d24b12465da8b28985f46c8557925b">More...</a><br /></td></tr>
+<tr class="separator:ga13d24b12465da8b28985f46c8557925b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">GLFW_OPENGL_DEBUG_CONTEXT</a>&#160;&#160;&#160;0x00022007</td></tr>
+<tr class="memdesc:ga87ec2df0b915201e950ca42d5d0831e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug mode context hint and attribute. <a href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">More...</a><br /></td></tr>
+<tr class="separator:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">GLFW_OPENGL_PROFILE</a>&#160;&#160;&#160;0x00022008</td></tr>
+<tr class="memdesc:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL profile hint and attribute. <a href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">More...</a><br /></td></tr>
+<tr class="separator:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0x00022009</td></tr>
+<tr class="memdesc:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context flush-on-release hint and attribute. <a href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">More...</a><br /></td></tr>
+<tr class="separator:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5a52fdfd46d8249c211f923675728082"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a>&#160;&#160;&#160;0x0002200A</td></tr>
+<tr class="memdesc:ga5a52fdfd46d8249c211f923675728082"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context error suppression hint and attribute. <a href="group__window.html#ga5a52fdfd46d8249c211f923675728082">More...</a><br /></td></tr>
+<tr class="separator:ga5a52fdfd46d8249c211f923675728082"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a>&#160;&#160;&#160;0x0002200B</td></tr>
+<tr class="memdesc:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context creation API hint and attribute. <a href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">More...</a><br /></td></tr>
+<tr class="separator:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga620bc4280c7eab81ac9f02204500ed47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">GLFW_SCALE_TO_MONITOR</a>&#160;&#160;&#160;0x0002200C</td></tr>
+<tr class="memdesc:ga620bc4280c7eab81ac9f02204500ed47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window content area scaling window <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">window hint</a>. <a href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">More...</a><br /></td></tr>
+<tr class="separator:ga620bc4280c7eab81ac9f02204500ed47"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a>&#160;&#160;&#160;0x00023001</td></tr>
+<tr class="memdesc:gab6ef2d02eb55800d249ccf1af253c35e"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">window hint</a>. <a href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">More...</a><br /></td></tr>
+<tr class="separator:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a>&#160;&#160;&#160;0x00023002</td></tr>
+<tr class="memdesc:ga70fa0fbc745de6aa824df79a580e84b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">window hint</a>. <a href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">More...</a><br /></td></tr>
+<tr class="separator:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a>&#160;&#160;&#160;0x00023003</td></tr>
+<tr class="memdesc:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_GRAPHICS_SWITCHING_hint">window hint</a>. <a href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">More...</a><br /></td></tr>
+<tr class="separator:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae5a9ea2fccccd92edbd343fc56461114"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a>&#160;&#160;&#160;0x00024001</td></tr>
+<tr class="memdesc:gae5a9ea2fccccd92edbd343fc56461114"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">More...</a><br /></td></tr>
+<tr class="separator:gae5a9ea2fccccd92edbd343fc56461114"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga494c3c0d911e4b860b946530a3e389e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a>&#160;&#160;&#160;0x00024002</td></tr>
+<tr class="memdesc:ga494c3c0d911e4b860b946530a3e389e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">More...</a><br /></td></tr>
+<tr class="separator:ga494c3c0d911e4b860b946530a3e389e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8f6dcdc968d214ff14779564f1389264"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a8f6dcdc968d214ff14779564f1389264"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a01b3f66db266341425e9abee6b257db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a01b3f66db266341425e9abee6b257db2">GLFW_OPENGL_API</a>&#160;&#160;&#160;0x00030001</td></tr>
+<tr class="separator:a01b3f66db266341425e9abee6b257db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a28d9b3bc6c2a522d815c8e146595051f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f">GLFW_OPENGL_ES_API</a>&#160;&#160;&#160;0x00030002</td></tr>
+<tr class="separator:a28d9b3bc6c2a522d815c8e146595051f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b306cb27f5bb0d6d67c7356a0e0fc34"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34">GLFW_NO_ROBUSTNESS</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a8b306cb27f5bb0d6d67c7356a0e0fc34"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aee84a679230d205005e22487ff678a85"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aee84a679230d205005e22487ff678a85">GLFW_NO_RESET_NOTIFICATION</a>&#160;&#160;&#160;0x00031001</td></tr>
+<tr class="separator:aee84a679230d205005e22487ff678a85"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aec1132f245143fc915b2f0995228564c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aec1132f245143fc915b2f0995228564c">GLFW_LOSE_CONTEXT_ON_RESET</a>&#160;&#160;&#160;0x00031002</td></tr>
+<tr class="separator:aec1132f245143fc915b2f0995228564c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad6f2335d6f21cc9bab96633b1c111d5f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f">GLFW_OPENGL_ANY_PROFILE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ad6f2335d6f21cc9bab96633b1c111d5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af094bb16da76f66ebceb19ee213b3de8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8">GLFW_OPENGL_CORE_PROFILE</a>&#160;&#160;&#160;0x00032001</td></tr>
+<tr class="separator:af094bb16da76f66ebceb19ee213b3de8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac06b663d79c8fcf04669cc8fcc0b7670"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670">GLFW_OPENGL_COMPAT_PROFILE</a>&#160;&#160;&#160;0x00032002</td></tr>
+<tr class="separator:ac06b663d79c8fcf04669cc8fcc0b7670"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aade31da5b884a84a7625c6b059b9132c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>&#160;&#160;&#160;0x00033001</td></tr>
+<tr class="separator:aade31da5b884a84a7625c6b059b9132c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae3bbe2315b7691ab088159eb6c9110fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a>&#160;&#160;&#160;0x00033002</td></tr>
+<tr class="separator:ae3bbe2315b7691ab088159eb6c9110fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4d7ce8ce71030c3b04e2b78145bc59d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a>&#160;&#160;&#160;0x00033003</td></tr>
+<tr class="separator:a4d7ce8ce71030c3b04e2b78145bc59d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a07b84de0b52143e1958f88a7d9105947"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a>&#160;&#160;&#160;0x00033004</td></tr>
+<tr class="separator:a07b84de0b52143e1958f88a7d9105947"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aeeda1be76a44a1fc97c1282e06281fbb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a>&#160;&#160;&#160;0x00033005</td></tr>
+<tr class="separator:aeeda1be76a44a1fc97c1282e06281fbb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae04dd25c8577e19fa8c97368561f6c68"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a>&#160;&#160;&#160;0x00034001</td></tr>
+<tr class="separator:ae04dd25c8577e19fa8c97368561f6c68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac4d5cb9d78de8573349c58763d53bf11"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a>&#160;&#160;&#160;0x00034002</td></tr>
+<tr class="separator:ac4d5cb9d78de8573349c58763d53bf11"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a2315b99a329ce53e6a13a9d46fd5ca88"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a>&#160;&#160;&#160;0x00034003</td></tr>
+<tr class="separator:a2315b99a329ce53e6a13a9d46fd5ca88"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6b47d806f285efe9bfd7aeec667297ee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee">GLFW_ANY_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:a6b47d806f285efe9bfd7aeec667297ee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a999961d391db49cb4f949c1dece0e13b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b">GLFW_RELEASE_BEHAVIOR_FLUSH</a>&#160;&#160;&#160;0x00035001</td></tr>
+<tr class="separator:a999961d391db49cb4f949c1dece0e13b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afca09088eccacdce4b59036cfae349c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#afca09088eccacdce4b59036cfae349c5">GLFW_RELEASE_BEHAVIOR_NONE</a>&#160;&#160;&#160;0x00035002</td></tr>
+<tr class="separator:afca09088eccacdce4b59036cfae349c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0494c9bfd3f584ab41e6dbeeaa0e6a19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19">GLFW_NATIVE_CONTEXT_API</a>&#160;&#160;&#160;0x00036001</td></tr>
+<tr class="separator:a0494c9bfd3f584ab41e6dbeeaa0e6a19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a03cf65c9ab01fc8b872ba58842c531c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9">GLFW_EGL_CONTEXT_API</a>&#160;&#160;&#160;0x00036002</td></tr>
+<tr class="separator:a03cf65c9ab01fc8b872ba58842c531c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd34a473af9fa81f317910ea371b19e3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3">GLFW_OSMESA_CONTEXT_API</a>&#160;&#160;&#160;0x00036003</td></tr>
+<tr class="separator:afd34a473af9fa81f317910ea371b19e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">GLFW_ARROW_CURSOR</a>&#160;&#160;&#160;0x00036001</td></tr>
+<tr class="memdesc:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The regular arrow cursor shape. <a href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">More...</a><br /></td></tr>
+<tr class="separator:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga36185f4375eaada1b04e431244774c86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">GLFW_IBEAM_CURSOR</a>&#160;&#160;&#160;0x00036002</td></tr>
+<tr class="memdesc:ga36185f4375eaada1b04e431244774c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">The text input I-beam cursor shape. <a href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">More...</a><br /></td></tr>
+<tr class="separator:ga36185f4375eaada1b04e431244774c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">GLFW_CROSSHAIR_CURSOR</a>&#160;&#160;&#160;0x00036003</td></tr>
+<tr class="memdesc:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The crosshair shape. <a href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">More...</a><br /></td></tr>
+<tr class="separator:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1db35e20849e0837c82e3dc1fd797263"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">GLFW_HAND_CURSOR</a>&#160;&#160;&#160;0x00036004</td></tr>
+<tr class="memdesc:ga1db35e20849e0837c82e3dc1fd797263"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hand shape. <a href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">More...</a><br /></td></tr>
+<tr class="separator:ga1db35e20849e0837c82e3dc1fd797263"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabb3eb0109f11bb808fc34659177ca962"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036005</td></tr>
+<tr class="memdesc:gabb3eb0109f11bb808fc34659177ca962"><td class="mdescLeft">&#160;</td><td class="mdescRight">The horizontal resize arrow shape. <a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">More...</a><br /></td></tr>
+<tr class="separator:gabb3eb0109f11bb808fc34659177ca962"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">GLFW_VRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036006</td></tr>
+<tr class="memdesc:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The vertical resize arrow shape. <a href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">More...</a><br /></td></tr>
+<tr class="separator:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:abe11513fd1ffbee5bb9b173f06028b9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>&#160;&#160;&#160;0x00040001</td></tr>
+<tr class="separator:abe11513fd1ffbee5bb9b173f06028b9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aab64b25921ef21d89252d6f0a71bfc32"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>&#160;&#160;&#160;0x00040002</td></tr>
+<tr class="separator:aab64b25921ef21d89252d6f0a71bfc32"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab9c0534709fda03ec8959201da3a9a18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>&#160;&#160;&#160;0x00050001</td></tr>
+<tr class="memdesc:gab9c0534709fda03ec8959201da3a9a18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat buttons init hint. <a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">More...</a><br /></td></tr>
+<tr class="separator:gab9c0534709fda03ec8959201da3a9a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab937983147a3158d45f88fad7129d9f2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a>&#160;&#160;&#160;0x00051001</td></tr>
+<tr class="memdesc:gab937983147a3158d45f88fad7129d9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#gab937983147a3158d45f88fad7129d9f2">More...</a><br /></td></tr>
+<tr class="separator:gab937983147a3158d45f88fad7129d9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a>&#160;&#160;&#160;0x00051002</td></tr>
+<tr class="memdesc:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">More...</a><br /></td></tr>
+<tr class="separator:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7a2edf2c18446833d27d07f1b7f3d571"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>&#160;&#160;&#160;-1</td></tr>
+<tr class="separator:a7a2edf2c18446833d27d07f1b7f3d571"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aa97755eb47e4bf2727ad45d610e18206"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206">GLAPIENTRY</a>&#160;&#160;&#160;APIENTRY</td></tr>
+<tr class="separator:aa97755eb47e4bf2727ad45d610e18206"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a3b526ac796be993406ea2f1642c25fc3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="glfw3_8h.html#a3b526ac796be993406ea2f1642c25fc3">GLFW_GLAPIENTRY_DEFINED</a></td></tr>
+<tr class="separator:a3b526ac796be993406ea2f1642c25fc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr><td colspan="2"><div class="groupHeader">GLFW version macros</div></td></tr>
+<tr class="memitem:ga6337d9ea43b22fc529b2bba066b4a576"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a>&#160;&#160;&#160;3</td></tr>
+<tr class="memdesc:ga6337d9ea43b22fc529b2bba066b4a576"><td class="mdescLeft">&#160;</td><td class="mdescRight">The major version number of the GLFW header. <a href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">More...</a><br /></td></tr>
+<tr class="separator:ga6337d9ea43b22fc529b2bba066b4a576"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>&#160;&#160;&#160;3</td></tr>
+<tr class="memdesc:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The minor version number of the GLFW header. <a href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">More...</a><br /></td></tr>
+<tr class="separator:gaf80d40f0aea7088ff337606e9c48f7a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab72ae2e2035d9ea461abc3495eac0502"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a>&#160;&#160;&#160;8</td></tr>
+<tr class="memdesc:gab72ae2e2035d9ea461abc3495eac0502"><td class="mdescLeft">&#160;</td><td class="mdescRight">The revision number of the GLFW header. <a href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">More...</a><br /></td></tr>
+<tr class="separator:gab72ae2e2035d9ea461abc3495eac0502"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr><td colspan="2"><div class="groupHeader">Key and button actions</div></td></tr>
+<tr class="memitem:gada11d965c4da13090ad336e030e4d11f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gada11d965c4da13090ad336e030e4d11f">GLFW_RELEASE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memdesc:gada11d965c4da13090ad336e030e4d11f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key or mouse button was released. <a href="group__input.html#gada11d965c4da13090ad336e030e4d11f">More...</a><br /></td></tr>
+<tr class="separator:gada11d965c4da13090ad336e030e4d11f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2485743d0b59df3791c45951c4195265"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>&#160;&#160;&#160;1</td></tr>
+<tr class="memdesc:ga2485743d0b59df3791c45951c4195265"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key or mouse button was pressed. <a href="group__input.html#ga2485743d0b59df3791c45951c4195265">More...</a><br /></td></tr>
+<tr class="separator:ga2485743d0b59df3791c45951c4195265"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f">GLFW_REPEAT</a>&#160;&#160;&#160;2</td></tr>
+<tr class="memdesc:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The key was held down until it repeated. <a href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f">More...</a><br /></td></tr>
+<tr class="separator:gac96fd3b9fc66c6f0eebaf6532595338f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>) (void)</td></tr>
+<tr class="memdesc:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Client API function pointer type. <a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">More...</a><br /></td></tr>
+<tr class="separator:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70c01918dc9d233a4fbe0681a43018af"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>) (void)</td></tr>
+<tr class="memdesc:ga70c01918dc9d233a4fbe0681a43018af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vulkan API function pointer type. <a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">More...</a><br /></td></tr>
+<tr class="separator:ga70c01918dc9d233a4fbe0681a43018af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td></tr>
+<tr class="memdesc:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque monitor object. <a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">More...</a><br /></td></tr>
+<tr class="separator:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td></tr>
+<tr class="memdesc:ga3c96d80d363e67d13a41b5d1821f3242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque window object. <a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">More...</a><br /></td></tr>
+<tr class="separator:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td></tr>
+<tr class="memdesc:ga89261ae18c75e863aaf2656ecdd238f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque cursor object. <a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">More...</a><br /></td></tr>
+<tr class="separator:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8184701785c096b3862a75cda1bf44a3"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>) (int error_code, const char *description)</td></tr>
+<tr class="memdesc:ga8184701785c096b3862a75cda1bf44a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for error callbacks. <a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">More...</a><br /></td></tr>
+<tr class="separator:ga8184701785c096b3862a75cda1bf44a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
+<tr class="memdesc:gabe287973a21a8f927cde4db06b8dcbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window position callbacks. <a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">More...</a><br /></td></tr>
+<tr class="separator:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaec0282944bb810f6f3163ec02da90350"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:gaec0282944bb810f6f3163ec02da90350"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window size callbacks. <a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">More...</a><br /></td></tr>
+<tr class="separator:gaec0282944bb810f6f3163ec02da90350"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabf859b936d80961b7d39013a9694cc3e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gabf859b936d80961b7d39013a9694cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window close callbacks. <a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">More...</a><br /></td></tr>
+<tr class="separator:gabf859b936d80961b7d39013a9694cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga431663a1427d2eb3a273bc398b6737b5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga431663a1427d2eb3a273bc398b6737b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content refresh callbacks. <a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">More...</a><br /></td></tr>
+<tr class="separator:ga431663a1427d2eb3a273bc398b6737b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td></tr>
+<tr class="memdesc:gabc58c47e9d93f6eb1862d615c3680f46"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window focus callbacks. <a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">More...</a><br /></td></tr>
+<tr class="separator:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td></tr>
+<tr class="memdesc:ga35c658cccba236f26e7adee0e25f6a4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window iconify callbacks. <a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">More...</a><br /></td></tr>
+<tr class="separator:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3017196fdaec33ac3e095765176c2a90"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td></tr>
+<tr class="memdesc:ga3017196fdaec33ac3e095765176c2a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window maximize callbacks. <a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">More...</a><br /></td></tr>
+<tr class="separator:ga3017196fdaec33ac3e095765176c2a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae18026e294dde685ed2e5f759533144d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:gae18026e294dde685ed2e5f759533144d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for framebuffer size callbacks. <a href="group__window.html#gae18026e294dde685ed2e5f759533144d">More...</a><br /></td></tr>
+<tr class="separator:gae18026e294dde685ed2e5f759533144d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td></tr>
+<tr class="memdesc:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content scale callbacks. <a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">More...</a><br /></td></tr>
+<tr class="separator:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0184dcb59f6d85d735503dcaae809727"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td></tr>
+<tr class="memdesc:ga0184dcb59f6d85d735503dcaae809727"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for mouse button callbacks. <a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">More...</a><br /></td></tr>
+<tr class="separator:ga0184dcb59f6d85d735503dcaae809727"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
+<tr class="memdesc:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor position callbacks. <a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">More...</a><br /></td></tr>
+<tr class="separator:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td></tr>
+<tr class="memdesc:gaa93dc4818ac9ab32532909d53a337cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor enter/leave callbacks. <a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">More...</a><br /></td></tr>
+<tr class="separator:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf656112c33de3efdb227fa58f0134cf5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td></tr>
+<tr class="memdesc:gaf656112c33de3efdb227fa58f0134cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for scroll callbacks. <a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">More...</a><br /></td></tr>
+<tr class="separator:gaf656112c33de3efdb227fa58f0134cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5bd751b27b90f865d2ea613533f0453c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td></tr>
+<tr class="memdesc:ga5bd751b27b90f865d2ea613533f0453c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for keyboard key callbacks. <a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">More...</a><br /></td></tr>
+<tr class="separator:ga5bd751b27b90f865d2ea613533f0453c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td></tr>
+<tr class="memdesc:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character callbacks. <a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">More...</a><br /></td></tr>
+<tr class="separator:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td></tr>
+<tr class="memdesc:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character with modifiers callbacks. <a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">More...</a><br /></td></tr>
+<tr class="separator:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaba73c3274062c18723b7f05862d94b2"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td></tr>
+<tr class="memdesc:gaaba73c3274062c18723b7f05862d94b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for path drop callbacks. <a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">More...</a><br /></td></tr>
+<tr class="separator:gaaba73c3274062c18723b7f05862d94b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaabe16caca8dea952504dfdebdf4cd249"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td></tr>
+<tr class="memdesc:gaabe16caca8dea952504dfdebdf4cd249"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for monitor configuration callbacks. <a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">More...</a><br /></td></tr>
+<tr class="separator:gaabe16caca8dea952504dfdebdf4cd249"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa21ad5986ae9a26077a40142efb56243"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>) (int jid, int event)</td></tr>
+<tr class="memdesc:gaa21ad5986ae9a26077a40142efb56243"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for joystick configuration callbacks. <a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">More...</a><br /></td></tr>
+<tr class="separator:gaa21ad5986ae9a26077a40142efb56243"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga902c2816ac9b34b757282daab59b2565"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></td></tr>
+<tr class="memdesc:ga902c2816ac9b34b757282daab59b2565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video mode type. <a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">More...</a><br /></td></tr>
+<tr class="separator:ga902c2816ac9b34b757282daab59b2565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga939cf093cb0af0498b7b54dc2e181404"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></td></tr>
+<tr class="memdesc:ga939cf093cb0af0498b7b54dc2e181404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamma ramp. <a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">More...</a><br /></td></tr>
+<tr class="separator:ga939cf093cb0af0498b7b54dc2e181404"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></td></tr>
+<tr class="memdesc:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image data. <a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">More...</a><br /></td></tr>
+<tr class="separator:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga61acfb1f28f751438dd221225c5e725d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></td></tr>
+<tr class="memdesc:ga61acfb1f28f751438dd221225c5e725d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad input state. <a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">More...</a><br /></td></tr>
+<tr class="separator:ga61acfb1f28f751438dd221225c5e725d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga317aac130a235ab08c6db0834907d85e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> (void)</td></tr>
+<tr class="memdesc:ga317aac130a235ab08c6db0834907d85e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the GLFW library. <a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">More...</a><br /></td></tr>
+<tr class="separator:ga317aac130a235ab08c6db0834907d85e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> (void)</td></tr>
+<tr class="memdesc:gaaae48c0a18607ea4a4ba951d939f0901"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates the GLFW library. <a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">More...</a><br /></td></tr>
+<tr class="separator:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga110fd1d3f0412822b4f1908c026f724a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a> (int hint, int value)</td></tr>
+<tr class="memdesc:ga110fd1d3f0412822b4f1908c026f724a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified init hint to the desired value. <a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">More...</a><br /></td></tr>
+<tr class="separator:ga110fd1d3f0412822b4f1908c026f724a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> (int *major, int *minor, int *rev)</td></tr>
+<tr class="memdesc:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the version of the GLFW library. <a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">More...</a><br /></td></tr>
+<tr class="separator:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga026abd003c8e6501981ab1662062f1c0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a> (void)</td></tr>
+<tr class="memdesc:ga026abd003c8e6501981ab1662062f1c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string describing the compile-time configuration. <a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">More...</a><br /></td></tr>
+<tr class="separator:ga026abd003c8e6501981ab1662062f1c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga944986b4ec0b928d488141f92982aa18"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> (const char **description)</td></tr>
+<tr class="memdesc:ga944986b4ec0b928d488141f92982aa18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns and clears the last error for the calling thread. <a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">More...</a><br /></td></tr>
+<tr class="separator:ga944986b4ec0b928d488141f92982aa18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff45816610d53f0b83656092a4034f40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a> (<a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback)</td></tr>
+<tr class="memdesc:gaff45816610d53f0b83656092a4034f40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the error callback. <a href="group__init.html#gaff45816610d53f0b83656092a4034f40">More...</a><br /></td></tr>
+<tr class="separator:gaff45816610d53f0b83656092a4034f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70b1156d5d24e9928f145d6c864369d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a> (int *count)</td></tr>
+<tr class="memdesc:ga70b1156d5d24e9928f145d6c864369d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the currently connected monitors. <a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">More...</a><br /></td></tr>
+<tr class="separator:ga70b1156d5d24e9928f145d6c864369d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3adb24947eb709e1874028272e5dfc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> (void)</td></tr>
+<tr class="memdesc:gac3adb24947eb709e1874028272e5dfc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the primary monitor. <a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">More...</a><br /></td></tr>
+<tr class="separator:gac3adb24947eb709e1874028272e5dfc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga102f54e7acc9149edbcf0997152df8c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos)</td></tr>
+<tr class="memdesc:ga102f54e7acc9149edbcf0997152df8c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the position of the monitor's viewport on the virtual screen. <a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">More...</a><br /></td></tr>
+<tr class="separator:ga102f54e7acc9149edbcf0997152df8c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos, int *width, int *height)</td></tr>
+<tr class="memdesc:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the work area of the monitor. <a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">More...</a><br /></td></tr>
+<tr class="separator:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *widthMM, int *heightMM)</td></tr>
+<tr class="memdesc:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the physical size of the monitor. <a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">More...</a><br /></td></tr>
+<tr class="separator:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad3152e84465fa620b601265ebfcdb21b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float *xscale, float *yscale)</td></tr>
+<tr class="memdesc:gad3152e84465fa620b601265ebfcdb21b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified monitor. <a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">More...</a><br /></td></tr>
+<tr class="separator:gad3152e84465fa620b601265ebfcdb21b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7af83e13489d90379588fb331b9e4b68"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga7af83e13489d90379588fb331b9e4b68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified monitor. <a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">More...</a><br /></td></tr>
+<tr class="separator:ga7af83e13489d90379588fb331b9e4b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga702750e24313a686d3637297b6e85fda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, void *pointer)</td></tr>
+<tr class="memdesc:ga702750e24313a686d3637297b6e85fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified monitor. <a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">More...</a><br /></td></tr>
+<tr class="separator:ga702750e24313a686d3637297b6e85fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified monitor. <a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">More...</a><br /></td></tr>
+<tr class="separator:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab39df645587c8518192aa746c2fb06c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a> (<a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback)</td></tr>
+<tr class="memdesc:gab39df645587c8518192aa746c2fb06c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the monitor configuration callback. <a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">More...</a><br /></td></tr>
+<tr class="separator:gab39df645587c8518192aa746c2fb06c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *count)</td></tr>
+<tr class="memdesc:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the available video modes for the specified monitor. <a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">More...</a><br /></td></tr>
+<tr class="separator:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gaba376fa7e76634b4788bddc505d6c9d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current mode of the specified monitor. <a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">More...</a><br /></td></tr>
+<tr class="separator:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ac582625c990220785ddd34efa3169a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float gamma)</td></tr>
+<tr class="memdesc:ga6ac582625c990220785ddd34efa3169a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a gamma ramp and sets it for the specified monitor. <a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">More...</a><br /></td></tr>
+<tr class="separator:ga6ac582625c990220785ddd34efa3169a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga76ba90debcf0062b5c4b73052b24f96f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">More...</a><br /></td></tr>
+<tr class="separator:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *ramp)</td></tr>
+<tr class="memdesc:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">More...</a><br /></td></tr>
+<tr class="separator:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a> (void)</td></tr>
+<tr class="memdesc:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets all window hints to their default values. <a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">More...</a><br /></td></tr>
+<tr class="separator:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> (int hint, int value)</td></tr>
+<tr class="memdesc:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">More...</a><br /></td></tr>
+<tr class="separator:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> (int hint, const char *value)</td></tr>
+<tr class="memdesc:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">More...</a><br /></td></tr>
+<tr class="separator:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3555a418df92ad53f917597fe2f64aeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (int width, int height, const char *title, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *share)</td></tr>
+<tr class="memdesc:ga3555a418df92ad53f917597fe2f64aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a window and its associated context. <a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">More...</a><br /></td></tr>
+<tr class="separator:ga3555a418df92ad53f917597fe2f64aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gacdf43e51376051d2c091662e9fe3d7b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the specified window and its context. <a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">More...</a><br /></td></tr>
+<tr class="separator:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga24e02fbfefbb81fc45320989f8140ab5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks the close flag of the specified window. <a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">More...</a><br /></td></tr>
+<tr class="separator:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int value)</td></tr>
+<tr class="memdesc:ga49c449dde2a6f87d996f4daaa09d6708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close flag of the specified window. <a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">More...</a><br /></td></tr>
+<tr class="separator:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5d877f09e968cef7a360b513306f17ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *title)</td></tr>
+<tr class="memdesc:ga5d877f09e968cef7a360b513306f17ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the title of the specified window. <a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">More...</a><br /></td></tr>
+<tr class="separator:ga5d877f09e968cef7a360b513306f17ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int count, const <a class="el" href="structGLFWimage.html">GLFWimage</a> *images)</td></tr>
+<tr class="memdesc:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the icon for the specified window. <a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">More...</a><br /></td></tr>
+<tr class="separator:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga73cb526c000876fd8ddf571570fdb634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *xpos, int *ypos)</td></tr>
+<tr class="memdesc:ga73cb526c000876fd8ddf571570fdb634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the content area of the specified window. <a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">More...</a><br /></td></tr>
+<tr class="separator:ga73cb526c000876fd8ddf571570fdb634"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
+<tr class="memdesc:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the content area of the specified window. <a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">More...</a><br /></td></tr>
+<tr class="separator:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
+<tr class="memdesc:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the content area of the specified window. <a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">More...</a><br /></td></tr>
+<tr class="separator:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac314fa6cec7d2d307be9963e2709cc90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int minwidth, int minheight, int maxwidth, int maxheight)</td></tr>
+<tr class="memdesc:gac314fa6cec7d2d307be9963e2709cc90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size limits of the specified window. <a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">More...</a><br /></td></tr>
+<tr class="separator:gac314fa6cec7d2d307be9963e2709cc90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int numer, int denom)</td></tr>
+<tr class="memdesc:ga72ac8cb1ee2e312a878b55153d81b937"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the aspect ratio of the specified window. <a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">More...</a><br /></td></tr>
+<tr class="separator:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga371911f12c74c504dd8d47d832d095cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:ga371911f12c74c504dd8d47d832d095cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the content area of the specified window. <a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">More...</a><br /></td></tr>
+<tr class="separator:ga371911f12c74c504dd8d47d832d095cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0e2637a4161afb283f5300c7f94785c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
+<tr class="memdesc:ga0e2637a4161afb283f5300c7f94785c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the framebuffer of the specified window. <a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">More...</a><br /></td></tr>
+<tr class="separator:ga0e2637a4161afb283f5300c7f94785c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1a9fd382058c53101b21cf211898f1f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *left, int *top, int *right, int *bottom)</td></tr>
+<tr class="memdesc:ga1a9fd382058c53101b21cf211898f1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the frame of the window. <a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">More...</a><br /></td></tr>
+<tr class="separator:ga1a9fd382058c53101b21cf211898f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float *xscale, float *yscale)</td></tr>
+<tr class="memdesc:gaf5d31de9c19c4f994facea64d2b3106c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified window. <a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">More...</a><br /></td></tr>
+<tr class="separator:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad09f0bd7a6307c4533b7061828480a84"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gad09f0bd7a6307c4533b7061828480a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the opacity of the whole window. <a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">More...</a><br /></td></tr>
+<tr class="separator:gad09f0bd7a6307c4533b7061828480a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac31caeb3d1088831b13d2c8a156802e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float opacity)</td></tr>
+<tr class="memdesc:gac31caeb3d1088831b13d2c8a156802e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the opacity of the whole window. <a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">More...</a><br /></td></tr>
+<tr class="separator:gac31caeb3d1088831b13d2c8a156802e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iconifies the specified window. <a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">More...</a><br /></td></tr>
+<tr class="separator:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga52527a5904b47d802b6b4bb519cdebc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the specified window. <a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">More...</a><br /></td></tr>
+<tr class="separator:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3f541387449d911274324ae7f17ec56b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga3f541387449d911274324ae7f17ec56b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximizes the specified window. <a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">More...</a><br /></td></tr>
+<tr class="separator:ga3f541387449d911274324ae7f17ec56b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga61be47917b72536a148300f46494fc66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga61be47917b72536a148300f46494fc66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the specified window visible. <a href="group__window.html#ga61be47917b72536a148300f46494fc66">More...</a><br /></td></tr>
+<tr class="separator:ga61be47917b72536a148300f46494fc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga49401f82a1ba5f15db5590728314d47c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga49401f82a1ba5f15db5590728314d47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the specified window. <a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">More...</a><br /></td></tr>
+<tr class="separator:ga49401f82a1ba5f15db5590728314d47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga873780357abd3f3a081d71a40aae45a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga873780357abd3f3a081d71a40aae45a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Brings the specified window to front and sets input focus. <a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">More...</a><br /></td></tr>
+<tr class="separator:ga873780357abd3f3a081d71a40aae45a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga2f8d59323fc4692c1d54ba08c863a703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests user attention to the specified window. <a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">More...</a><br /></td></tr>
+<tr class="separator:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d766499ac02c60f02221a9dfab87299"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga4d766499ac02c60f02221a9dfab87299"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the monitor that the window uses for full screen mode. <a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">More...</a><br /></td></tr>
+<tr class="separator:ga4d766499ac02c60f02221a9dfab87299"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int xpos, int ypos, int width, int height, int refreshRate)</td></tr>
+<tr class="memdesc:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mode, monitor, video mode and placement of a window. <a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">More...</a><br /></td></tr>
+<tr class="separator:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacccb29947ea4b16860ebef42c2cb9337"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib)</td></tr>
+<tr class="memdesc:gacccb29947ea4b16860ebef42c2cb9337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an attribute of the specified window. <a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">More...</a><br /></td></tr>
+<tr class="separator:gacccb29947ea4b16860ebef42c2cb9337"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gace2afda29b4116ec012e410a6819033e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib, int value)</td></tr>
+<tr class="memdesc:gace2afda29b4116ec012e410a6819033e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an attribute of the specified window. <a href="group__window.html#gace2afda29b4116ec012e410a6819033e">More...</a><br /></td></tr>
+<tr class="separator:gace2afda29b4116ec012e410a6819033e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, void *pointer)</td></tr>
+<tr class="memdesc:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified window. <a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">More...</a><br /></td></tr>
+<tr class="separator:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae77a4add0d2023ca21ff1443ced01653"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gae77a4add0d2023ca21ff1443ced01653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified window. <a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">More...</a><br /></td></tr>
+<tr class="separator:gae77a4add0d2023ca21ff1443ced01653"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback)</td></tr>
+<tr class="memdesc:ga08bdfbba88934f9c4f92fd757979ac74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position callback for the specified window. <a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">More...</a><br /></td></tr>
+<tr class="separator:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad91b8b047a0c4c6033c38853864c34f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback)</td></tr>
+<tr class="memdesc:gad91b8b047a0c4c6033c38853864c34f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size callback for the specified window. <a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">More...</a><br /></td></tr>
+<tr class="separator:gad91b8b047a0c4c6033c38853864c34f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gada646d775a7776a95ac000cfc1885331"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback)</td></tr>
+<tr class="memdesc:gada646d775a7776a95ac000cfc1885331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close callback for the specified window. <a href="group__window.html#gada646d775a7776a95ac000cfc1885331">More...</a><br /></td></tr>
+<tr class="separator:gada646d775a7776a95ac000cfc1885331"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback)</td></tr>
+<tr class="memdesc:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the refresh callback for the specified window. <a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">More...</a><br /></td></tr>
+<tr class="separator:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac2d83c4a10f071baf841f6730528e66c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback)</td></tr>
+<tr class="memdesc:gac2d83c4a10f071baf841f6730528e66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the focus callback for the specified window. <a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">More...</a><br /></td></tr>
+<tr class="separator:gac2d83c4a10f071baf841f6730528e66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac793e9efd255567b5fb8b445052cfd3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback)</td></tr>
+<tr class="memdesc:gac793e9efd255567b5fb8b445052cfd3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the iconify callback for the specified window. <a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">More...</a><br /></td></tr>
+<tr class="separator:gac793e9efd255567b5fb8b445052cfd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacbe64c339fbd94885e62145563b6dc93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback)</td></tr>
+<tr class="memdesc:gacbe64c339fbd94885e62145563b6dc93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximize callback for the specified window. <a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">More...</a><br /></td></tr>
+<tr class="separator:gacbe64c339fbd94885e62145563b6dc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab3fb7c3366577daef18c0023e2a8591f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback)</td></tr>
+<tr class="memdesc:gab3fb7c3366577daef18c0023e2a8591f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the framebuffer resize callback for the specified window. <a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">More...</a><br /></td></tr>
+<tr class="separator:gab3fb7c3366577daef18c0023e2a8591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback)</td></tr>
+<tr class="memdesc:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the window content scale callback for the specified window. <a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">More...</a><br /></td></tr>
+<tr class="separator:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> (void)</td></tr>
+<tr class="memdesc:ga37bd57223967b4211d60ca1a0bf3c832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes all pending events. <a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">More...</a><br /></td></tr>
+<tr class="separator:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga554e37d781f0a997656c26b2c56c835e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> (void)</td></tr>
+<tr class="memdesc:ga554e37d781f0a997656c26b2c56c835e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits until events are queued and processes them. <a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">More...</a><br /></td></tr>
+<tr class="separator:ga554e37d781f0a997656c26b2c56c835e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> (double timeout)</td></tr>
+<tr class="memdesc:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits with timeout until events are queued and processes them. <a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">More...</a><br /></td></tr>
+<tr class="separator:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> (void)</td></tr>
+<tr class="memdesc:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Posts an empty event to the event queue. <a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">More...</a><br /></td></tr>
+<tr class="separator:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode)</td></tr>
+<tr class="memdesc:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of an input option for the specified window. <a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">More...</a><br /></td></tr>
+<tr class="separator:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa92336e173da9c8834558b54ee80563b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode, int value)</td></tr>
+<tr class="memdesc:gaa92336e173da9c8834558b54ee80563b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an input option for the specified window. <a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">More...</a><br /></td></tr>
+<tr class="separator:gaa92336e173da9c8834558b54ee80563b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> (void)</td></tr>
+<tr class="memdesc:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether raw mouse motion is supported. <a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">More...</a><br /></td></tr>
+<tr class="separator:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a> (int key, int scancode)</td></tr>
+<tr class="memdesc:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout-specific name of the specified printable key. <a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">More...</a><br /></td></tr>
+<tr class="separator:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a> (int key)</td></tr>
+<tr class="memdesc:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the platform-specific scancode of the specified key. <a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">More...</a><br /></td></tr>
+<tr class="separator:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key)</td></tr>
+<tr class="memdesc:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a keyboard key for the specified window. <a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">More...</a><br /></td></tr>
+<tr class="separator:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1473feacb5996c01a7a5a33b5066704"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button)</td></tr>
+<tr class="memdesc:gac1473feacb5996c01a7a5a33b5066704"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a mouse button for the specified window. <a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">More...</a><br /></td></tr>
+<tr class="separator:gac1473feacb5996c01a7a5a33b5066704"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double *xpos, double *ypos)</td></tr>
+<tr class="memdesc:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the cursor relative to the content area of the window. <a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">More...</a><br /></td></tr>
+<tr class="separator:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
+<tr class="memdesc:ga04b03af936d906ca123c8f4ee08b39e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the cursor, relative to the content area of the window. <a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">More...</a><br /></td></tr>
+<tr class="separator:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga556f604f73af156c0db0e97c081373c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> (const <a class="el" href="structGLFWimage.html">GLFWimage</a> *image, int xhot, int yhot)</td></tr>
+<tr class="memdesc:ga556f604f73af156c0db0e97c081373c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a custom cursor. <a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">More...</a><br /></td></tr>
+<tr class="separator:ga556f604f73af156c0db0e97c081373c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> (int shape)</td></tr>
+<tr class="memdesc:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a cursor with a standard shape. <a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">More...</a><br /></td></tr>
+<tr class="separator:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> (<a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
+<tr class="memdesc:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a cursor. <a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">More...</a><br /></td></tr>
+<tr class="separator:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
+<tr class="memdesc:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor for the window. <a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">More...</a><br /></td></tr>
+<tr class="separator:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1caf18159767e761185e49a3be019f8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback)</td></tr>
+<tr class="memdesc:ga1caf18159767e761185e49a3be019f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the key callback. <a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">More...</a><br /></td></tr>
+<tr class="separator:ga1caf18159767e761185e49a3be019f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab25c4a220fd8f5717718dbc487828996"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback)</td></tr>
+<tr class="memdesc:gab25c4a220fd8f5717718dbc487828996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character callback. <a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">More...</a><br /></td></tr>
+<tr class="separator:gab25c4a220fd8f5717718dbc487828996"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback)</td></tr>
+<tr class="memdesc:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character with modifiers callback. <a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">More...</a><br /></td></tr>
+<tr class="separator:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ab84420974d812bee700e45284a723c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback)</td></tr>
+<tr class="memdesc:ga6ab84420974d812bee700e45284a723c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mouse button callback. <a href="group__input.html#ga6ab84420974d812bee700e45284a723c">More...</a><br /></td></tr>
+<tr class="separator:ga6ab84420974d812bee700e45284a723c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback)</td></tr>
+<tr class="memdesc:gac1f879ab7435d54d4d79bb469fe225d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor position callback. <a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">More...</a><br /></td></tr>
+<tr class="separator:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad27f8ad0142c038a281466c0966817d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback)</td></tr>
+<tr class="memdesc:gad27f8ad0142c038a281466c0966817d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor enter/leave callback. <a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">More...</a><br /></td></tr>
+<tr class="separator:gad27f8ad0142c038a281466c0966817d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga571e45a030ae4061f746ed56cb76aede"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback)</td></tr>
+<tr class="memdesc:ga571e45a030ae4061f746ed56cb76aede"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the scroll callback. <a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">More...</a><br /></td></tr>
+<tr class="separator:ga571e45a030ae4061f746ed56cb76aede"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback)</td></tr>
+<tr class="memdesc:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the path drop callback. <a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">More...</a><br /></td></tr>
+<tr class="separator:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed0966cee139d815317f9ffcba64c9f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> (int jid)</td></tr>
+<tr class="memdesc:gaed0966cee139d815317f9ffcba64c9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick is present. <a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">More...</a><br /></td></tr>
+<tr class="separator:gaed0966cee139d815317f9ffcba64c9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeb1c0191d3140a233a682987c61eb408"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:gaeb1c0191d3140a233a682987c61eb408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the values of all axes of the specified joystick. <a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">More...</a><br /></td></tr>
+<tr class="separator:gaeb1c0191d3140a233a682987c61eb408"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all buttons of the specified joystick. <a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">More...</a><br /></td></tr>
+<tr class="separator:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:ga06e660841b3e79c54da4f54a932c5a2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all hats of the specified joystick. <a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">More...</a><br /></td></tr>
+<tr class="separator:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> (int jid)</td></tr>
+<tr class="memdesc:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified joystick. <a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">More...</a><br /></td></tr>
+<tr class="separator:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> (int jid)</td></tr>
+<tr class="memdesc:ga6659411aec3c7fcef27780e2cb2d9600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SDL compatible GUID of the specified joystick. <a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">More...</a><br /></td></tr>
+<tr class="separator:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> (int jid, void *pointer)</td></tr>
+<tr class="memdesc:ga6b2f72d64d636b48a727b437cbb7489e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified joystick. <a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">More...</a><br /></td></tr>
+<tr class="separator:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> (int jid)</td></tr>
+<tr class="memdesc:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified joystick. <a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">More...</a><br /></td></tr>
+<tr class="separator:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0f676860f329d80f7e47e9f06a96f00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> (int jid)</td></tr>
+<tr class="memdesc:gad0f676860f329d80f7e47e9f06a96f00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick has a gamepad mapping. <a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">More...</a><br /></td></tr>
+<tr class="separator:gad0f676860f329d80f7e47e9f06a96f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a> (<a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback)</td></tr>
+<tr class="memdesc:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the joystick configuration callback. <a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">More...</a><br /></td></tr>
+<tr class="separator:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> (const char *string)</td></tr>
+<tr class="memdesc:gaed5104612f2fa8e66aa6e846652ad00f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the specified SDL_GameControllerDB gamepad mappings. <a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">More...</a><br /></td></tr>
+<tr class="separator:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8aea73a1a25cc6c0486a617019f56728"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> (int jid)</td></tr>
+<tr class="memdesc:ga8aea73a1a25cc6c0486a617019f56728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the human-readable gamepad name for the specified joystick. <a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">More...</a><br /></td></tr>
+<tr class="separator:ga8aea73a1a25cc6c0486a617019f56728"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadccddea8bce6113fa459de379ddaf051"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> (int jid, <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *state)</td></tr>
+<tr class="memdesc:gadccddea8bce6113fa459de379ddaf051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the state of the specified joystick remapped as a gamepad. <a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">More...</a><br /></td></tr>
+<tr class="separator:gadccddea8bce6113fa459de379ddaf051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *string)</td></tr>
+<tr class="memdesc:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the clipboard to the specified string. <a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">More...</a><br /></td></tr>
+<tr class="separator:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga71a5b20808ea92193d65c21b82580355"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga71a5b20808ea92193d65c21b82580355"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the clipboard as a string. <a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">More...</a><br /></td></tr>
+<tr class="separator:ga71a5b20808ea92193d65c21b82580355"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> (void)</td></tr>
+<tr class="memdesc:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the GLFW time. <a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">More...</a><br /></td></tr>
+<tr class="separator:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> (double time)</td></tr>
+<tr class="memdesc:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the GLFW time. <a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">More...</a><br /></td></tr>
+<tr class="separator:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> (void)</td></tr>
+<tr class="memdesc:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of the raw timer. <a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">More...</a><br /></td></tr>
+<tr class="separator:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3289ee876572f6e91f06df3a24824443"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> (void)</td></tr>
+<tr class="memdesc:ga3289ee876572f6e91f06df3a24824443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the frequency, in Hz, of the raw timer. <a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">More...</a><br /></td></tr>
+<tr class="separator:ga3289ee876572f6e91f06df3a24824443"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1c04dc242268f827290fe40aa1c91157"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1c04dc242268f827290fe40aa1c91157"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the context of the specified window current for the calling thread. <a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">More...</a><br /></td></tr>
+<tr class="separator:ga1c04dc242268f827290fe40aa1c91157"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad94e80185397a6cf5fe2ab30567af71c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a> (void)</td></tr>
+<tr class="memdesc:gad94e80185397a6cf5fe2ab30567af71c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the window whose context is current on the calling thread. <a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">More...</a><br /></td></tr>
+<tr class="separator:gad94e80185397a6cf5fe2ab30567af71c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the front and back buffers of the specified window. <a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">More...</a><br /></td></tr>
+<tr class="separator:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> (int interval)</td></tr>
+<tr class="memdesc:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the swap interval for the current context. <a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">More...</a><br /></td></tr>
+<tr class="separator:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87425065c011cef1ebd6aac75e059dfa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> (const char *extension)</td></tr>
+<tr class="memdesc:ga87425065c011cef1ebd6aac75e059dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified extension is available. <a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">More...</a><br /></td></tr>
+<tr class="separator:ga87425065c011cef1ebd6aac75e059dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35f1837e6f666781842483937612f163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> (const char *procname)</td></tr>
+<tr class="memdesc:ga35f1837e6f666781842483937612f163"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified function for the current context. <a href="group__context.html#ga35f1837e6f666781842483937612f163">More...</a><br /></td></tr>
+<tr class="separator:ga35f1837e6f666781842483937612f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> (void)</td></tr>
+<tr class="memdesc:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the Vulkan loader and an ICD have been found. <a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">More...</a><br /></td></tr>
+<tr class="separator:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memItemLeft" align="right" valign="top">const char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> (uint32_t *count)</td></tr>
+<tr class="memdesc:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Vulkan instance extensions required by GLFW. <a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">More...</a><br /></td></tr>
+<tr class="separator:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a> (VkInstance instance, const char *procname)</td></tr>
+<tr class="memdesc:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified Vulkan instance function. <a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">More...</a><br /></td></tr>
+<tr class="separator:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</td></tr>
+<tr class="memdesc:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified queue family can present images. <a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">More...</a><br /></td></tr>
+<tr class="separator:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a> (VkInstance instance, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</td></tr>
+<tr class="memdesc:ga1a24536bec3f80b08ead18e28e6ae965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a Vulkan surface for the specified window. <a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">More...</a><br /></td></tr>
+<tr class="separator:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="a8a8538c5500308b4211844f2fb26c7b9" name="a8a8538c5500308b4211844f2fb26c7b9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a8538c5500308b4211844f2fb26c7b9">&#9670;&nbsp;</a></span>GLFW_APIENTRY_DEFINED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_APIENTRY_DEFINED</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a8f6dcdc968d214ff14779564f1389264" name="a8f6dcdc968d214ff14779564f1389264"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8f6dcdc968d214ff14779564f1389264">&#9670;&nbsp;</a></span>GLFW_NO_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_API&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a01b3f66db266341425e9abee6b257db2" name="a01b3f66db266341425e9abee6b257db2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a01b3f66db266341425e9abee6b257db2">&#9670;&nbsp;</a></span>GLFW_OPENGL_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_API&#160;&#160;&#160;0x00030001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a28d9b3bc6c2a522d815c8e146595051f" name="a28d9b3bc6c2a522d815c8e146595051f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a28d9b3bc6c2a522d815c8e146595051f">&#9670;&nbsp;</a></span>GLFW_OPENGL_ES_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_ES_API&#160;&#160;&#160;0x00030002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a8b306cb27f5bb0d6d67c7356a0e0fc34" name="a8b306cb27f5bb0d6d67c7356a0e0fc34"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b306cb27f5bb0d6d67c7356a0e0fc34">&#9670;&nbsp;</a></span>GLFW_NO_ROBUSTNESS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_ROBUSTNESS&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aee84a679230d205005e22487ff678a85" name="aee84a679230d205005e22487ff678a85"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aee84a679230d205005e22487ff678a85">&#9670;&nbsp;</a></span>GLFW_NO_RESET_NOTIFICATION</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_RESET_NOTIFICATION&#160;&#160;&#160;0x00031001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aec1132f245143fc915b2f0995228564c" name="aec1132f245143fc915b2f0995228564c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aec1132f245143fc915b2f0995228564c">&#9670;&nbsp;</a></span>GLFW_LOSE_CONTEXT_ON_RESET</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_LOSE_CONTEXT_ON_RESET&#160;&#160;&#160;0x00031002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ad6f2335d6f21cc9bab96633b1c111d5f" name="ad6f2335d6f21cc9bab96633b1c111d5f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6f2335d6f21cc9bab96633b1c111d5f">&#9670;&nbsp;</a></span>GLFW_OPENGL_ANY_PROFILE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_ANY_PROFILE&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="af094bb16da76f66ebceb19ee213b3de8" name="af094bb16da76f66ebceb19ee213b3de8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af094bb16da76f66ebceb19ee213b3de8">&#9670;&nbsp;</a></span>GLFW_OPENGL_CORE_PROFILE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_CORE_PROFILE&#160;&#160;&#160;0x00032001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac06b663d79c8fcf04669cc8fcc0b7670" name="ac06b663d79c8fcf04669cc8fcc0b7670"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac06b663d79c8fcf04669cc8fcc0b7670">&#9670;&nbsp;</a></span>GLFW_OPENGL_COMPAT_PROFILE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_COMPAT_PROFILE&#160;&#160;&#160;0x00032002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aade31da5b884a84a7625c6b059b9132c" name="aade31da5b884a84a7625c6b059b9132c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aade31da5b884a84a7625c6b059b9132c">&#9670;&nbsp;</a></span>GLFW_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CURSOR&#160;&#160;&#160;0x00033001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae3bbe2315b7691ab088159eb6c9110fc" name="ae3bbe2315b7691ab088159eb6c9110fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae3bbe2315b7691ab088159eb6c9110fc">&#9670;&nbsp;</a></span>GLFW_STICKY_KEYS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_STICKY_KEYS&#160;&#160;&#160;0x00033002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a4d7ce8ce71030c3b04e2b78145bc59d1" name="a4d7ce8ce71030c3b04e2b78145bc59d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4d7ce8ce71030c3b04e2b78145bc59d1">&#9670;&nbsp;</a></span>GLFW_STICKY_MOUSE_BUTTONS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_STICKY_MOUSE_BUTTONS&#160;&#160;&#160;0x00033003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a07b84de0b52143e1958f88a7d9105947" name="a07b84de0b52143e1958f88a7d9105947"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a07b84de0b52143e1958f88a7d9105947">&#9670;&nbsp;</a></span>GLFW_LOCK_KEY_MODS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_LOCK_KEY_MODS&#160;&#160;&#160;0x00033004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aeeda1be76a44a1fc97c1282e06281fbb" name="aeeda1be76a44a1fc97c1282e06281fbb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeeda1be76a44a1fc97c1282e06281fbb">&#9670;&nbsp;</a></span>GLFW_RAW_MOUSE_MOTION</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RAW_MOUSE_MOTION&#160;&#160;&#160;0x00033005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ae04dd25c8577e19fa8c97368561f6c68" name="ae04dd25c8577e19fa8c97368561f6c68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae04dd25c8577e19fa8c97368561f6c68">&#9670;&nbsp;</a></span>GLFW_CURSOR_NORMAL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CURSOR_NORMAL&#160;&#160;&#160;0x00034001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ac4d5cb9d78de8573349c58763d53bf11" name="ac4d5cb9d78de8573349c58763d53bf11"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac4d5cb9d78de8573349c58763d53bf11">&#9670;&nbsp;</a></span>GLFW_CURSOR_HIDDEN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CURSOR_HIDDEN&#160;&#160;&#160;0x00034002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a2315b99a329ce53e6a13a9d46fd5ca88" name="a2315b99a329ce53e6a13a9d46fd5ca88"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2315b99a329ce53e6a13a9d46fd5ca88">&#9670;&nbsp;</a></span>GLFW_CURSOR_DISABLED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CURSOR_DISABLED&#160;&#160;&#160;0x00034003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a6b47d806f285efe9bfd7aeec667297ee" name="a6b47d806f285efe9bfd7aeec667297ee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b47d806f285efe9bfd7aeec667297ee">&#9670;&nbsp;</a></span>GLFW_ANY_RELEASE_BEHAVIOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ANY_RELEASE_BEHAVIOR&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a999961d391db49cb4f949c1dece0e13b" name="a999961d391db49cb4f949c1dece0e13b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a999961d391db49cb4f949c1dece0e13b">&#9670;&nbsp;</a></span>GLFW_RELEASE_BEHAVIOR_FLUSH</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RELEASE_BEHAVIOR_FLUSH&#160;&#160;&#160;0x00035001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afca09088eccacdce4b59036cfae349c5" name="afca09088eccacdce4b59036cfae349c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afca09088eccacdce4b59036cfae349c5">&#9670;&nbsp;</a></span>GLFW_RELEASE_BEHAVIOR_NONE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RELEASE_BEHAVIOR_NONE&#160;&#160;&#160;0x00035002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a0494c9bfd3f584ab41e6dbeeaa0e6a19" name="a0494c9bfd3f584ab41e6dbeeaa0e6a19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0494c9bfd3f584ab41e6dbeeaa0e6a19">&#9670;&nbsp;</a></span>GLFW_NATIVE_CONTEXT_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NATIVE_CONTEXT_API&#160;&#160;&#160;0x00036001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a03cf65c9ab01fc8b872ba58842c531c9" name="a03cf65c9ab01fc8b872ba58842c531c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a03cf65c9ab01fc8b872ba58842c531c9">&#9670;&nbsp;</a></span>GLFW_EGL_CONTEXT_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_EGL_CONTEXT_API&#160;&#160;&#160;0x00036002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="afd34a473af9fa81f317910ea371b19e3" name="afd34a473af9fa81f317910ea371b19e3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afd34a473af9fa81f317910ea371b19e3">&#9670;&nbsp;</a></span>GLFW_OSMESA_CONTEXT_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OSMESA_CONTEXT_API&#160;&#160;&#160;0x00036003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="abe11513fd1ffbee5bb9b173f06028b9e" name="abe11513fd1ffbee5bb9b173f06028b9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abe11513fd1ffbee5bb9b173f06028b9e">&#9670;&nbsp;</a></span>GLFW_CONNECTED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONNECTED&#160;&#160;&#160;0x00040001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aab64b25921ef21d89252d6f0a71bfc32" name="aab64b25921ef21d89252d6f0a71bfc32"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aab64b25921ef21d89252d6f0a71bfc32">&#9670;&nbsp;</a></span>GLFW_DISCONNECTED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_DISCONNECTED&#160;&#160;&#160;0x00040002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a7a2edf2c18446833d27d07f1b7f3d571" name="a7a2edf2c18446833d27d07f1b7f3d571"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7a2edf2c18446833d27d07f1b7f3d571">&#9670;&nbsp;</a></span>GLFW_DONT_CARE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_DONT_CARE&#160;&#160;&#160;-1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="aa97755eb47e4bf2727ad45d610e18206" name="aa97755eb47e4bf2727ad45d610e18206"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa97755eb47e4bf2727ad45d610e18206">&#9670;&nbsp;</a></span>GLAPIENTRY</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLAPIENTRY&#160;&#160;&#160;APIENTRY</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="a3b526ac796be993406ea2f1642c25fc3" name="a3b526ac796be993406ea2f1642c25fc3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b526ac796be993406ea2f1642c25fc3">&#9670;&nbsp;</a></span>GLFW_GLAPIENTRY_DEFINED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GLAPIENTRY_DEFINED</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/glfw3_8h_source.html b/libs/glfw-3.3.8/docs/html/glfw3_8h_source.html
new file mode 100644
index 0000000..be04039
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/glfw3_8h_source.html
@@ -0,0 +1,1155 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: glfw3.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li><li class="navelem"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">glfw3.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="glfw3_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * GLFW 3.3 - www.glfw.org</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * A library for OpenGL, window and input</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *------------------------------------------------------------------------</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Copyright (c) 2002-2006 Marcus Geelnard</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * Copyright (c) 2006-2019 Camilla Löwy &lt;elmindreda@glfw.org&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * This software is provided &#39;as-is&#39;, without any express or implied</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * warranty. In no event will the authors be held liable for any damages</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * arising from the use of this software.</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * including commercial applications, and to alter it and redistribute it</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * freely, subject to the following restrictions:</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * 1. The origin of this software must not be misrepresented; you must not</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * claim that you wrote the original software. If you use this software</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * in a product, an acknowledgment in the product documentation would</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * be appreciated but is not required.</span></div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * 2. Altered source versions must be plainly marked as such, and must not</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * be misrepresented as being the original software.</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * 3. This notice may not be removed or altered from any source</span></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * distribution.</span></div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#ifndef _glfw3_h_</span></div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#define _glfw3_h_</span></div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * Doxygen documentation</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
+<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment"> * Compiler- and platform-specific preprocessor work</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span><span class="comment">/* If we are we on Windows, we want a single define for it.</span></div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span><span class="preprocessor">#if !defined(_WIN32) &amp;&amp; (defined(__WIN32__) || defined(WIN32) || defined(__MINGW32__))</span></div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #define _WIN32</span></div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="preprocessor">#endif </span><span class="comment">/* _WIN32 */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment">/* Include because most Windows GLU headers need wchar_t and</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> * the macOS OpenGL header blocks the definition of ptrdiff_t by glext.h.</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="comment"> * Include it unconditionally to avoid surprising side-effects.</span></div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor">#include &lt;stddef.h&gt;</span></div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment">/* Include because it is needed by Vulkan and related functions.</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="comment"> * Include it unconditionally to avoid surprising side-effects.</span></div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> </div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor">#if defined(GLFW_INCLUDE_VULKAN)</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="preprocessor"> #include &lt;vulkan/vulkan.h&gt;</span></div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor">#endif </span><span class="comment">/* Vulkan header */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="comment">/* The Vulkan header may have indirectly included windows.h (because of</span></div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="comment"> * VK_USE_PLATFORM_WIN32_KHR) so we offer our replacement symbols after it.</span></div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="comment">/* It is customary to use APIENTRY for OpenGL function pointer declarations on</span></div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span><span class="comment"> * all platforms. Additionally, the Windows OpenGL header needs APIENTRY.</span></div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span><span class="preprocessor">#if !defined(APIENTRY)</span></div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor"> #if defined(_WIN32)</span></div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #define APIENTRY __stdcall</span></div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span><span class="preprocessor"> #else</span></div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #define APIENTRY</span></div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9"> 127</a></span><span class="preprocessor"> #define GLFW_APIENTRY_DEFINED</span></div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="preprocessor">#endif </span><span class="comment">/* APIENTRY */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment">/* Some Windows OpenGL headers need this.</span></div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor">#if !defined(WINGDIAPI) &amp;&amp; defined(_WIN32)</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="preprocessor"> #define WINGDIAPI __declspec(dllimport)</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor"> #define GLFW_WINGDIAPI_DEFINED</span></div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="preprocessor">#endif </span><span class="comment">/* WINGDIAPI */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> </div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="comment">/* Some Windows GLU headers need this.</span></div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="preprocessor">#if !defined(CALLBACK) &amp;&amp; defined(_WIN32)</span></div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="preprocessor"> #define CALLBACK __stdcall</span></div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="preprocessor"> #define GLFW_CALLBACK_DEFINED</span></div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="preprocessor">#endif </span><span class="comment">/* CALLBACK */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment">/* Include the chosen OpenGL or OpenGL ES headers.</span></div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="preprocessor">#if defined(GLFW_INCLUDE_ES1)</span></div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="preprocessor"> #include &lt;GLES/gl.h&gt;</span></div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor"> #include &lt;GLES/glext.h&gt;</span></div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> </div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES2)</span></div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="preprocessor"> #include &lt;GLES2/gl2.h&gt;</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
+<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES3)</span></div>
+<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
+<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span><span class="preprocessor"> #include &lt;GLES3/gl3.h&gt;</span></div>
+<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
+<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
+<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES31)</span></div>
+<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
+<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span><span class="preprocessor"> #include &lt;GLES3/gl31.h&gt;</span></div>
+<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
+<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> </div>
+<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_ES32)</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="preprocessor"> #include &lt;GLES3/gl32.h&gt;</span></div>
+<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="preprocessor"> #include &lt;GLES2/gl2ext.h&gt;</span></div>
+<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> </div>
+<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_GLCOREARB)</span></div>
+<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
+<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
+<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
+<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span><span class="preprocessor"> #include &lt;OpenGL/gl3.h&gt;</span></div>
+<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="preprocessor"> #include &lt;OpenGL/gl3ext.h&gt;</span></div>
+<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="preprocessor"> #endif </span><span class="comment">/*GLFW_INCLUDE_GLEXT*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> </div>
+<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span><span class="preprocessor"> #include &lt;GL/glcorearb.h&gt;</span></div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="preprocessor"> #include &lt;GL/glext.h&gt;</span></div>
+<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> </div>
+<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
+<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="preprocessor">#elif defined(GLFW_INCLUDE_GLU)</span></div>
+<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
+<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
+<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> </div>
+<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLU)</span></div>
+<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="preprocessor"> #include &lt;OpenGL/glu.h&gt;</span></div>
+<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> </div>
+<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
+<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLU)</span></div>
+<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="preprocessor"> #include &lt;GL/glu.h&gt;</span></div>
+<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
+<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
+<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="preprocessor">#elif !defined(GLFW_INCLUDE_NONE) &amp;&amp; \</span></div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="preprocessor"> !defined(__gl_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor"> !defined(__gles1_gl_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span><span class="preprocessor"> !defined(__gles2_gl2_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor"> !defined(__gles2_gl3_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="preprocessor"> !defined(__gles2_gl31_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="preprocessor"> !defined(__gles2_gl32_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="preprocessor"> !defined(__gl_glcorearb_h_) &amp;&amp; \</span></div>
+<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="preprocessor"> !defined(__gl2_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="preprocessor"> !defined(__gl3_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="preprocessor"> !defined(__gl31_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="preprocessor"> !defined(__gl32_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="preprocessor"> !defined(__glcorearb_h_) </span><span class="comment">/*legacy*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="preprocessor"> !defined(__GL_H__) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor"> !defined(__gltypes_h_) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"> &amp;&amp; \</span></div>
+<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"> !defined(__glee_h_) </span><span class="comment">/*non-standard*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> </div>
+<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="preprocessor"> #if defined(__APPLE__)</span></div>
+<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
+<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="preprocessor"> #if !defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="preprocessor"> #define GL_GLEXT_LEGACY</span></div>
+<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span><span class="preprocessor"> #include &lt;OpenGL/gl.h&gt;</span></div>
+<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
+<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="preprocessor"> #else </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
+<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="preprocessor"> #include &lt;GL/gl.h&gt;</span></div>
+<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="preprocessor"> #if defined(GLFW_INCLUDE_GLEXT)</span></div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="preprocessor"> #include &lt;GL/glext.h&gt;</span></div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor"> #endif </span><span class="comment">/*__APPLE__*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
+<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="preprocessor">#endif </span><span class="comment">/* OpenGL and OpenGL ES headers */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
+<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="preprocessor">#if defined(GLFW_DLL) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
+<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> <span class="comment">/* GLFW_DLL must be defined by applications that are linking against the DLL</span></div>
+<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * version of the GLFW library. _GLFW_BUILD_DLL is defined by the GLFW</span></div>
+<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> * configuration header when compiling the DLL version of the library.</span></div>
+<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span><span class="preprocessor"> #error &quot;You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined&quot;</span></div>
+<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
+<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span><span class="comment">/* GLFWAPI is used to declare public API functions for export</span></div>
+<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment"> * from the DLL / shared library / dynamic library.</span></div>
+<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="preprocessor">#if defined(_WIN32) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> <span class="comment">/* We are building GLFW as a Win32 DLL */</span></div>
+<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span><span class="preprocessor"> #define GLFWAPI __declspec(dllexport)</span></div>
+<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span><span class="preprocessor">#elif defined(_WIN32) &amp;&amp; defined(GLFW_DLL)</span></div>
+<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> <span class="comment">/* We are calling a GLFW Win32 DLL */</span></div>
+<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="preprocessor"> #define GLFWAPI __declspec(dllimport)</span></div>
+<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span><span class="preprocessor">#elif defined(__GNUC__) &amp;&amp; defined(_GLFW_BUILD_DLL)</span></div>
+<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> <span class="comment">/* We are building GLFW as a Unix shared library */</span></div>
+<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span><span class="preprocessor"> #define GLFWAPI __attribute__((visibility(&quot;default&quot;</span>)))</div>
+<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"> 270</span><span class="preprocessor">#else</span></div>
+<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span><span class="preprocessor"> #define GLFWAPI</span></div>
+<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
+<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
+<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment"> * GLFW API tokens</span></div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span> </div>
+<div class="line"><a id="l00287" name="l00287"></a><span class="lineno"><a class="line" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576"> 287</a></span><span class="preprocessor">#define GLFW_VERSION_MAJOR 3</span></div>
+<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3"> 294</a></span><span class="preprocessor">#define GLFW_VERSION_MINOR 3</span></div>
+<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"><a class="line" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502"> 301</a></span><span class="preprocessor">#define GLFW_VERSION_REVISION 8</span></div>
+<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba"> 312</a></span><span class="preprocessor">#define GLFW_TRUE 1</span></div>
+<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5"> 321</a></span><span class="preprocessor">#define GLFW_FALSE 0</span></div>
+<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"> 322</span> </div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"><a class="line" href="group__input.html#gada11d965c4da13090ad336e030e4d11f"> 331</a></span><span class="preprocessor">#define GLFW_RELEASE 0</span></div>
+<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="group__input.html#ga2485743d0b59df3791c45951c4195265"> 338</a></span><span class="preprocessor">#define GLFW_PRESS 1</span></div>
+<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"><a class="line" href="group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f"> 345</a></span><span class="preprocessor">#define GLFW_REPEAT 2</span></div>
+<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"><a class="line" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd"> 355</a></span><span class="preprocessor">#define GLFW_HAT_CENTERED 0</span></div>
+<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36"> 356</a></span><span class="preprocessor">#define GLFW_HAT_UP 1</span></div>
+<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5"> 357</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT 2</span></div>
+<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"><a class="line" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff"> 358</a></span><span class="preprocessor">#define GLFW_HAT_DOWN 4</span></div>
+<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff"> 359</a></span><span class="preprocessor">#define GLFW_HAT_LEFT 8</span></div>
+<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693"> 360</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT_UP (GLFW_HAT_RIGHT | GLFW_HAT_UP)</span></div>
+<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"><a class="line" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5"> 361</a></span><span class="preprocessor">#define GLFW_HAT_RIGHT_DOWN (GLFW_HAT_RIGHT | GLFW_HAT_DOWN)</span></div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129"> 362</a></span><span class="preprocessor">#define GLFW_HAT_LEFT_UP (GLFW_HAT_LEFT | GLFW_HAT_UP)</span></div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"><a class="line" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19"> 363</a></span><span class="preprocessor">#define GLFW_HAT_LEFT_DOWN (GLFW_HAT_LEFT | GLFW_HAT_DOWN)</span></div>
+<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span><span class="comment">/* The unknown key */</span></div>
+<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"><a class="line" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7"> 391</a></span><span class="preprocessor">#define GLFW_KEY_UNKNOWN -1</span></div>
+<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> </div>
+<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="comment">/* Printable keys */</span></div>
+<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"><a class="line" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014"> 394</a></span><span class="preprocessor">#define GLFW_KEY_SPACE 32</span></div>
+<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"><a class="line" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24"> 395</a></span><span class="preprocessor">#define GLFW_KEY_APOSTROPHE 39 </span><span class="comment">/* &#39; */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"><a class="line" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c"> 396</a></span><span class="preprocessor">#define GLFW_KEY_COMMA 44 </span><span class="comment">/* , */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"><a class="line" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4"> 397</a></span><span class="preprocessor">#define GLFW_KEY_MINUS 45 </span><span class="comment">/* - */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"><a class="line" href="group__keys.html#ga37e296b650eab419fc474ff69033d927"> 398</a></span><span class="preprocessor">#define GLFW_KEY_PERIOD 46 </span><span class="comment">/* . */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"><a class="line" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db"> 399</a></span><span class="preprocessor">#define GLFW_KEY_SLASH 47 </span><span class="comment">/* / */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"><a class="line" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1"> 400</a></span><span class="preprocessor">#define GLFW_KEY_0 48</span></div>
+<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f"> 401</a></span><span class="preprocessor">#define GLFW_KEY_1 49</span></div>
+<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"><a class="line" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c"> 402</a></span><span class="preprocessor">#define GLFW_KEY_2 50</span></div>
+<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271"> 403</a></span><span class="preprocessor">#define GLFW_KEY_3 51</span></div>
+<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"><a class="line" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356"> 404</a></span><span class="preprocessor">#define GLFW_KEY_4 52</span></div>
+<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"><a class="line" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924"> 405</a></span><span class="preprocessor">#define GLFW_KEY_5 53</span></div>
+<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"><a class="line" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d"> 406</a></span><span class="preprocessor">#define GLFW_KEY_6 54</span></div>
+<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666"> 407</a></span><span class="preprocessor">#define GLFW_KEY_7 55</span></div>
+<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"><a class="line" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f"> 408</a></span><span class="preprocessor">#define GLFW_KEY_8 56</span></div>
+<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"><a class="line" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39"> 409</a></span><span class="preprocessor">#define GLFW_KEY_9 57</span></div>
+<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d"> 410</a></span><span class="preprocessor">#define GLFW_KEY_SEMICOLON 59 </span><span class="comment">/* ; */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"><a class="line" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17"> 411</a></span><span class="preprocessor">#define GLFW_KEY_EQUAL 61 </span><span class="comment">/* = */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff"> 412</a></span><span class="preprocessor">#define GLFW_KEY_A 65</span></div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"><a class="line" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941"> 413</a></span><span class="preprocessor">#define GLFW_KEY_B 66</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"><a class="line" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669"> 414</a></span><span class="preprocessor">#define GLFW_KEY_C 67</span></div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"><a class="line" href="group__keys.html#ga011f7cdc9a654da984a2506479606933"> 415</a></span><span class="preprocessor">#define GLFW_KEY_D 68</span></div>
+<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"><a class="line" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2"> 416</a></span><span class="preprocessor">#define GLFW_KEY_E 69</span></div>
+<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55"> 417</a></span><span class="preprocessor">#define GLFW_KEY_F 70</span></div>
+<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"><a class="line" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536"> 418</a></span><span class="preprocessor">#define GLFW_KEY_G 71</span></div>
+<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"><a class="line" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076"> 419</a></span><span class="preprocessor">#define GLFW_KEY_H 72</span></div>
+<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"><a class="line" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093"> 420</a></span><span class="preprocessor">#define GLFW_KEY_I 73</span></div>
+<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"><a class="line" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f"> 421</a></span><span class="preprocessor">#define GLFW_KEY_J 74</span></div>
+<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0"> 422</a></span><span class="preprocessor">#define GLFW_KEY_K 75</span></div>
+<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"><a class="line" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2"> 423</a></span><span class="preprocessor">#define GLFW_KEY_L 76</span></div>
+<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"><a class="line" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716"> 424</a></span><span class="preprocessor">#define GLFW_KEY_M 77</span></div>
+<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"><a class="line" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda"> 425</a></span><span class="preprocessor">#define GLFW_KEY_N 78</span></div>
+<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"><a class="line" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9"> 426</a></span><span class="preprocessor">#define GLFW_KEY_O 79</span></div>
+<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"><a class="line" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1"> 427</a></span><span class="preprocessor">#define GLFW_KEY_P 80</span></div>
+<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"><a class="line" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964"> 428</a></span><span class="preprocessor">#define GLFW_KEY_Q 81</span></div>
+<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"><a class="line" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36"> 429</a></span><span class="preprocessor">#define GLFW_KEY_R 82</span></div>
+<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"><a class="line" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9"> 430</a></span><span class="preprocessor">#define GLFW_KEY_S 83</span></div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9"> 431</a></span><span class="preprocessor">#define GLFW_KEY_T 84</span></div>
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"><a class="line" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d"> 432</a></span><span class="preprocessor">#define GLFW_KEY_U 85</span></div>
+<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"><a class="line" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b"> 433</a></span><span class="preprocessor">#define GLFW_KEY_V 86</span></div>
+<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"><a class="line" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545"> 434</a></span><span class="preprocessor">#define GLFW_KEY_W 87</span></div>
+<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"><a class="line" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744"> 435</a></span><span class="preprocessor">#define GLFW_KEY_X 88</span></div>
+<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"><a class="line" href="group__keys.html#gafd9f115a549effdf8e372a787c360313"> 436</a></span><span class="preprocessor">#define GLFW_KEY_Y 89</span></div>
+<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"><a class="line" href="group__keys.html#gac489e208c26afda8d4938ed88718760a"> 437</a></span><span class="preprocessor">#define GLFW_KEY_Z 90</span></div>
+<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"><a class="line" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a"> 438</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_BRACKET 91 </span><span class="comment">/* [ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"><a class="line" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1"> 439</a></span><span class="preprocessor">#define GLFW_KEY_BACKSLASH 92 </span><span class="comment">/* \ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"><a class="line" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8"> 440</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_BRACKET 93 </span><span class="comment">/* ] */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"><a class="line" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668"> 441</a></span><span class="preprocessor">#define GLFW_KEY_GRAVE_ACCENT 96 </span><span class="comment">/* ` */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"><a class="line" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a"> 442</a></span><span class="preprocessor">#define GLFW_KEY_WORLD_1 161 </span><span class="comment">/* non-US #1 */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"><a class="line" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e"> 443</a></span><span class="preprocessor">#define GLFW_KEY_WORLD_2 162 </span><span class="comment">/* non-US #2 */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> </div>
+<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span><span class="comment">/* Function keys */</span></div>
+<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"><a class="line" href="group__keys.html#gaac6596c350b635c245113b81c2123b93"> 446</a></span><span class="preprocessor">#define GLFW_KEY_ESCAPE 256</span></div>
+<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"><a class="line" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667"> 447</a></span><span class="preprocessor">#define GLFW_KEY_ENTER 257</span></div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"><a class="line" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df"> 448</a></span><span class="preprocessor">#define GLFW_KEY_TAB 258</span></div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"><a class="line" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635"> 449</a></span><span class="preprocessor">#define GLFW_KEY_BACKSPACE 259</span></div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"><a class="line" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47"> 450</a></span><span class="preprocessor">#define GLFW_KEY_INSERT 260</span></div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"><a class="line" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682"> 451</a></span><span class="preprocessor">#define GLFW_KEY_DELETE 261</span></div>
+<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"><a class="line" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac"> 452</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT 262</span></div>
+<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"><a class="line" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462"> 453</a></span><span class="preprocessor">#define GLFW_KEY_LEFT 263</span></div>
+<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"><a class="line" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9"> 454</a></span><span class="preprocessor">#define GLFW_KEY_DOWN 264</span></div>
+<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"><a class="line" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144"> 455</a></span><span class="preprocessor">#define GLFW_KEY_UP 265</span></div>
+<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"><a class="line" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586"> 456</a></span><span class="preprocessor">#define GLFW_KEY_PAGE_UP 266</span></div>
+<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"><a class="line" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c"> 457</a></span><span class="preprocessor">#define GLFW_KEY_PAGE_DOWN 267</span></div>
+<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"><a class="line" href="group__keys.html#ga41452c7287195d481e43207318c126a7"> 458</a></span><span class="preprocessor">#define GLFW_KEY_HOME 268</span></div>
+<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"><a class="line" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9"> 459</a></span><span class="preprocessor">#define GLFW_KEY_END 269</span></div>
+<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"><a class="line" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672"> 460</a></span><span class="preprocessor">#define GLFW_KEY_CAPS_LOCK 280</span></div>
+<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"><a class="line" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630"> 461</a></span><span class="preprocessor">#define GLFW_KEY_SCROLL_LOCK 281</span></div>
+<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"><a class="line" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43"> 462</a></span><span class="preprocessor">#define GLFW_KEY_NUM_LOCK 282</span></div>
+<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"><a class="line" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642"> 463</a></span><span class="preprocessor">#define GLFW_KEY_PRINT_SCREEN 283</span></div>
+<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"><a class="line" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18"> 464</a></span><span class="preprocessor">#define GLFW_KEY_PAUSE 284</span></div>
+<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"><a class="line" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30"> 465</a></span><span class="preprocessor">#define GLFW_KEY_F1 290</span></div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"><a class="line" href="group__keys.html#ga0900750aff94889b940f5e428c07daee"> 466</a></span><span class="preprocessor">#define GLFW_KEY_F2 291</span></div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"><a class="line" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015"> 467</a></span><span class="preprocessor">#define GLFW_KEY_F3 292</span></div>
+<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"><a class="line" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6"> 468</a></span><span class="preprocessor">#define GLFW_KEY_F4 293</span></div>
+<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"><a class="line" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2"> 469</a></span><span class="preprocessor">#define GLFW_KEY_F5 294</span></div>
+<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"><a class="line" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"> 470</a></span><span class="preprocessor">#define GLFW_KEY_F6 295</span></div>
+<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"><a class="line" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a"> 471</a></span><span class="preprocessor">#define GLFW_KEY_F7 296</span></div>
+<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"><a class="line" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8"> 472</a></span><span class="preprocessor">#define GLFW_KEY_F8 297</span></div>
+<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"><a class="line" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851"> 473</a></span><span class="preprocessor">#define GLFW_KEY_F9 298</span></div>
+<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"><a class="line" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1"> 474</a></span><span class="preprocessor">#define GLFW_KEY_F10 299</span></div>
+<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"><a class="line" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832"> 475</a></span><span class="preprocessor">#define GLFW_KEY_F11 300</span></div>
+<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"><a class="line" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2"> 476</a></span><span class="preprocessor">#define GLFW_KEY_F12 301</span></div>
+<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"><a class="line" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b"> 477</a></span><span class="preprocessor">#define GLFW_KEY_F13 302</span></div>
+<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"><a class="line" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f"> 478</a></span><span class="preprocessor">#define GLFW_KEY_F14 303</span></div>
+<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"><a class="line" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058"> 479</a></span><span class="preprocessor">#define GLFW_KEY_F15 304</span></div>
+<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"><a class="line" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27"> 480</a></span><span class="preprocessor">#define GLFW_KEY_F16 305</span></div>
+<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"><a class="line" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748"> 481</a></span><span class="preprocessor">#define GLFW_KEY_F17 306</span></div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"><a class="line" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c"> 482</a></span><span class="preprocessor">#define GLFW_KEY_F18 307</span></div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"><a class="line" href="group__keys.html#gaec011d9ba044058cb54529da710e9791"> 483</a></span><span class="preprocessor">#define GLFW_KEY_F19 308</span></div>
+<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"><a class="line" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f"> 484</a></span><span class="preprocessor">#define GLFW_KEY_F20 309</span></div>
+<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"><a class="line" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f"> 485</a></span><span class="preprocessor">#define GLFW_KEY_F21 310</span></div>
+<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"><a class="line" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565"> 486</a></span><span class="preprocessor">#define GLFW_KEY_F22 311</span></div>
+<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"><a class="line" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5"> 487</a></span><span class="preprocessor">#define GLFW_KEY_F23 312</span></div>
+<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"><a class="line" href="group__keys.html#ga8150374677b5bed3043408732152dea2"> 488</a></span><span class="preprocessor">#define GLFW_KEY_F24 313</span></div>
+<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"><a class="line" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199"> 489</a></span><span class="preprocessor">#define GLFW_KEY_F25 314</span></div>
+<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"><a class="line" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d"> 490</a></span><span class="preprocessor">#define GLFW_KEY_KP_0 320</span></div>
+<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"><a class="line" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3"> 491</a></span><span class="preprocessor">#define GLFW_KEY_KP_1 321</span></div>
+<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"><a class="line" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13"> 492</a></span><span class="preprocessor">#define GLFW_KEY_KP_2 322</span></div>
+<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"><a class="line" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2"> 493</a></span><span class="preprocessor">#define GLFW_KEY_KP_3 323</span></div>
+<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"><a class="line" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea"> 494</a></span><span class="preprocessor">#define GLFW_KEY_KP_4 324</span></div>
+<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"><a class="line" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45"> 495</a></span><span class="preprocessor">#define GLFW_KEY_KP_5 325</span></div>
+<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"><a class="line" href="group__keys.html#gafc141b0f8450519084c01092a3157faa"> 496</a></span><span class="preprocessor">#define GLFW_KEY_KP_6 326</span></div>
+<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"><a class="line" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53"> 497</a></span><span class="preprocessor">#define GLFW_KEY_KP_7 327</span></div>
+<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"><a class="line" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec"> 498</a></span><span class="preprocessor">#define GLFW_KEY_KP_8 328</span></div>
+<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"><a class="line" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1"> 499</a></span><span class="preprocessor">#define GLFW_KEY_KP_9 329</span></div>
+<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"><a class="line" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b"> 500</a></span><span class="preprocessor">#define GLFW_KEY_KP_DECIMAL 330</span></div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"><a class="line" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5"> 501</a></span><span class="preprocessor">#define GLFW_KEY_KP_DIVIDE 331</span></div>
+<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"><a class="line" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef"> 502</a></span><span class="preprocessor">#define GLFW_KEY_KP_MULTIPLY 332</span></div>
+<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"><a class="line" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236"> 503</a></span><span class="preprocessor">#define GLFW_KEY_KP_SUBTRACT 333</span></div>
+<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"><a class="line" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac"> 504</a></span><span class="preprocessor">#define GLFW_KEY_KP_ADD 334</span></div>
+<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"><a class="line" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf"> 505</a></span><span class="preprocessor">#define GLFW_KEY_KP_ENTER 335</span></div>
+<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97"> 506</a></span><span class="preprocessor">#define GLFW_KEY_KP_EQUAL 336</span></div>
+<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"><a class="line" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6"> 507</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_SHIFT 340</span></div>
+<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"><a class="line" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464"> 508</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_CONTROL 341</span></div>
+<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"><a class="line" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b"> 509</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_ALT 342</span></div>
+<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"><a class="line" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a"> 510</a></span><span class="preprocessor">#define GLFW_KEY_LEFT_SUPER 343</span></div>
+<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"><a class="line" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691"> 511</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_SHIFT 344</span></div>
+<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"><a class="line" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519"> 512</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_CONTROL 345</span></div>
+<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"><a class="line" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446"> 513</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_ALT 346</span></div>
+<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"><a class="line" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db"> 514</a></span><span class="preprocessor">#define GLFW_KEY_RIGHT_SUPER 347</span></div>
+<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"><a class="line" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820"> 515</a></span><span class="preprocessor">#define GLFW_KEY_MENU 348</span></div>
+<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> </div>
+<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"><a class="line" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789"> 517</a></span><span class="preprocessor">#define GLFW_KEY_LAST GLFW_KEY_MENU</span></div>
+<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> </div>
+<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"><a class="line" href="group__mods.html#ga14994d3196c290aaa347248e51740274"> 533</a></span><span class="preprocessor">#define GLFW_MOD_SHIFT 0x0001</span></div>
+<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"><a class="line" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa"> 538</a></span><span class="preprocessor">#define GLFW_MOD_CONTROL 0x0002</span></div>
+<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"><a class="line" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4"> 543</a></span><span class="preprocessor">#define GLFW_MOD_ALT 0x0004</span></div>
+<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"><a class="line" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1"> 548</a></span><span class="preprocessor">#define GLFW_MOD_SUPER 0x0008</span></div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"><a class="line" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f"> 554</a></span><span class="preprocessor">#define GLFW_MOD_CAPS_LOCK 0x0010</span></div>
+<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"><a class="line" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe"> 560</a></span><span class="preprocessor">#define GLFW_MOD_NUM_LOCK 0x0020</span></div>
+<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> </div>
+<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"><a class="line" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e"> 571</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_1 0</span></div>
+<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"><a class="line" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c"> 572</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_2 1</span></div>
+<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"><a class="line" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721"> 573</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_3 2</span></div>
+<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"><a class="line" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9"> 574</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_4 3</span></div>
+<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"><a class="line" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c"> 575</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_5 4</span></div>
+<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"><a class="line" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a"> 576</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_6 5</span></div>
+<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"><a class="line" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7"> 577</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_7 6</span></div>
+<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"><a class="line" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c"> 578</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_8 7</span></div>
+<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"><a class="line" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf"> 579</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_LAST GLFW_MOUSE_BUTTON_8</span></div>
+<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"><a class="line" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56"> 580</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_LEFT GLFW_MOUSE_BUTTON_1</span></div>
+<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"><a class="line" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74"> 581</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_RIGHT GLFW_MOUSE_BUTTON_2</span></div>
+<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"><a class="line" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a"> 582</a></span><span class="preprocessor">#define GLFW_MOUSE_BUTTON_MIDDLE GLFW_MOUSE_BUTTON_3</span></div>
+<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d"> 592</a></span><span class="preprocessor">#define GLFW_JOYSTICK_1 0</span></div>
+<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c"> 593</a></span><span class="preprocessor">#define GLFW_JOYSTICK_2 1</span></div>
+<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654"> 594</a></span><span class="preprocessor">#define GLFW_JOYSTICK_3 2</span></div>
+<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59"> 595</a></span><span class="preprocessor">#define GLFW_JOYSTICK_4 3</span></div>
+<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695"> 596</a></span><span class="preprocessor">#define GLFW_JOYSTICK_5 4</span></div>
+<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77"> 597</a></span><span class="preprocessor">#define GLFW_JOYSTICK_6 5</span></div>
+<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87"> 598</a></span><span class="preprocessor">#define GLFW_JOYSTICK_7 6</span></div>
+<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb"> 599</a></span><span class="preprocessor">#define GLFW_JOYSTICK_8 7</span></div>
+<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf"> 600</a></span><span class="preprocessor">#define GLFW_JOYSTICK_9 8</span></div>
+<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"><a class="line" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec"> 601</a></span><span class="preprocessor">#define GLFW_JOYSTICK_10 9</span></div>
+<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"><a class="line" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4"> 602</a></span><span class="preprocessor">#define GLFW_JOYSTICK_11 10</span></div>
+<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"><a class="line" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"> 603</a></span><span class="preprocessor">#define GLFW_JOYSTICK_12 11</span></div>
+<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508"> 604</a></span><span class="preprocessor">#define GLFW_JOYSTICK_13 12</span></div>
+<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74"> 605</a></span><span class="preprocessor">#define GLFW_JOYSTICK_14 13</span></div>
+<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9"> 606</a></span><span class="preprocessor">#define GLFW_JOYSTICK_15 14</span></div>
+<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce"> 607</a></span><span class="preprocessor">#define GLFW_JOYSTICK_16 15</span></div>
+<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"><a class="line" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9"> 608</a></span><span class="preprocessor">#define GLFW_JOYSTICK_LAST GLFW_JOYSTICK_16</span></div>
+<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810"> 618</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_A 0</span></div>
+<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa"> 619</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_B 1</span></div>
+<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c"> 620</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_X 2</span></div>
+<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed"> 621</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_Y 3</span></div>
+<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3"> 622</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER 4</span></div>
+<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f"> 623</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER 5</span></div>
+<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf"> 624</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_BACK 6</span></div>
+<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021"> 625</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_START 7</span></div>
+<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc"> 626</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_GUIDE 8</span></div>
+<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a"> 627</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB 9</span></div>
+<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a"> 628</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB 10</span></div>
+<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a"> 629</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_UP 11</span></div>
+<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6"> 630</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT 12</span></div>
+<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c"> 631</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN 13</span></div>
+<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301"> 632</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT 14</span></div>
+<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb"> 633</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_LAST GLFW_GAMEPAD_BUTTON_DPAD_LEFT</span></div>
+<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> </div>
+<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a"> 635</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_CROSS GLFW_GAMEPAD_BUTTON_A</span></div>
+<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82"> 636</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_CIRCLE GLFW_GAMEPAD_BUTTON_B</span></div>
+<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f"> 637</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_SQUARE GLFW_GAMEPAD_BUTTON_X</span></div>
+<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"><a class="line" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802"> 638</a></span><span class="preprocessor">#define GLFW_GAMEPAD_BUTTON_TRIANGLE GLFW_GAMEPAD_BUTTON_Y</span></div>
+<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38"> 648</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_X 0</span></div>
+<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5"> 649</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_Y 1</span></div>
+<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc"> 650</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_X 2</span></div>
+<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4"> 651</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_Y 3</span></div>
+<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e"> 652</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER 4</span></div>
+<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab"> 653</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER 5</span></div>
+<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"><a class="line" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86"> 654</a></span><span class="preprocessor">#define GLFW_GAMEPAD_AXIS_LAST GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</span></div>
+<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"><a class="line" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4"> 670</a></span><span class="preprocessor">#define GLFW_NO_ERROR 0</span></div>
+<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"><a class="line" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a"> 679</a></span><span class="preprocessor">#define GLFW_NOT_INITIALIZED 0x00010001</span></div>
+<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"><a class="line" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0"> 689</a></span><span class="preprocessor">#define GLFW_NO_CURRENT_CONTEXT 0x00010002</span></div>
+<div class="line"><a id="l00697" name="l00697"></a><span class="lineno"><a class="line" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce"> 697</a></span><span class="preprocessor">#define GLFW_INVALID_ENUM 0x00010003</span></div>
+<div class="line"><a id="l00708" name="l00708"></a><span class="lineno"><a class="line" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687"> 708</a></span><span class="preprocessor">#define GLFW_INVALID_VALUE 0x00010004</span></div>
+<div class="line"><a id="l00716" name="l00716"></a><span class="lineno"><a class="line" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f"> 716</a></span><span class="preprocessor">#define GLFW_OUT_OF_MEMORY 0x00010005</span></div>
+<div class="line"><a id="l00732" name="l00732"></a><span class="lineno"><a class="line" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e"> 732</a></span><span class="preprocessor">#define GLFW_API_UNAVAILABLE 0x00010006</span></div>
+<div class="line"><a id="l00749" name="l00749"></a><span class="lineno"><a class="line" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462"> 749</a></span><span class="preprocessor">#define GLFW_VERSION_UNAVAILABLE 0x00010007</span></div>
+<div class="line"><a id="l00760" name="l00760"></a><span class="lineno"><a class="line" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1"> 760</a></span><span class="preprocessor">#define GLFW_PLATFORM_ERROR 0x00010008</span></div>
+<div class="line"><a id="l00779" name="l00779"></a><span class="lineno"><a class="line" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14"> 779</a></span><span class="preprocessor">#define GLFW_FORMAT_UNAVAILABLE 0x00010009</span></div>
+<div class="line"><a id="l00787" name="l00787"></a><span class="lineno"><a class="line" href="group__errors.html#gacff24d2757da752ae4c80bf452356487"> 787</a></span><span class="preprocessor">#define GLFW_NO_WINDOW_CONTEXT 0x0001000A</span></div>
+<div class="line"><a id="l00797" name="l00797"></a><span class="lineno"><a class="line" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e"> 797</a></span><span class="preprocessor">#define GLFW_FOCUSED 0x00020001</span></div>
+<div class="line"><a id="l00802" name="l00802"></a><span class="lineno"><a class="line" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a"> 802</a></span><span class="preprocessor">#define GLFW_ICONIFIED 0x00020002</span></div>
+<div class="line"><a id="l00808" name="l00808"></a><span class="lineno"><a class="line" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d"> 808</a></span><span class="preprocessor">#define GLFW_RESIZABLE 0x00020003</span></div>
+<div class="line"><a id="l00814" name="l00814"></a><span class="lineno"><a class="line" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4"> 814</a></span><span class="preprocessor">#define GLFW_VISIBLE 0x00020004</span></div>
+<div class="line"><a id="l00820" name="l00820"></a><span class="lineno"><a class="line" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e"> 820</a></span><span class="preprocessor">#define GLFW_DECORATED 0x00020005</span></div>
+<div class="line"><a id="l00826" name="l00826"></a><span class="lineno"><a class="line" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252"> 826</a></span><span class="preprocessor">#define GLFW_AUTO_ICONIFY 0x00020006</span></div>
+<div class="line"><a id="l00832" name="l00832"></a><span class="lineno"><a class="line" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80"> 832</a></span><span class="preprocessor">#define GLFW_FLOATING 0x00020007</span></div>
+<div class="line"><a id="l00838" name="l00838"></a><span class="lineno"><a class="line" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03"> 838</a></span><span class="preprocessor">#define GLFW_MAXIMIZED 0x00020008</span></div>
+<div class="line"><a id="l00843" name="l00843"></a><span class="lineno"><a class="line" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77"> 843</a></span><span class="preprocessor">#define GLFW_CENTER_CURSOR 0x00020009</span></div>
+<div class="line"><a id="l00850" name="l00850"></a><span class="lineno"><a class="line" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14"> 850</a></span><span class="preprocessor">#define GLFW_TRANSPARENT_FRAMEBUFFER 0x0002000A</span></div>
+<div class="line"><a id="l00855" name="l00855"></a><span class="lineno"><a class="line" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a"> 855</a></span><span class="preprocessor">#define GLFW_HOVERED 0x0002000B</span></div>
+<div class="line"><a id="l00861" name="l00861"></a><span class="lineno"><a class="line" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc"> 861</a></span><span class="preprocessor">#define GLFW_FOCUS_ON_SHOW 0x0002000C</span></div>
+<div class="line"><a id="l00862" name="l00862"></a><span class="lineno"> 862</span> </div>
+<div class="line"><a id="l00867" name="l00867"></a><span class="lineno"><a class="line" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982"> 867</a></span><span class="preprocessor">#define GLFW_RED_BITS 0x00021001</span></div>
+<div class="line"><a id="l00872" name="l00872"></a><span class="lineno"><a class="line" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d"> 872</a></span><span class="preprocessor">#define GLFW_GREEN_BITS 0x00021002</span></div>
+<div class="line"><a id="l00877" name="l00877"></a><span class="lineno"><a class="line" href="group__window.html#gab292ea403db6d514537b515311bf9ae3"> 877</a></span><span class="preprocessor">#define GLFW_BLUE_BITS 0x00021003</span></div>
+<div class="line"><a id="l00882" name="l00882"></a><span class="lineno"><a class="line" href="group__window.html#gafed79a3f468997877da86c449bd43e8c"> 882</a></span><span class="preprocessor">#define GLFW_ALPHA_BITS 0x00021004</span></div>
+<div class="line"><a id="l00887" name="l00887"></a><span class="lineno"><a class="line" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07"> 887</a></span><span class="preprocessor">#define GLFW_DEPTH_BITS 0x00021005</span></div>
+<div class="line"><a id="l00892" name="l00892"></a><span class="lineno"><a class="line" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d"> 892</a></span><span class="preprocessor">#define GLFW_STENCIL_BITS 0x00021006</span></div>
+<div class="line"><a id="l00897" name="l00897"></a><span class="lineno"><a class="line" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6"> 897</a></span><span class="preprocessor">#define GLFW_ACCUM_RED_BITS 0x00021007</span></div>
+<div class="line"><a id="l00902" name="l00902"></a><span class="lineno"><a class="line" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471"> 902</a></span><span class="preprocessor">#define GLFW_ACCUM_GREEN_BITS 0x00021008</span></div>
+<div class="line"><a id="l00907" name="l00907"></a><span class="lineno"><a class="line" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce"> 907</a></span><span class="preprocessor">#define GLFW_ACCUM_BLUE_BITS 0x00021009</span></div>
+<div class="line"><a id="l00912" name="l00912"></a><span class="lineno"><a class="line" href="group__window.html#gae829b55591c18169a40ab4067a041b1f"> 912</a></span><span class="preprocessor">#define GLFW_ACCUM_ALPHA_BITS 0x0002100A</span></div>
+<div class="line"><a id="l00917" name="l00917"></a><span class="lineno"><a class="line" href="group__window.html#gab05108c5029443b371112b031d1fa174"> 917</a></span><span class="preprocessor">#define GLFW_AUX_BUFFERS 0x0002100B</span></div>
+<div class="line"><a id="l00922" name="l00922"></a><span class="lineno"><a class="line" href="group__window.html#ga83d991efca02537e2d69969135b77b03"> 922</a></span><span class="preprocessor">#define GLFW_STEREO 0x0002100C</span></div>
+<div class="line"><a id="l00927" name="l00927"></a><span class="lineno"><a class="line" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535"> 927</a></span><span class="preprocessor">#define GLFW_SAMPLES 0x0002100D</span></div>
+<div class="line"><a id="l00932" name="l00932"></a><span class="lineno"><a class="line" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b"> 932</a></span><span class="preprocessor">#define GLFW_SRGB_CAPABLE 0x0002100E</span></div>
+<div class="line"><a id="l00937" name="l00937"></a><span class="lineno"><a class="line" href="group__window.html#ga0f20825e6e47ee8ba389024519682212"> 937</a></span><span class="preprocessor">#define GLFW_REFRESH_RATE 0x0002100F</span></div>
+<div class="line"><a id="l00942" name="l00942"></a><span class="lineno"><a class="line" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339"> 942</a></span><span class="preprocessor">#define GLFW_DOUBLEBUFFER 0x00021010</span></div>
+<div class="line"><a id="l00943" name="l00943"></a><span class="lineno"> 943</span> </div>
+<div class="line"><a id="l00949" name="l00949"></a><span class="lineno"><a class="line" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b"> 949</a></span><span class="preprocessor">#define GLFW_CLIENT_API 0x00022001</span></div>
+<div class="line"><a id="l00955" name="l00955"></a><span class="lineno"><a class="line" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0"> 955</a></span><span class="preprocessor">#define GLFW_CONTEXT_VERSION_MAJOR 0x00022002</span></div>
+<div class="line"><a id="l00961" name="l00961"></a><span class="lineno"><a class="line" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07"> 961</a></span><span class="preprocessor">#define GLFW_CONTEXT_VERSION_MINOR 0x00022003</span></div>
+<div class="line"><a id="l00967" name="l00967"></a><span class="lineno"><a class="line" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08"> 967</a></span><span class="preprocessor">#define GLFW_CONTEXT_REVISION 0x00022004</span></div>
+<div class="line"><a id="l00973" name="l00973"></a><span class="lineno"><a class="line" href="group__window.html#gade3593916b4c507900aa2d6844810e00"> 973</a></span><span class="preprocessor">#define GLFW_CONTEXT_ROBUSTNESS 0x00022005</span></div>
+<div class="line"><a id="l00979" name="l00979"></a><span class="lineno"><a class="line" href="group__window.html#ga13d24b12465da8b28985f46c8557925b"> 979</a></span><span class="preprocessor">#define GLFW_OPENGL_FORWARD_COMPAT 0x00022006</span></div>
+<div class="line"><a id="l00985" name="l00985"></a><span class="lineno"><a class="line" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1"> 985</a></span><span class="preprocessor">#define GLFW_OPENGL_DEBUG_CONTEXT 0x00022007</span></div>
+<div class="line"><a id="l00991" name="l00991"></a><span class="lineno"><a class="line" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12"> 991</a></span><span class="preprocessor">#define GLFW_OPENGL_PROFILE 0x00022008</span></div>
+<div class="line"><a id="l00997" name="l00997"></a><span class="lineno"><a class="line" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6"> 997</a></span><span class="preprocessor">#define GLFW_CONTEXT_RELEASE_BEHAVIOR 0x00022009</span></div>
+<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"><a class="line" href="group__window.html#ga5a52fdfd46d8249c211f923675728082"> 1003</a></span><span class="preprocessor">#define GLFW_CONTEXT_NO_ERROR 0x0002200A</span></div>
+<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"><a class="line" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486"> 1009</a></span><span class="preprocessor">#define GLFW_CONTEXT_CREATION_API 0x0002200B</span></div>
+<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"><a class="line" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47"> 1013</a></span><span class="preprocessor">#define GLFW_SCALE_TO_MONITOR 0x0002200C</span></div>
+<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"><a class="line" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e"> 1017</a></span><span class="preprocessor">#define GLFW_COCOA_RETINA_FRAMEBUFFER 0x00023001</span></div>
+<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"><a class="line" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5"> 1021</a></span><span class="preprocessor">#define GLFW_COCOA_FRAME_NAME 0x00023002</span></div>
+<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"><a class="line" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc"> 1025</a></span><span class="preprocessor">#define GLFW_COCOA_GRAPHICS_SWITCHING 0x00023003</span></div>
+<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"><a class="line" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114"> 1029</a></span><span class="preprocessor">#define GLFW_X11_CLASS_NAME 0x00024001</span></div>
+<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"><a class="line" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8"> 1033</a></span><span class="preprocessor">#define GLFW_X11_INSTANCE_NAME 0x00024002</span></div>
+<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264"> 1036</a></span><span class="preprocessor">#define GLFW_NO_API 0</span></div>
+<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a01b3f66db266341425e9abee6b257db2"> 1037</a></span><span class="preprocessor">#define GLFW_OPENGL_API 0x00030001</span></div>
+<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f"> 1038</a></span><span class="preprocessor">#define GLFW_OPENGL_ES_API 0x00030002</span></div>
+<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span> </div>
+<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34"> 1040</a></span><span class="preprocessor">#define GLFW_NO_ROBUSTNESS 0</span></div>
+<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aee84a679230d205005e22487ff678a85"> 1041</a></span><span class="preprocessor">#define GLFW_NO_RESET_NOTIFICATION 0x00031001</span></div>
+<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aec1132f245143fc915b2f0995228564c"> 1042</a></span><span class="preprocessor">#define GLFW_LOSE_CONTEXT_ON_RESET 0x00031002</span></div>
+<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"> 1043</span> </div>
+<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f"> 1044</a></span><span class="preprocessor">#define GLFW_OPENGL_ANY_PROFILE 0</span></div>
+<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"><a class="line" href="glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8"> 1045</a></span><span class="preprocessor">#define GLFW_OPENGL_CORE_PROFILE 0x00032001</span></div>
+<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670"> 1046</a></span><span class="preprocessor">#define GLFW_OPENGL_COMPAT_PROFILE 0x00032002</span></div>
+<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span> </div>
+<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c"> 1048</a></span><span class="preprocessor">#define GLFW_CURSOR 0x00033001</span></div>
+<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc"> 1049</a></span><span class="preprocessor">#define GLFW_STICKY_KEYS 0x00033002</span></div>
+<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1"> 1050</a></span><span class="preprocessor">#define GLFW_STICKY_MOUSE_BUTTONS 0x00033003</span></div>
+<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947"> 1051</a></span><span class="preprocessor">#define GLFW_LOCK_KEY_MODS 0x00033004</span></div>
+<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb"> 1052</a></span><span class="preprocessor">#define GLFW_RAW_MOUSE_MOTION 0x00033005</span></div>
+<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span> </div>
+<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68"> 1054</a></span><span class="preprocessor">#define GLFW_CURSOR_NORMAL 0x00034001</span></div>
+<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"><a class="line" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11"> 1055</a></span><span class="preprocessor">#define GLFW_CURSOR_HIDDEN 0x00034002</span></div>
+<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88"> 1056</a></span><span class="preprocessor">#define GLFW_CURSOR_DISABLED 0x00034003</span></div>
+<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span> </div>
+<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee"> 1058</a></span><span class="preprocessor">#define GLFW_ANY_RELEASE_BEHAVIOR 0</span></div>
+<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b"> 1059</a></span><span class="preprocessor">#define GLFW_RELEASE_BEHAVIOR_FLUSH 0x00035001</span></div>
+<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"><a class="line" href="glfw3_8h.html#afca09088eccacdce4b59036cfae349c5"> 1060</a></span><span class="preprocessor">#define GLFW_RELEASE_BEHAVIOR_NONE 0x00035002</span></div>
+<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span> </div>
+<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19"> 1062</a></span><span class="preprocessor">#define GLFW_NATIVE_CONTEXT_API 0x00036001</span></div>
+<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9"> 1063</a></span><span class="preprocessor">#define GLFW_EGL_CONTEXT_API 0x00036002</span></div>
+<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"><a class="line" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3"> 1064</a></span><span class="preprocessor">#define GLFW_OSMESA_CONTEXT_API 0x00036003</span></div>
+<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span> </div>
+<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"><a class="line" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a"> 1078</a></span><span class="preprocessor">#define GLFW_ARROW_CURSOR 0x00036001</span></div>
+<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"><a class="line" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86"> 1083</a></span><span class="preprocessor">#define GLFW_IBEAM_CURSOR 0x00036002</span></div>
+<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"><a class="line" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22"> 1088</a></span><span class="preprocessor">#define GLFW_CROSSHAIR_CURSOR 0x00036003</span></div>
+<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"><a class="line" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263"> 1093</a></span><span class="preprocessor">#define GLFW_HAND_CURSOR 0x00036004</span></div>
+<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"><a class="line" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962"> 1098</a></span><span class="preprocessor">#define GLFW_HRESIZE_CURSOR 0x00036005</span></div>
+<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"><a class="line" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5"> 1103</a></span><span class="preprocessor">#define GLFW_VRESIZE_CURSOR 0x00036006</span></div>
+<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"><a class="line" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e"> 1106</a></span><span class="preprocessor">#define GLFW_CONNECTED 0x00040001</span></div>
+<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32"> 1107</a></span><span class="preprocessor">#define GLFW_DISCONNECTED 0x00040002</span></div>
+<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span> </div>
+<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"><a class="line" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18"> 1115</a></span><span class="preprocessor">#define GLFW_JOYSTICK_HAT_BUTTONS 0x00050001</span></div>
+<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"><a class="line" href="group__init.html#gab937983147a3158d45f88fad7129d9f2"> 1120</a></span><span class="preprocessor">#define GLFW_COCOA_CHDIR_RESOURCES 0x00051001</span></div>
+<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"><a class="line" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf"> 1125</a></span><span class="preprocessor">#define GLFW_COCOA_MENUBAR 0x00051002</span></div>
+<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571"> 1128</a></span><span class="preprocessor">#define GLFW_DONT_CARE -1</span></div>
+<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span> </div>
+<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span> </div>
+<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span><span class="comment"> * GLFW API types</span></div>
+<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span> </div>
+<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"><a class="line" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c"> 1147</a></span><span class="keyword">typedef</span> void (*<a class="code hl_typedef" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>)(void);</div>
+<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span> </div>
+<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af"> 1161</a></span><span class="keyword">typedef</span> void (*<a class="code hl_typedef" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>)(void);</div>
+<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span> </div>
+<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"><a class="line" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3"> 1173</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>;</div>
+<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span> </div>
+<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"><a class="line" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242"> 1185</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>;</div>
+<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span> </div>
+<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"><a class="line" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4"> 1197</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>;</div>
+<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span> </div>
+<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"><a class="line" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3"> 1221</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>)(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description);</div>
+<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span> </div>
+<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"><a class="line" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9"> 1244</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos);</div>
+<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span> </div>
+<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"><a class="line" href="group__window.html#gaec0282944bb810f6f3163ec02da90350"> 1266</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span> </div>
+<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"><a class="line" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e"> 1286</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span> </div>
+<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"><a class="line" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5"> 1306</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span> </div>
+<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"><a class="line" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46"> 1327</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused);</div>
+<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span> </div>
+<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"><a class="line" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f"> 1348</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified);</div>
+<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span> </div>
+<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"><a class="line" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90"> 1369</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized);</div>
+<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span> </div>
+<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"><a class="line" href="group__window.html#gae18026e294dde685ed2e5f759533144d"> 1390</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span> </div>
+<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"><a class="line" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e"> 1411</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale);</div>
+<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span> </div>
+<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"><a class="line" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727"> 1437</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
+<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span> </div>
+<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"><a class="line" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68"> 1460</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
+<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span> </div>
+<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"><a class="line" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe"> 1481</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered);</div>
+<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> </div>
+<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"><a class="line" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5"> 1502</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset);</div>
+<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> </div>
+<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"><a class="line" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c"> 1528</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods);</div>
+<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span> </div>
+<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"><a class="line" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e"> 1549</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint);</div>
+<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span> </div>
+<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"><a class="line" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f"> 1576</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods);</div>
+<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span> </div>
+<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"><a class="line" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2"> 1600</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>)(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[]);</div>
+<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"><a class="line" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249"> 1621</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>)(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event);</div>
+<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> </div>
+<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"><a class="line" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243"> 1642</a></span><span class="keyword">typedef</span> void (* <a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>)(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event);</div>
+<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span> </div>
+<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html"> 1657</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a></div>
+<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span>{</div>
+<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d"> 1661</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>;</div>
+<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c"> 1664</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>;</div>
+<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b"> 1667</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a>;</div>
+<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa"> 1670</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a>;</div>
+<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047"> 1673</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a>;</div>
+<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"><a class="line" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649"> 1676</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>;</div>
+<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"><a class="line" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565"> 1677</a></span>} <a class="code hl_typedef" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a>;</div>
+<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"> 1678</span> </div>
+<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html"> 1691</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a></div>
+<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span>{</div>
+<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138"> 1695</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a>;</div>
+<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a"> 1698</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a>;</div>
+<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b"> 1701</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span>* <a class="code hl_variable" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a>;</div>
+<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"><a class="line" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5"> 1704</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a>;</div>
+<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"><a class="line" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404"> 1705</a></span>} <a class="code hl_typedef" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a>;</div>
+<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span> </div>
+<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"><a class="line" href="structGLFWimage.html"> 1720</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a></div>
+<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span>{</div>
+<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"><a class="line" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835"> 1724</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a>;</div>
+<div class="line"><a id="l01727" name="l01727"></a><span class="lineno"><a class="line" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec"> 1727</a></span> <span class="keywordtype">int</span> <a class="code hl_variable" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a>;</div>
+<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"><a class="line" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb"> 1730</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_variable" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a>;</div>
+<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"><a class="line" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca"> 1731</a></span>} <a class="code hl_typedef" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a>;</div>
+<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span> </div>
+<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html"> 1744</a></span><span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div>
+<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span>{</div>
+<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a"> 1749</a></span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code hl_variable" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a>[15];</div>
+<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"><a class="line" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189"> 1753</a></span> <span class="keywordtype">float</span> <a class="code hl_variable" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a>[6];</div>
+<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"><a class="line" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d"> 1754</a></span>} <a class="code hl_typedef" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a>;</div>
+<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"> 1755</span> </div>
+<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span> </div>
+<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span><span class="comment"> * GLFW API functions</span></div>
+<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span> </div>
+<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"><a class="line" href="group__init.html#ga317aac130a235ab08c6db0834907d85e"> 1797</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span> </div>
+<div class="line"><a id="l01831" name="l01831"></a><span class="lineno"><a class="line" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901"> 1831</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l01832" name="l01832"></a><span class="lineno"> 1832</span> </div>
+<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"><a class="line" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a"> 1863</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>(<span class="keywordtype">int</span> hint, <span class="keywordtype">int</span> value);</div>
+<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span> </div>
+<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"><a class="line" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197"> 1890</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>(<span class="keywordtype">int</span>* major, <span class="keywordtype">int</span>* minor, <span class="keywordtype">int</span>* rev);</div>
+<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span> </div>
+<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"><a class="line" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0"> 1921</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span> </div>
+<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"><a class="line" href="group__init.html#ga944986b4ec0b928d488141f92982aa18"> 1952</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>** description);</div>
+<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span> </div>
+<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"><a class="line" href="group__init.html#gaff45816610d53f0b83656092a4034f40"> 1998</a></span>GLFWAPI <a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> <a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(<a class="code hl_typedef" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback);</div>
+<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"><a class="line" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2"> 2027</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>** <a class="code hl_function" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>(<span class="keywordtype">int</span>* count);</div>
+<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span> </div>
+<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"><a class="line" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5"> 2051</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span> </div>
+<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"><a class="line" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9"> 2076</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos);</div>
+<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span> </div>
+<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"> 2107</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
+<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span> </div>
+<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea"> 2141</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* widthMM, <span class="keywordtype">int</span>* heightMM);</div>
+<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"> 2142</span> </div>
+<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"><a class="line" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b"> 2173</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">float</span>* xscale, <span class="keywordtype">float</span>* yscale);</div>
+<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"> 2174</span> </div>
+<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"><a class="line" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68"> 2199</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span> </div>
+<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"><a class="line" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda"> 2225</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">void</span>* pointer);</div>
+<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span> </div>
+<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"><a class="line" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5"> 2249</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
+<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"><a class="line" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3"> 2279</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> <a class="code hl_function" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a>(<a class="code hl_typedef" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback);</div>
+<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span> </div>
+<div class="line"><a id="l02313" name="l02313"></a><span class="lineno"><a class="line" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b"> 2313</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* <a class="code hl_function" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span>* count);</div>
+<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"> 2314</span> </div>
+<div class="line"><a id="l02341" name="l02341"></a><span class="lineno"><a class="line" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5"> 2341</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l02342" name="l02342"></a><span class="lineno"> 2342</span> </div>
+<div class="line"><a id="l02374" name="l02374"></a><span class="lineno"><a class="line" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a"> 2374</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">float</span> gamma);</div>
+<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"> 2375</span> </div>
+<div class="line"><a id="l02404" name="l02404"></a><span class="lineno"><a class="line" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f"> 2404</a></span>GLFWAPI <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* <a class="code hl_function" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l02405" name="l02405"></a><span class="lineno"> 2405</span> </div>
+<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"><a class="line" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd"> 2445</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* ramp);</div>
+<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span> </div>
+<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"><a class="line" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a"> 2464</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span> </div>
+<div class="line"><a id="l02499" name="l02499"></a><span class="lineno"><a class="line" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033"> 2499</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<span class="keywordtype">int</span> hint, <span class="keywordtype">int</span> value);</div>
+<div class="line"><a id="l02500" name="l02500"></a><span class="lineno"> 2500</span> </div>
+<div class="line"><a id="l02537" name="l02537"></a><span class="lineno"><a class="line" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f"> 2537</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>(<span class="keywordtype">int</span> hint, <span class="keyword">const</span> <span class="keywordtype">char</span>* value);</div>
+<div class="line"><a id="l02538" name="l02538"></a><span class="lineno"> 2538</span> </div>
+<div class="line"><a id="l02691" name="l02691"></a><span class="lineno"><a class="line" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb"> 2691</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(<span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keyword">const</span> <span class="keywordtype">char</span>* title, <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* share);</div>
+<div class="line"><a id="l02692" name="l02692"></a><span class="lineno"> 2692</span> </div>
+<div class="line"><a id="l02720" name="l02720"></a><span class="lineno"><a class="line" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2"> 2720</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l02721" name="l02721"></a><span class="lineno"> 2721</span> </div>
+<div class="line"><a id="l02740" name="l02740"></a><span class="lineno"><a class="line" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5"> 2740</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l02741" name="l02741"></a><span class="lineno"> 2741</span> </div>
+<div class="line"><a id="l02762" name="l02762"></a><span class="lineno"><a class="line" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708"> 2762</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> value);</div>
+<div class="line"><a id="l02763" name="l02763"></a><span class="lineno"> 2763</span> </div>
+<div class="line"><a id="l02787" name="l02787"></a><span class="lineno"><a class="line" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff"> 2787</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> <span class="keywordtype">char</span>* title);</div>
+<div class="line"><a id="l02788" name="l02788"></a><span class="lineno"> 2788</span> </div>
+<div class="line"><a id="l02834" name="l02834"></a><span class="lineno"><a class="line" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5"> 2834</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> count, <span class="keyword">const</span> <a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a>* images);</div>
+<div class="line"><a id="l02835" name="l02835"></a><span class="lineno"> 2835</span> </div>
+<div class="line"><a id="l02866" name="l02866"></a><span class="lineno"><a class="line" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634"> 2866</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* xpos, <span class="keywordtype">int</span>* ypos);</div>
+<div class="line"><a id="l02867" name="l02867"></a><span class="lineno"> 2867</span> </div>
+<div class="line"><a id="l02901" name="l02901"></a><span class="lineno"><a class="line" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8"> 2901</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos);</div>
+<div class="line"><a id="l02902" name="l02902"></a><span class="lineno"> 2902</span> </div>
+<div class="line"><a id="l02931" name="l02931"></a><span class="lineno"><a class="line" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6"> 2931</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
+<div class="line"><a id="l02932" name="l02932"></a><span class="lineno"> 2932</span> </div>
+<div class="line"><a id="l02974" name="l02974"></a><span class="lineno"><a class="line" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90"> 2974</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> minwidth, <span class="keywordtype">int</span> minheight, <span class="keywordtype">int</span> maxwidth, <span class="keywordtype">int</span> maxheight);</div>
+<div class="line"><a id="l02975" name="l02975"></a><span class="lineno"> 2975</span> </div>
+<div class="line"><a id="l03017" name="l03017"></a><span class="lineno"><a class="line" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937"> 3017</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> numer, <span class="keywordtype">int</span> denom);</div>
+<div class="line"><a id="l03018" name="l03018"></a><span class="lineno"> 3018</span> </div>
+<div class="line"><a id="l03058" name="l03058"></a><span class="lineno"><a class="line" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb"> 3058</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height);</div>
+<div class="line"><a id="l03059" name="l03059"></a><span class="lineno"> 3059</span> </div>
+<div class="line"><a id="l03087" name="l03087"></a><span class="lineno"><a class="line" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9"> 3087</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height);</div>
+<div class="line"><a id="l03088" name="l03088"></a><span class="lineno"> 3088</span> </div>
+<div class="line"><a id="l03124" name="l03124"></a><span class="lineno"><a class="line" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1"> 3124</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* left, <span class="keywordtype">int</span>* top, <span class="keywordtype">int</span>* right, <span class="keywordtype">int</span>* bottom);</div>
+<div class="line"><a id="l03125" name="l03125"></a><span class="lineno"> 3125</span> </div>
+<div class="line"><a id="l03157" name="l03157"></a><span class="lineno"><a class="line" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c"> 3157</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span>* xscale, <span class="keywordtype">float</span>* yscale);</div>
+<div class="line"><a id="l03158" name="l03158"></a><span class="lineno"> 3158</span> </div>
+<div class="line"><a id="l03184" name="l03184"></a><span class="lineno"><a class="line" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84"> 3184</a></span>GLFWAPI <span class="keywordtype">float</span> <a class="code hl_function" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03185" name="l03185"></a><span class="lineno"> 3185</span> </div>
+<div class="line"><a id="l03213" name="l03213"></a><span class="lineno"><a class="line" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9"> 3213</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> opacity);</div>
+<div class="line"><a id="l03214" name="l03214"></a><span class="lineno"> 3214</span> </div>
+<div class="line"><a id="l03241" name="l03241"></a><span class="lineno"><a class="line" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4"> 3241</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03242" name="l03242"></a><span class="lineno"> 3242</span> </div>
+<div class="line"><a id="l03268" name="l03268"></a><span class="lineno"><a class="line" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7"> 3268</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03269" name="l03269"></a><span class="lineno"> 3269</span> </div>
+<div class="line"><a id="l03293" name="l03293"></a><span class="lineno"><a class="line" href="group__window.html#ga3f541387449d911274324ae7f17ec56b"> 3293</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03294" name="l03294"></a><span class="lineno"> 3294</span> </div>
+<div class="line"><a id="l03325" name="l03325"></a><span class="lineno"><a class="line" href="group__window.html#ga61be47917b72536a148300f46494fc66"> 3325</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03326" name="l03326"></a><span class="lineno"> 3326</span> </div>
+<div class="line"><a id="l03347" name="l03347"></a><span class="lineno"><a class="line" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c"> 3347</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03348" name="l03348"></a><span class="lineno"> 3348</span> </div>
+<div class="line"><a id="l03386" name="l03386"></a><span class="lineno"><a class="line" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1"> 3386</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03387" name="l03387"></a><span class="lineno"> 3387</span> </div>
+<div class="line"><a id="l03413" name="l03413"></a><span class="lineno"><a class="line" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703"> 3413</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03414" name="l03414"></a><span class="lineno"> 3414</span> </div>
+<div class="line"><a id="l03435" name="l03435"></a><span class="lineno"><a class="line" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299"> 3435</a></span>GLFWAPI <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* <a class="code hl_function" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03436" name="l03436"></a><span class="lineno"> 3436</span> </div>
+<div class="line"><a id="l03494" name="l03494"></a><span class="lineno"><a class="line" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7"> 3494</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height, <span class="keywordtype">int</span> refreshRate);</div>
+<div class="line"><a id="l03495" name="l03495"></a><span class="lineno"> 3495</span> </div>
+<div class="line"><a id="l03531" name="l03531"></a><span class="lineno"><a class="line" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337"> 3531</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> attrib);</div>
+<div class="line"><a id="l03532" name="l03532"></a><span class="lineno"> 3532</span> </div>
+<div class="line"><a id="l03568" name="l03568"></a><span class="lineno"><a class="line" href="group__window.html#gace2afda29b4116ec012e410a6819033e"> 3568</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> attrib, <span class="keywordtype">int</span> value);</div>
+<div class="line"><a id="l03569" name="l03569"></a><span class="lineno"> 3569</span> </div>
+<div class="line"><a id="l03591" name="l03591"></a><span class="lineno"><a class="line" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651"> 3591</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">void</span>* pointer);</div>
+<div class="line"><a id="l03592" name="l03592"></a><span class="lineno"> 3592</span> </div>
+<div class="line"><a id="l03612" name="l03612"></a><span class="lineno"><a class="line" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653"> 3612</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l03613" name="l03613"></a><span class="lineno"> 3613</span> </div>
+<div class="line"><a id="l03647" name="l03647"></a><span class="lineno"><a class="line" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74"> 3647</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> <a class="code hl_function" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback);</div>
+<div class="line"><a id="l03648" name="l03648"></a><span class="lineno"> 3648</span> </div>
+<div class="line"><a id="l03679" name="l03679"></a><span class="lineno"><a class="line" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8"> 3679</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> <a class="code hl_function" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback);</div>
+<div class="line"><a id="l03680" name="l03680"></a><span class="lineno"> 3680</span> </div>
+<div class="line"><a id="l03719" name="l03719"></a><span class="lineno"><a class="line" href="group__window.html#gada646d775a7776a95ac000cfc1885331"> 3719</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> <a class="code hl_function" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback);</div>
+<div class="line"><a id="l03720" name="l03720"></a><span class="lineno"> 3720</span> </div>
+<div class="line"><a id="l03755" name="l03755"></a><span class="lineno"><a class="line" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e"> 3755</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> <a class="code hl_function" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback);</div>
+<div class="line"><a id="l03756" name="l03756"></a><span class="lineno"> 3756</span> </div>
+<div class="line"><a id="l03790" name="l03790"></a><span class="lineno"><a class="line" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c"> 3790</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> <a class="code hl_function" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback);</div>
+<div class="line"><a id="l03791" name="l03791"></a><span class="lineno"> 3791</span> </div>
+<div class="line"><a id="l03823" name="l03823"></a><span class="lineno"><a class="line" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e"> 3823</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> <a class="code hl_function" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback);</div>
+<div class="line"><a id="l03824" name="l03824"></a><span class="lineno"> 3824</span> </div>
+<div class="line"><a id="l03853" name="l03853"></a><span class="lineno"><a class="line" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93"> 3853</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> <a class="code hl_function" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback);</div>
+<div class="line"><a id="l03854" name="l03854"></a><span class="lineno"> 3854</span> </div>
+<div class="line"><a id="l03883" name="l03883"></a><span class="lineno"><a class="line" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f"> 3883</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> <a class="code hl_function" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback);</div>
+<div class="line"><a id="l03884" name="l03884"></a><span class="lineno"> 3884</span> </div>
+<div class="line"><a id="l03914" name="l03914"></a><span class="lineno"><a class="line" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6"> 3914</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> <a class="code hl_function" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback);</div>
+<div class="line"><a id="l03915" name="l03915"></a><span class="lineno"> 3915</span> </div>
+<div class="line"><a id="l03952" name="l03952"></a><span class="lineno"><a class="line" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832"> 3952</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l03953" name="l03953"></a><span class="lineno"> 3953</span> </div>
+<div class="line"><a id="l03997" name="l03997"></a><span class="lineno"><a class="line" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e"> 3997</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l03998" name="l03998"></a><span class="lineno"> 3998</span> </div>
+<div class="line"><a id="l04046" name="l04046"></a><span class="lineno"><a class="line" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf"> 4046</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>(<span class="keywordtype">double</span> timeout);</div>
+<div class="line"><a id="l04047" name="l04047"></a><span class="lineno"> 4047</span> </div>
+<div class="line"><a id="l04066" name="l04066"></a><span class="lineno"><a class="line" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9"> 4066</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l04067" name="l04067"></a><span class="lineno"> 4067</span> </div>
+<div class="line"><a id="l04091" name="l04091"></a><span class="lineno"><a class="line" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4"> 4091</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> mode);</div>
+<div class="line"><a id="l04092" name="l04092"></a><span class="lineno"> 4092</span> </div>
+<div class="line"><a id="l04153" name="l04153"></a><span class="lineno"><a class="line" href="group__input.html#gaa92336e173da9c8834558b54ee80563b"> 4153</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> mode, <span class="keywordtype">int</span> value);</div>
+<div class="line"><a id="l04154" name="l04154"></a><span class="lineno"> 4154</span> </div>
+<div class="line"><a id="l04182" name="l04182"></a><span class="lineno"><a class="line" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2"> 4182</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l04183" name="l04183"></a><span class="lineno"> 4183</span> </div>
+<div class="line"><a id="l04250" name="l04250"></a><span class="lineno"><a class="line" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f"> 4250</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>(<span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode);</div>
+<div class="line"><a id="l04251" name="l04251"></a><span class="lineno"> 4251</span> </div>
+<div class="line"><a id="l04274" name="l04274"></a><span class="lineno"><a class="line" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a"> 4274</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>(<span class="keywordtype">int</span> key);</div>
+<div class="line"><a id="l04275" name="l04275"></a><span class="lineno"> 4275</span> </div>
+<div class="line"><a id="l04313" name="l04313"></a><span class="lineno"><a class="line" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2"> 4313</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key);</div>
+<div class="line"><a id="l04314" name="l04314"></a><span class="lineno"> 4314</span> </div>
+<div class="line"><a id="l04342" name="l04342"></a><span class="lineno"><a class="line" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704"> 4342</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button);</div>
+<div class="line"><a id="l04343" name="l04343"></a><span class="lineno"> 4343</span> </div>
+<div class="line"><a id="l04380" name="l04380"></a><span class="lineno"><a class="line" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc"> 4380</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span>* xpos, <span class="keywordtype">double</span>* ypos);</div>
+<div class="line"><a id="l04381" name="l04381"></a><span class="lineno"> 4381</span> </div>
+<div class="line"><a id="l04420" name="l04420"></a><span class="lineno"><a class="line" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7"> 4420</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
+<div class="line"><a id="l04421" name="l04421"></a><span class="lineno"> 4421</span> </div>
+<div class="line"><a id="l04458" name="l04458"></a><span class="lineno"><a class="line" href="group__input.html#ga556f604f73af156c0db0e97c081373c3"> 4458</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* <a class="code hl_function" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a>* image, <span class="keywordtype">int</span> xhot, <span class="keywordtype">int</span> yhot);</div>
+<div class="line"><a id="l04459" name="l04459"></a><span class="lineno"> 4459</span> </div>
+<div class="line"><a id="l04481" name="l04481"></a><span class="lineno"><a class="line" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e"> 4481</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* <a class="code hl_function" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>(<span class="keywordtype">int</span> shape);</div>
+<div class="line"><a id="l04482" name="l04482"></a><span class="lineno"> 4482</span> </div>
+<div class="line"><a id="l04508" name="l04508"></a><span class="lineno"><a class="line" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a"> 4508</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>(<a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor);</div>
+<div class="line"><a id="l04509" name="l04509"></a><span class="lineno"> 4509</span> </div>
+<div class="line"><a id="l04535" name="l04535"></a><span class="lineno"><a class="line" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e"> 4535</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor);</div>
+<div class="line"><a id="l04536" name="l04536"></a><span class="lineno"> 4536</span> </div>
+<div class="line"><a id="l04585" name="l04585"></a><span class="lineno"><a class="line" href="group__input.html#ga1caf18159767e761185e49a3be019f8d"> 4585</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> <a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback);</div>
+<div class="line"><a id="l04586" name="l04586"></a><span class="lineno"> 4586</span> </div>
+<div class="line"><a id="l04628" name="l04628"></a><span class="lineno"><a class="line" href="group__input.html#gab25c4a220fd8f5717718dbc487828996"> 4628</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> <a class="code hl_function" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback);</div>
+<div class="line"><a id="l04629" name="l04629"></a><span class="lineno"> 4629</span> </div>
+<div class="line"><a id="l04670" name="l04670"></a><span class="lineno"><a class="line" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c"> 4670</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> <a class="code hl_function" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback);</div>
+<div class="line"><a id="l04671" name="l04671"></a><span class="lineno"> 4671</span> </div>
+<div class="line"><a id="l04707" name="l04707"></a><span class="lineno"><a class="line" href="group__input.html#ga6ab84420974d812bee700e45284a723c"> 4707</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> <a class="code hl_function" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback);</div>
+<div class="line"><a id="l04708" name="l04708"></a><span class="lineno"> 4708</span> </div>
+<div class="line"><a id="l04739" name="l04739"></a><span class="lineno"><a class="line" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7"> 4739</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> <a class="code hl_function" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback);</div>
+<div class="line"><a id="l04740" name="l04740"></a><span class="lineno"> 4740</span> </div>
+<div class="line"><a id="l04770" name="l04770"></a><span class="lineno"><a class="line" href="group__input.html#gad27f8ad0142c038a281466c0966817d8"> 4770</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> <a class="code hl_function" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback);</div>
+<div class="line"><a id="l04771" name="l04771"></a><span class="lineno"> 4771</span> </div>
+<div class="line"><a id="l04804" name="l04804"></a><span class="lineno"><a class="line" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede"> 4804</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> <a class="code hl_function" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback);</div>
+<div class="line"><a id="l04805" name="l04805"></a><span class="lineno"> 4805</span> </div>
+<div class="line"><a id="l04841" name="l04841"></a><span class="lineno"><a class="line" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b"> 4841</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> <a class="code hl_function" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <a class="code hl_typedef" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback);</div>
+<div class="line"><a id="l04842" name="l04842"></a><span class="lineno"> 4842</span> </div>
+<div class="line"><a id="l04865" name="l04865"></a><span class="lineno"><a class="line" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1"> 4865</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l04866" name="l04866"></a><span class="lineno"> 4866</span> </div>
+<div class="line"><a id="l04898" name="l04898"></a><span class="lineno"><a class="line" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408"> 4898</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">float</span>* <a class="code hl_function" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
+<div class="line"><a id="l04899" name="l04899"></a><span class="lineno"> 4899</span> </div>
+<div class="line"><a id="l04939" name="l04939"></a><span class="lineno"><a class="line" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938"> 4939</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
+<div class="line"><a id="l04940" name="l04940"></a><span class="lineno"> 4940</span> </div>
+<div class="line"><a id="l04996" name="l04996"></a><span class="lineno"><a class="line" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c"> 4996</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span>* count);</div>
+<div class="line"><a id="l04997" name="l04997"></a><span class="lineno"> 4997</span> </div>
+<div class="line"><a id="l05027" name="l05027"></a><span class="lineno"><a class="line" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978"> 5027</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l05028" name="l05028"></a><span class="lineno"> 5028</span> </div>
+<div class="line"><a id="l05068" name="l05068"></a><span class="lineno"><a class="line" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600"> 5068</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l05069" name="l05069"></a><span class="lineno"> 5069</span> </div>
+<div class="line"><a id="l05094" name="l05094"></a><span class="lineno"><a class="line" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e"> 5094</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a>(<span class="keywordtype">int</span> jid, <span class="keywordtype">void</span>* pointer);</div>
+<div class="line"><a id="l05095" name="l05095"></a><span class="lineno"> 5095</span> </div>
+<div class="line"><a id="l05118" name="l05118"></a><span class="lineno"><a class="line" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3"> 5118</a></span>GLFWAPI <span class="keywordtype">void</span>* <a class="code hl_function" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l05119" name="l05119"></a><span class="lineno"> 5119</span> </div>
+<div class="line"><a id="l05146" name="l05146"></a><span class="lineno"><a class="line" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00"> 5146</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l05147" name="l05147"></a><span class="lineno"> 5147</span> </div>
+<div class="line"><a id="l05182" name="l05182"></a><span class="lineno"><a class="line" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"> 5182</a></span>GLFWAPI <a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> <a class="code hl_function" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>(<a class="code hl_typedef" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback);</div>
+<div class="line"><a id="l05183" name="l05183"></a><span class="lineno"> 5183</span> </div>
+<div class="line"><a id="l05216" name="l05216"></a><span class="lineno"><a class="line" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f"> 5216</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
+<div class="line"><a id="l05217" name="l05217"></a><span class="lineno"> 5217</span> </div>
+<div class="line"><a id="l05248" name="l05248"></a><span class="lineno"><a class="line" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728"> 5248</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>(<span class="keywordtype">int</span> jid);</div>
+<div class="line"><a id="l05249" name="l05249"></a><span class="lineno"> 5249</span> </div>
+<div class="line"><a id="l05286" name="l05286"></a><span class="lineno"><a class="line" href="group__input.html#gadccddea8bce6113fa459de379ddaf051"> 5286</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>(<span class="keywordtype">int</span> jid, <a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>* state);</div>
+<div class="line"><a id="l05287" name="l05287"></a><span class="lineno"> 5287</span> </div>
+<div class="line"><a id="l05311" name="l05311"></a><span class="lineno"><a class="line" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd"> 5311</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
+<div class="line"><a id="l05312" name="l05312"></a><span class="lineno"> 5312</span> </div>
+<div class="line"><a id="l05341" name="l05341"></a><span class="lineno"><a class="line" href="group__input.html#ga71a5b20808ea92193d65c21b82580355"> 5341</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l05342" name="l05342"></a><span class="lineno"> 5342</span> </div>
+<div class="line"><a id="l05371" name="l05371"></a><span class="lineno"><a class="line" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a"> 5371</a></span>GLFWAPI <span class="keywordtype">double</span> <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l05372" name="l05372"></a><span class="lineno"> 5372</span> </div>
+<div class="line"><a id="l05401" name="l05401"></a><span class="lineno"><a class="line" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0"> 5401</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>(<span class="keywordtype">double</span> time);</div>
+<div class="line"><a id="l05402" name="l05402"></a><span class="lineno"> 5402</span> </div>
+<div class="line"><a id="l05423" name="l05423"></a><span class="lineno"><a class="line" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa"> 5423</a></span>GLFWAPI uint64_t <a class="code hl_function" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l05424" name="l05424"></a><span class="lineno"> 5424</span> </div>
+<div class="line"><a id="l05443" name="l05443"></a><span class="lineno"><a class="line" href="group__input.html#ga3289ee876572f6e91f06df3a24824443"> 5443</a></span>GLFWAPI uint64_t <a class="code hl_function" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l05444" name="l05444"></a><span class="lineno"> 5444</span> </div>
+<div class="line"><a id="l05481" name="l05481"></a><span class="lineno"><a class="line" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157"> 5481</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l05482" name="l05482"></a><span class="lineno"> 5482</span> </div>
+<div class="line"><a id="l05502" name="l05502"></a><span class="lineno"><a class="line" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c"> 5502</a></span>GLFWAPI <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* <a class="code hl_function" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l05503" name="l05503"></a><span class="lineno"> 5503</span> </div>
+<div class="line"><a id="l05536" name="l05536"></a><span class="lineno"><a class="line" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14"> 5536</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l05537" name="l05537"></a><span class="lineno"> 5537</span> </div>
+<div class="line"><a id="l05582" name="l05582"></a><span class="lineno"><a class="line" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed"> 5582</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(<span class="keywordtype">int</span> interval);</div>
+<div class="line"><a id="l05583" name="l05583"></a><span class="lineno"> 5583</span> </div>
+<div class="line"><a id="l05620" name="l05620"></a><span class="lineno"><a class="line" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa"> 5620</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* extension);</div>
+<div class="line"><a id="l05621" name="l05621"></a><span class="lineno"> 5621</span> </div>
+<div class="line"><a id="l05662" name="l05662"></a><span class="lineno"><a class="line" href="group__context.html#ga35f1837e6f666781842483937612f163"> 5662</a></span>GLFWAPI <a class="code hl_typedef" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a> <a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* procname);</div>
+<div class="line"><a id="l05663" name="l05663"></a><span class="lineno"> 5663</span> </div>
+<div class="line"><a id="l05688" name="l05688"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b"> 5688</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l05689" name="l05689"></a><span class="lineno"> 5689</span> </div>
+<div class="line"><a id="l05732" name="l05732"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6"> 5732</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>** <a class="code hl_function" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>(uint32_t* count);</div>
+<div class="line"><a id="l05733" name="l05733"></a><span class="lineno"> 5733</span> </div>
+<div class="line"><a id="l05734" name="l05734"></a><span class="lineno"> 5734</span><span class="preprocessor">#if defined(VK_VERSION_1_0)</span></div>
+<div class="line"><a id="l05735" name="l05735"></a><span class="lineno"> 5735</span> </div>
+<div class="line"><a id="l05775" name="l05775"></a><span class="lineno"><a class="line" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9"> 5775</a></span>GLFWAPI <a class="code hl_typedef" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(VkInstance instance, <span class="keyword">const</span> <span class="keywordtype">char</span>* procname);</div>
+<div class="line"><a id="l05776" name="l05776"></a><span class="lineno"> 5776</span> </div>
+<div class="line"><a id="l05812" name="l05812"></a><span class="lineno"><a class="line" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92"> 5812</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily);</div>
+<div class="line"><a id="l05813" name="l05813"></a><span class="lineno"> 5813</span> </div>
+<div class="line"><a id="l05875" name="l05875"></a><span class="lineno"><a class="line" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965"> 5875</a></span>GLFWAPI VkResult <a class="code hl_function" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>(VkInstance instance, <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keyword">const</span> VkAllocationCallbacks* allocator, VkSurfaceKHR* surface);</div>
+<div class="line"><a id="l05876" name="l05876"></a><span class="lineno"> 5876</span> </div>
+<div class="line"><a id="l05877" name="l05877"></a><span class="lineno"> 5877</span><span class="preprocessor">#endif </span><span class="comment">/*VK_VERSION_1_0*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l05878" name="l05878"></a><span class="lineno"> 5878</span> </div>
+<div class="line"><a id="l05879" name="l05879"></a><span class="lineno"> 5879</span> </div>
+<div class="line"><a id="l05880" name="l05880"></a><span class="lineno"> 5880</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l05881" name="l05881"></a><span class="lineno"> 5881</span><span class="comment"> * Global definition cleanup</span></div>
+<div class="line"><a id="l05882" name="l05882"></a><span class="lineno"> 5882</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l05883" name="l05883"></a><span class="lineno"> 5883</span> </div>
+<div class="line"><a id="l05884" name="l05884"></a><span class="lineno"> 5884</span><span class="comment">/* ------------------- BEGIN SYSTEM/COMPILER SPECIFIC -------------------- */</span></div>
+<div class="line"><a id="l05885" name="l05885"></a><span class="lineno"> 5885</span> </div>
+<div class="line"><a id="l05886" name="l05886"></a><span class="lineno"> 5886</span><span class="preprocessor">#ifdef GLFW_WINGDIAPI_DEFINED</span></div>
+<div class="line"><a id="l05887" name="l05887"></a><span class="lineno"> 5887</span><span class="preprocessor"> #undef WINGDIAPI</span></div>
+<div class="line"><a id="l05888" name="l05888"></a><span class="lineno"> 5888</span><span class="preprocessor"> #undef GLFW_WINGDIAPI_DEFINED</span></div>
+<div class="line"><a id="l05889" name="l05889"></a><span class="lineno"> 5889</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l05890" name="l05890"></a><span class="lineno"> 5890</span> </div>
+<div class="line"><a id="l05891" name="l05891"></a><span class="lineno"> 5891</span><span class="preprocessor">#ifdef GLFW_CALLBACK_DEFINED</span></div>
+<div class="line"><a id="l05892" name="l05892"></a><span class="lineno"> 5892</span><span class="preprocessor"> #undef CALLBACK</span></div>
+<div class="line"><a id="l05893" name="l05893"></a><span class="lineno"> 5893</span><span class="preprocessor"> #undef GLFW_CALLBACK_DEFINED</span></div>
+<div class="line"><a id="l05894" name="l05894"></a><span class="lineno"> 5894</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l05895" name="l05895"></a><span class="lineno"> 5895</span> </div>
+<div class="line"><a id="l05896" name="l05896"></a><span class="lineno"> 5896</span><span class="comment">/* Some OpenGL related headers need GLAPIENTRY, but it is unconditionally</span></div>
+<div class="line"><a id="l05897" name="l05897"></a><span class="lineno"> 5897</span><span class="comment"> * defined by some gl.h variants (OpenBSD) so define it after if needed.</span></div>
+<div class="line"><a id="l05898" name="l05898"></a><span class="lineno"> 5898</span><span class="comment"> */</span></div>
+<div class="line"><a id="l05899" name="l05899"></a><span class="lineno"> 5899</span><span class="preprocessor">#ifndef GLAPIENTRY</span></div>
+<div class="line"><a id="l05900" name="l05900"></a><span class="lineno"><a class="line" href="glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206"> 5900</a></span><span class="preprocessor"> #define GLAPIENTRY APIENTRY</span></div>
+<div class="line"><a id="l05901" name="l05901"></a><span class="lineno"><a class="line" href="glfw3_8h.html#a3b526ac796be993406ea2f1642c25fc3"> 5901</a></span><span class="preprocessor"> #define GLFW_GLAPIENTRY_DEFINED</span></div>
+<div class="line"><a id="l05902" name="l05902"></a><span class="lineno"> 5902</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l05903" name="l05903"></a><span class="lineno"> 5903</span> </div>
+<div class="line"><a id="l05904" name="l05904"></a><span class="lineno"> 5904</span><span class="comment">/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */</span></div>
+<div class="line"><a id="l05905" name="l05905"></a><span class="lineno"> 5905</span> </div>
+<div class="line"><a id="l05906" name="l05906"></a><span class="lineno"> 5906</span> </div>
+<div class="line"><a id="l05907" name="l05907"></a><span class="lineno"> 5907</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l05908" name="l05908"></a><span class="lineno"> 5908</span>}</div>
+<div class="line"><a id="l05909" name="l05909"></a><span class="lineno"> 5909</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l05910" name="l05910"></a><span class="lineno"> 5910</span> </div>
+<div class="line"><a id="l05911" name="l05911"></a><span class="lineno"> 5911</span><span class="preprocessor">#endif </span><span class="comment">/* _glfw3_h_ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l05912" name="l05912"></a><span class="lineno"> 5912</span> </div>
+<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
+<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
+<div class="ttc" id="agroup__context_html_ga3d47c2d2fbe0be9c505d0e04e91a133c"><div class="ttname"><a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a></div><div class="ttdeci">void(* GLFWglproc)(void)</div><div class="ttdoc">Client API function pointer type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1147</div></div>
+<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
+<div class="ttc" id="agroup__context_html_ga87425065c011cef1ebd6aac75e059dfa"><div class="ttname"><a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></div><div class="ttdeci">int glfwExtensionSupported(const char *extension)</div><div class="ttdoc">Returns whether the specified extension is available.</div></div>
+<div class="ttc" id="agroup__context_html_gad94e80185397a6cf5fe2ab30567af71c"><div class="ttname"><a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></div><div class="ttdeci">GLFWwindow * glfwGetCurrentContext(void)</div><div class="ttdoc">Returns the window whose context is current on the calling thread.</div></div>
+<div class="ttc" id="agroup__init_html_ga026abd003c8e6501981ab1662062f1c0"><div class="ttname"><a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></div><div class="ttdeci">const char * glfwGetVersionString(void)</div><div class="ttdoc">Returns a string describing the compile-time configuration.</div></div>
+<div class="ttc" id="agroup__init_html_ga110fd1d3f0412822b4f1908c026f724a"><div class="ttname"><a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></div><div class="ttdeci">void glfwInitHint(int hint, int value)</div><div class="ttdoc">Sets the specified init hint to the desired value.</div></div>
+<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
+<div class="ttc" id="agroup__init_html_ga8184701785c096b3862a75cda1bf44a3"><div class="ttname"><a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a></div><div class="ttdeci">void(* GLFWerrorfun)(int error_code, const char *description)</div><div class="ttdoc">The function pointer type for error callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1221</div></div>
+<div class="ttc" id="agroup__init_html_ga944986b4ec0b928d488141f92982aa18"><div class="ttname"><a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></div><div class="ttdeci">int glfwGetError(const char **description)</div><div class="ttdoc">Returns and clears the last error for the calling thread.</div></div>
+<div class="ttc" id="agroup__init_html_ga9f8ffaacf3c269cc48eafbf8b9b71197"><div class="ttname"><a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></div><div class="ttdeci">void glfwGetVersion(int *major, int *minor, int *rev)</div><div class="ttdoc">Retrieves the version of the GLFW library.</div></div>
+<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
+<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga0184dcb59f6d85d735503dcaae809727"><div class="ttname"><a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a></div><div class="ttdeci">void(* GLFWmousebuttonfun)(GLFWwindow *window, int button, int action, int mods)</div><div class="ttdoc">The function pointer type for mouse button callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1437</div></div>
+<div class="ttc" id="agroup__input_html_ga01d37b6c40133676b9cea60ca1d7c0cc"><div class="ttname"><a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></div><div class="ttdeci">void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)</div><div class="ttdoc">Retrieves the position of the cursor relative to the content area of the window.</div></div>
+<div class="ttc" id="agroup__input_html_ga04b03af936d906ca123c8f4ee08b39e7"><div class="ttname"><a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a></div><div class="ttdeci">void glfwSetCursorPos(GLFWwindow *window, double xpos, double ypos)</div><div class="ttdoc">Sets the position of the cursor, relative to the content area of the window.</div></div>
+<div class="ttc" id="agroup__input_html_ga06e660841b3e79c54da4f54a932c5a2c"><div class="ttname"><a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickHats(int jid, int *count)</div><div class="ttdoc">Returns the state of all hats of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_ga09b2bd37d328e0b9456c7ec575cc26aa"><div class="ttname"><a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></div><div class="ttdeci">uint64_t glfwGetTimerValue(void)</div><div class="ttdoc">Returns the current value of the raw timer.</div></div>
+<div class="ttc" id="agroup__input_html_ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><div class="ttname"><a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a></div><div class="ttdeci">GLFWcharmodsfun glfwSetCharModsCallback(GLFWwindow *window, GLFWcharmodsfun callback)</div><div class="ttdoc">Sets the Unicode character with modifiers callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga18cefd7265d1fa04f3fd38a6746db5f3"><div class="ttname"><a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></div><div class="ttdeci">void * glfwGetJoystickUserPointer(int jid)</div><div class="ttdoc">Returns the user pointer of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_ga1ab90a55cf3f58639b893c0f4118cb6e"><div class="ttname"><a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a></div><div class="ttdeci">void(* GLFWcharfun)(GLFWwindow *window, unsigned int codepoint)</div><div class="ttdoc">The function pointer type for Unicode character callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1549</div></div>
+<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><div class="ttname"><a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></div><div class="ttdeci">GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)</div><div class="ttdoc">Sets the joystick configuration callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga3289ee876572f6e91f06df3a24824443"><div class="ttname"><a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></div><div class="ttdeci">uint64_t glfwGetTimerFrequency(void)</div><div class="ttdoc">Returns the frequency, in Hz, of the raw timer.</div></div>
+<div class="ttc" id="agroup__input_html_ga556f604f73af156c0db0e97c081373c3"><div class="ttname"><a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)</div><div class="ttdoc">Creates a custom cursor.</div></div>
+<div class="ttc" id="agroup__input_html_ga571e45a030ae4061f746ed56cb76aede"><div class="ttname"><a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></div><div class="ttdeci">GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)</div><div class="ttdoc">Sets the scroll callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga5bd751b27b90f865d2ea613533f0453c"><div class="ttname"><a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a></div><div class="ttdeci">void(* GLFWkeyfun)(GLFWwindow *window, int key, int scancode, int action, int mods)</div><div class="ttdoc">The function pointer type for keyboard key callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1528</div></div>
+<div class="ttc" id="agroup__input_html_ga5ffe34739d3dc97efe432ed2d81d9938"><div class="ttname"><a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickButtons(int jid, int *count)</div><div class="ttdoc">Returns the state of all buttons of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_ga61acfb1f28f751438dd221225c5e725d"><div class="ttname"><a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></div><div class="ttdeci">struct GLFWgamepadstate GLFWgamepadstate</div><div class="ttdoc">Gamepad input state.</div></div>
+<div class="ttc" id="agroup__input_html_ga6659411aec3c7fcef27780e2cb2d9600"><div class="ttname"><a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a></div><div class="ttdeci">const char * glfwGetJoystickGUID(int jid)</div><div class="ttdoc">Returns the SDL compatible GUID of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_ga67ddd1b7dcbbaff03e4a76c0ea67103a"><div class="ttname"><a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></div><div class="ttdeci">int glfwGetKeyScancode(int key)</div><div class="ttdoc">Returns the platform-specific scancode of the specified key.</div></div>
+<div class="ttc" id="agroup__input_html_ga6ab84420974d812bee700e45284a723c"><div class="ttname"><a href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></div><div class="ttdeci">GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)</div><div class="ttdoc">Sets the mouse button callback.</div></div>
+<div class="ttc" id="agroup__input_html_ga6b2f72d64d636b48a727b437cbb7489e"><div class="ttname"><a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></div><div class="ttdeci">void glfwSetJoystickUserPointer(int jid, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_ga71a5b20808ea92193d65c21b82580355"><div class="ttname"><a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></div><div class="ttdeci">const char * glfwGetClipboardString(GLFWwindow *window)</div><div class="ttdoc">Returns the contents of the clipboard as a string.</div></div>
+<div class="ttc" id="agroup__input_html_ga81b952cd1764274d0db7fb3c5a79ba6a"><div class="ttname"><a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></div><div class="ttdeci">void glfwDestroyCursor(GLFWcursor *cursor)</div><div class="ttdoc">Destroys a cursor.</div></div>
+<div class="ttc" id="agroup__input_html_ga89261ae18c75e863aaf2656ecdd238f4"><div class="ttname"><a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></div><div class="ttdeci">struct GLFWcursor GLFWcursor</div><div class="ttdoc">Opaque cursor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1197</div></div>
+<div class="ttc" id="agroup__input_html_ga8aea73a1a25cc6c0486a617019f56728"><div class="ttname"><a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></div><div class="ttdeci">const char * glfwGetGamepadName(int jid)</div><div class="ttdoc">Returns the human-readable gamepad name for the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_gaa21ad5986ae9a26077a40142efb56243"><div class="ttname"><a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a></div><div class="ttdeci">void(* GLFWjoystickfun)(int jid, int event)</div><div class="ttdoc">The function pointer type for joystick configuration callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1642</div></div>
+<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
+<div class="ttc" id="agroup__input_html_gaa92336e173da9c8834558b54ee80563b"><div class="ttname"><a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></div><div class="ttdeci">void glfwSetInputMode(GLFWwindow *window, int mode, int value)</div><div class="ttdoc">Sets an input option for the specified window.</div></div>
+<div class="ttc" id="agroup__input_html_gaa93dc4818ac9ab32532909d53a337cbe"><div class="ttname"><a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a></div><div class="ttdeci">void(* GLFWcursorenterfun)(GLFWwindow *window, int entered)</div><div class="ttdoc">The function pointer type for cursor enter/leave callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1481</div></div>
+<div class="ttc" id="agroup__input_html_gaaba73c3274062c18723b7f05862d94b2"><div class="ttname"><a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a></div><div class="ttdeci">void(* GLFWdropfun)(GLFWwindow *window, int path_count, const char *paths[])</div><div class="ttdoc">The function pointer type for path drop callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1600</div></div>
+<div class="ttc" id="agroup__input_html_gab25c4a220fd8f5717718dbc487828996"><div class="ttname"><a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></div><div class="ttdeci">GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)</div><div class="ttdoc">Sets the Unicode character callback.</div></div>
+<div class="ttc" id="agroup__input_html_gab773f0ee0a07cff77a210cea40bc1f6b"><div class="ttname"><a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></div><div class="ttdeci">GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)</div><div class="ttdoc">Sets the path drop callback.</div></div>
+<div class="ttc" id="agroup__input_html_gaba1f022c5eb07dfac421df34cdcd31dd"><div class="ttname"><a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></div><div class="ttdeci">void glfwSetClipboardString(GLFWwindow *window, const char *string)</div><div class="ttdoc">Sets the clipboard to the specified string.</div></div>
+<div class="ttc" id="agroup__input_html_gac1473feacb5996c01a7a5a33b5066704"><div class="ttname"><a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a></div><div class="ttdeci">int glfwGetMouseButton(GLFWwindow *window, int button)</div><div class="ttdoc">Returns the last reported state of a mouse button for the specified window.</div></div>
+<div class="ttc" id="agroup__input_html_gac1f879ab7435d54d4d79bb469fe225d7"><div class="ttname"><a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></div><div class="ttdeci">GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)</div><div class="ttdoc">Sets the cursor position callback.</div></div>
+<div class="ttc" id="agroup__input_html_gac3cf64f90b6219c05ac7b7822d5a4b8f"><div class="ttname"><a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a></div><div class="ttdeci">void(* GLFWcharmodsfun)(GLFWwindow *window, unsigned int codepoint, int mods)</div><div class="ttdoc">The function pointer type for Unicode character with modifiers callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1576</div></div>
+<div class="ttc" id="agroup__input_html_gac6a8e769e18e0bcfa9097793fc2c3978"><div class="ttname"><a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a></div><div class="ttdeci">const char * glfwGetJoystickName(int jid)</div><div class="ttdoc">Returns the name of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_gad0f676860f329d80f7e47e9f06a96f00"><div class="ttname"><a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></div><div class="ttdeci">int glfwJoystickIsGamepad(int jid)</div><div class="ttdoc">Returns whether the specified joystick has a gamepad mapping.</div></div>
+<div class="ttc" id="agroup__input_html_gad27f8ad0142c038a281466c0966817d8"><div class="ttname"><a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></div><div class="ttdeci">GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)</div><div class="ttdoc">Sets the cursor enter/leave callback.</div></div>
+<div class="ttc" id="agroup__input_html_gad3b4f38c8d5dae036bc8fa959e18343e"><div class="ttname"><a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a></div><div class="ttdeci">void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)</div><div class="ttdoc">Sets the cursor for the window.</div></div>
+<div class="ttc" id="agroup__input_html_gad6fae41b3ac2e4209aaa87b596c57f68"><div class="ttname"><a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a></div><div class="ttdeci">void(* GLFWcursorposfun)(GLFWwindow *window, double xpos, double ypos)</div><div class="ttdoc">The function pointer type for cursor position callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1460</div></div>
+<div class="ttc" id="agroup__input_html_gadccddea8bce6113fa459de379ddaf051"><div class="ttname"><a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></div><div class="ttdeci">int glfwGetGamepadState(int jid, GLFWgamepadstate *state)</div><div class="ttdoc">Retrieves the state of the specified joystick remapped as a gamepad.</div></div>
+<div class="ttc" id="agroup__input_html_gadd341da06bc8d418b4dc3a3518af9ad2"><div class="ttname"><a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a></div><div class="ttdeci">int glfwGetKey(GLFWwindow *window, int key)</div><div class="ttdoc">Returns the last reported state of a keyboard key for the specified window.</div></div>
+<div class="ttc" id="agroup__input_html_gae4ee0dbd0d256183e1ea4026d897e1c2"><div class="ttname"><a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></div><div class="ttdeci">int glfwRawMouseMotionSupported(void)</div><div class="ttdoc">Returns whether raw mouse motion is supported.</div></div>
+<div class="ttc" id="agroup__input_html_gaeaed62e69c3bd62b7ff8f7b19913ce4f"><div class="ttname"><a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a></div><div class="ttdeci">const char * glfwGetKeyName(int key, int scancode)</div><div class="ttdoc">Returns the layout-specific name of the specified printable key.</div></div>
+<div class="ttc" id="agroup__input_html_gaeb1c0191d3140a233a682987c61eb408"><div class="ttname"><a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a></div><div class="ttdeci">const float * glfwGetJoystickAxes(int jid, int *count)</div><div class="ttdoc">Returns the values of all axes of the specified joystick.</div></div>
+<div class="ttc" id="agroup__input_html_gaed0966cee139d815317f9ffcba64c9f1"><div class="ttname"><a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a></div><div class="ttdeci">int glfwJoystickPresent(int jid)</div><div class="ttdoc">Returns whether the specified joystick is present.</div></div>
+<div class="ttc" id="agroup__input_html_gaed5104612f2fa8e66aa6e846652ad00f"><div class="ttname"><a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></div><div class="ttdeci">int glfwUpdateGamepadMappings(const char *string)</div><div class="ttdoc">Adds the specified SDL_GameControllerDB gamepad mappings.</div></div>
+<div class="ttc" id="agroup__input_html_gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><div class="ttname"><a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateStandardCursor(int shape)</div><div class="ttdoc">Creates a cursor with a standard shape.</div></div>
+<div class="ttc" id="agroup__input_html_gaf59589ef6e8b8c8b5ad184b25afd4dc0"><div class="ttname"><a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></div><div class="ttdeci">void glfwSetTime(double time)</div><div class="ttdoc">Sets the GLFW time.</div></div>
+<div class="ttc" id="agroup__input_html_gaf5b859dbe19bdf434e42695ea45cc5f4"><div class="ttname"><a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a></div><div class="ttdeci">int glfwGetInputMode(GLFWwindow *window, int mode)</div><div class="ttdoc">Returns the value of an input option for the specified window.</div></div>
+<div class="ttc" id="agroup__input_html_gaf656112c33de3efdb227fa58f0134cf5"><div class="ttname"><a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a></div><div class="ttdeci">void(* GLFWscrollfun)(GLFWwindow *window, double xoffset, double yoffset)</div><div class="ttdoc">The function pointer type for scroll callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1502</div></div>
+<div class="ttc" id="agroup__monitor_html_ga102f54e7acc9149edbcf0997152df8c9"><div class="ttname"><a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a></div><div class="ttdeci">void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)</div><div class="ttdoc">Returns the position of the monitor's viewport on the virtual screen.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga1adbfbfb8cd58b23cfee82e574fbbdc5"><div class="ttname"><a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></div><div class="ttdeci">void * glfwGetMonitorUserPointer(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the user pointer of the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga583f0ffd0d29613d8cd172b996bbf0dd"><div class="ttname"><a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></div><div class="ttdeci">void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)</div><div class="ttdoc">Sets the current gamma ramp for the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga6ac582625c990220785ddd34efa3169a"><div class="ttname"><a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a></div><div class="ttdeci">void glfwSetGamma(GLFWmonitor *monitor, float gamma)</div><div class="ttdoc">Generates a gamma ramp and sets it for the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga702750e24313a686d3637297b6e85fda"><div class="ttname"><a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></div><div class="ttdeci">void glfwSetMonitorUserPointer(GLFWmonitor *monitor, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga70b1156d5d24e9928f145d6c864369d2"><div class="ttname"><a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></div><div class="ttdeci">GLFWmonitor ** glfwGetMonitors(int *count)</div><div class="ttdoc">Returns the currently connected monitors.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><div class="ttname"><a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></div><div class="ttdeci">void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)</div><div class="ttdoc">Retrieves the work area of the monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga76ba90debcf0062b5c4b73052b24f96f"><div class="ttname"><a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a></div><div class="ttdeci">const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current gamma ramp for the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga7af83e13489d90379588fb331b9e4b68"><div class="ttname"><a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a></div><div class="ttdeci">const char * glfwGetMonitorName(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the name of the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga7d8bffc6c55539286a6bd20d32a8d7ea"><div class="ttname"><a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a></div><div class="ttdeci">void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)</div><div class="ttdoc">Returns the physical size of the monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1173</div></div>
+<div class="ttc" id="agroup__monitor_html_ga902c2816ac9b34b757282daab59b2565"><div class="ttname"><a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></div><div class="ttdeci">struct GLFWvidmode GLFWvidmode</div><div class="ttdoc">Video mode type.</div></div>
+<div class="ttc" id="agroup__monitor_html_ga939cf093cb0af0498b7b54dc2e181404"><div class="ttname"><a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></div><div class="ttdeci">struct GLFWgammaramp GLFWgammaramp</div><div class="ttdoc">Gamma ramp.</div></div>
+<div class="ttc" id="agroup__monitor_html_gaabe16caca8dea952504dfdebdf4cd249"><div class="ttname"><a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a></div><div class="ttdeci">void(* GLFWmonitorfun)(GLFWmonitor *monitor, int event)</div><div class="ttdoc">The function pointer type for monitor configuration callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1621</div></div>
+<div class="ttc" id="agroup__monitor_html_gab39df645587c8518192aa746c2fb06c3"><div class="ttname"><a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></div><div class="ttdeci">GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)</div><div class="ttdoc">Sets the monitor configuration callback.</div></div>
+<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_gad2e24d2843cb7d6c26202cddd530fc1b"><div class="ttname"><a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)</div><div class="ttdoc">Returns the available video modes for the specified monitor.</div></div>
+<div class="ttc" id="agroup__monitor_html_gad3152e84465fa620b601265ebfcdb21b"><div class="ttname"><a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></div><div class="ttdeci">void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified monitor.</div></div>
+<div class="ttc" id="agroup__vulkan_html_ga1a24536bec3f80b08ead18e28e6ae965"><div class="ttname"><a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></div><div class="ttdeci">VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</div><div class="ttdoc">Creates a Vulkan surface for the specified window.</div></div>
+<div class="ttc" id="agroup__vulkan_html_ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><div class="ttname"><a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></div><div class="ttdeci">int glfwVulkanSupported(void)</div><div class="ttdoc">Returns whether the Vulkan loader and an ICD have been found.</div></div>
+<div class="ttc" id="agroup__vulkan_html_ga70c01918dc9d233a4fbe0681a43018af"><div class="ttname"><a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a></div><div class="ttdeci">void(* GLFWvkproc)(void)</div><div class="ttdoc">Vulkan API function pointer type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1161</div></div>
+<div class="ttc" id="agroup__vulkan_html_ga99ad342d82f4a3421e2864978cb6d1d6"><div class="ttname"><a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></div><div class="ttdeci">const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)</div><div class="ttdoc">Returns the Vulkan instance extensions required by GLFW.</div></div>
+<div class="ttc" id="agroup__vulkan_html_gadf228fac94c5fd8f12423ec9af9ff1e9"><div class="ttname"><a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></div><div class="ttdeci">GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)</div><div class="ttdoc">Returns the address of the specified Vulkan instance function.</div></div>
+<div class="ttc" id="agroup__vulkan_html_gaff3823355cdd7e2f3f9f4d9ea9518d92"><div class="ttname"><a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></div><div class="ttdeci">int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</div><div class="ttdoc">Returns whether the specified queue family can present images.</div></div>
+<div class="ttc" id="agroup__window_html_ga08bdfbba88934f9c4f92fd757979ac74"><div class="ttname"><a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></div><div class="ttdeci">GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)</div><div class="ttdoc">Sets the position callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga1a9fd382058c53101b21cf211898f1f1"><div class="ttname"><a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a></div><div class="ttdeci">void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)</div><div class="ttdoc">Retrieves the size of the frame of the window.</div></div>
+<div class="ttc" id="agroup__window_html_ga1abb6d690e8c88e0c8cd1751356dbca8"><div class="ttname"><a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></div><div class="ttdeci">void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">Sets the position of the content area of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga1bb559c0ebaad63c5c05ad2a066779c4"><div class="ttname"><a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a></div><div class="ttdeci">void glfwIconifyWindow(GLFWwindow *window)</div><div class="ttdoc">Iconifies the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga1c5c7eb889c33c7f4d10dd35b327654e"><div class="ttname"><a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></div><div class="ttdeci">GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)</div><div class="ttdoc">Sets the refresh callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga2f8d59323fc4692c1d54ba08c863a703"><div class="ttname"><a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></div><div class="ttdeci">void glfwRequestWindowAttention(GLFWwindow *window)</div><div class="ttdoc">Requests user attention to the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga3017196fdaec33ac3e095765176c2a90"><div class="ttname"><a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a></div><div class="ttdeci">void(* GLFWwindowmaximizefun)(GLFWwindow *window, int maximized)</div><div class="ttdoc">The function pointer type for window maximize callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1369</div></div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+<div class="ttc" id="agroup__window_html_ga35c658cccba236f26e7adee0e25f6a4f"><div class="ttname"><a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a></div><div class="ttdeci">void(* GLFWwindowiconifyfun)(GLFWwindow *window, int iconified)</div><div class="ttdoc">The function pointer type for window iconify callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1348</div></div>
+<div class="ttc" id="agroup__window_html_ga371911f12c74c504dd8d47d832d095cb"><div class="ttname"><a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></div><div class="ttdeci">void glfwSetWindowSize(GLFWwindow *window, int width, int height)</div><div class="ttdoc">Sets the size of the content area of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+<div class="ttc" id="agroup__window_html_ga3d2fc6026e690ab31a13f78bc9fd3651"><div class="ttname"><a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></div><div class="ttdeci">void glfwSetWindowUserPointer(GLFWwindow *window, void *pointer)</div><div class="ttdoc">Sets the user pointer of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga3f541387449d911274324ae7f17ec56b"><div class="ttname"><a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></div><div class="ttdeci">void glfwMaximizeWindow(GLFWwindow *window)</div><div class="ttdoc">Maximizes the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga431663a1427d2eb3a273bc398b6737b5"><div class="ttname"><a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a></div><div class="ttdeci">void(* GLFWwindowrefreshfun)(GLFWwindow *window)</div><div class="ttdoc">The function pointer type for window content refresh callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1306</div></div>
+<div class="ttc" id="agroup__window_html_ga49401f82a1ba5f15db5590728314d47c"><div class="ttname"><a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></div><div class="ttdeci">void glfwHideWindow(GLFWwindow *window)</div><div class="ttdoc">Hides the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga4d766499ac02c60f02221a9dfab87299"><div class="ttname"><a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)</div><div class="ttdoc">Returns the monitor that the window uses for full screen mode.</div></div>
+<div class="ttc" id="agroup__window_html_ga52527a5904b47d802b6b4bb519cdebc7"><div class="ttname"><a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></div><div class="ttdeci">void glfwRestoreWindow(GLFWwindow *window)</div><div class="ttdoc">Restores the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga554e37d781f0a997656c26b2c56c835e"><div class="ttname"><a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></div><div class="ttdeci">void glfwWaitEvents(void)</div><div class="ttdoc">Waits until events are queued and processes them.</div></div>
+<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga605a178db92f1a7f1a925563ef3ea2cf"><div class="ttname"><a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></div><div class="ttdeci">void glfwWaitEventsTimeout(double timeout)</div><div class="ttdoc">Waits with timeout until events are queued and processes them.</div></div>
+<div class="ttc" id="agroup__window_html_ga61be47917b72536a148300f46494fc66"><div class="ttname"><a href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></div><div class="ttdeci">void glfwShowWindow(GLFWwindow *window)</div><div class="ttdoc">Makes the specified window visible.</div></div>
+<div class="ttc" id="agroup__window_html_ga72ac8cb1ee2e312a878b55153d81b937"><div class="ttname"><a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></div><div class="ttdeci">void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)</div><div class="ttdoc">Sets the aspect ratio of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga73cb526c000876fd8ddf571570fdb634"><div class="ttname"><a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></div><div class="ttdeci">void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)</div><div class="ttdoc">Retrieves the position of the content area of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga77f288a2d04bb3c77c7d9615d08cf70e"><div class="ttname"><a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a></div><div class="ttdeci">void(* GLFWwindowcontentscalefun)(GLFWwindow *window, float xscale, float yscale)</div><div class="ttdoc">The function pointer type for window content scale callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1411</div></div>
+<div class="ttc" id="agroup__window_html_ga7cc0a09de172fa7250872046f8c4d2ca"><div class="ttname"><a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></div><div class="ttdeci">struct GLFWimage GLFWimage</div><div class="ttdoc">Image data.</div></div>
+<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+<div class="ttc" id="agroup__window_html_ga81c76c418af80a1cce7055bccb0ae0a7"><div class="ttname"><a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></div><div class="ttdeci">void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)</div><div class="ttdoc">Sets the mode, monitor, video mode and placement of a window.</div></div>
+<div class="ttc" id="agroup__window_html_ga873780357abd3f3a081d71a40aae45a1"><div class="ttname"><a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a></div><div class="ttdeci">void glfwFocusWindow(GLFWwindow *window)</div><div class="ttdoc">Brings the specified window to front and sets input focus.</div></div>
+<div class="ttc" id="agroup__window_html_ga8cb2782861c9d997bcf2dea97f363e5f"><div class="ttname"><a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></div><div class="ttdeci">void glfwWindowHintString(int hint, const char *value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+<div class="ttc" id="agroup__window_html_gaa77c4898dfb83344a6b4f76aa16b9a4a"><div class="ttname"><a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></div><div class="ttdeci">void glfwDefaultWindowHints(void)</div><div class="ttdoc">Resets all window hints to their default values.</div></div>
+<div class="ttc" id="agroup__window_html_gab3fb7c3366577daef18c0023e2a8591f"><div class="ttname"><a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></div><div class="ttdeci">GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)</div><div class="ttdoc">Sets the framebuffer resize callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><div class="ttname"><a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></div><div class="ttdeci">void glfwPostEmptyEvent(void)</div><div class="ttdoc">Posts an empty event to the event queue.</div></div>
+<div class="ttc" id="agroup__window_html_gabc58c47e9d93f6eb1862d615c3680f46"><div class="ttname"><a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a></div><div class="ttdeci">void(* GLFWwindowfocusfun)(GLFWwindow *window, int focused)</div><div class="ttdoc">The function pointer type for window focus callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1327</div></div>
+<div class="ttc" id="agroup__window_html_gabe287973a21a8f927cde4db06b8dcbe9"><div class="ttname"><a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a></div><div class="ttdeci">void(* GLFWwindowposfun)(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">The function pointer type for window position callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1244</div></div>
+<div class="ttc" id="agroup__window_html_gabf859b936d80961b7d39013a9694cc3e"><div class="ttname"><a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a></div><div class="ttdeci">void(* GLFWwindowclosefun)(GLFWwindow *window)</div><div class="ttdoc">The function pointer type for window close callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1286</div></div>
+<div class="ttc" id="agroup__window_html_gac2d83c4a10f071baf841f6730528e66c"><div class="ttname"><a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></div><div class="ttdeci">GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)</div><div class="ttdoc">Sets the focus callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gac314fa6cec7d2d307be9963e2709cc90"><div class="ttname"><a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></div><div class="ttdeci">void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)</div><div class="ttdoc">Sets the size limits of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gac31caeb3d1088831b13d2c8a156802e9"><div class="ttname"><a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></div><div class="ttdeci">void glfwSetWindowOpacity(GLFWwindow *window, float opacity)</div><div class="ttdoc">Sets the opacity of the whole window.</div></div>
+<div class="ttc" id="agroup__window_html_gac793e9efd255567b5fb8b445052cfd3e"><div class="ttname"><a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></div><div class="ttdeci">GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)</div><div class="ttdoc">Sets the iconify callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gacbe64c339fbd94885e62145563b6dc93"><div class="ttname"><a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></div><div class="ttdeci">GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)</div><div class="ttdoc">Sets the maximize callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
+<div class="ttc" id="agroup__window_html_gace2afda29b4116ec012e410a6819033e"><div class="ttname"><a href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></div><div class="ttdeci">void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)</div><div class="ttdoc">Sets an attribute of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gad09f0bd7a6307c4533b7061828480a84"><div class="ttname"><a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></div><div class="ttdeci">float glfwGetWindowOpacity(GLFWwindow *window)</div><div class="ttdoc">Returns the opacity of the whole window.</div></div>
+<div class="ttc" id="agroup__window_html_gad91b8b047a0c4c6033c38853864c34f8"><div class="ttname"><a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></div><div class="ttdeci">GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)</div><div class="ttdoc">Sets the size callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gada646d775a7776a95ac000cfc1885331"><div class="ttname"><a href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></div><div class="ttdeci">GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)</div><div class="ttdoc">Sets the close callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gadd7ccd39fe7a7d1f0904666ae5932dc5"><div class="ttname"><a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a></div><div class="ttdeci">void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)</div><div class="ttdoc">Sets the icon for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gae18026e294dde685ed2e5f759533144d"><div class="ttname"><a href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a></div><div class="ttdeci">void(* GLFWframebuffersizefun)(GLFWwindow *window, int width, int height)</div><div class="ttdoc">The function pointer type for framebuffer size callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1390</div></div>
+<div class="ttc" id="agroup__window_html_gae77a4add0d2023ca21ff1443ced01653"><div class="ttname"><a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></div><div class="ttdeci">void * glfwGetWindowUserPointer(GLFWwindow *window)</div><div class="ttdoc">Returns the user pointer of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gaec0282944bb810f6f3163ec02da90350"><div class="ttname"><a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a></div><div class="ttdeci">void(* GLFWwindowsizefun)(GLFWwindow *window, int width, int height)</div><div class="ttdoc">The function pointer type for window size callbacks.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1266</div></div>
+<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gaf2832ebb5aa6c252a2d261de002c92d6"><div class="ttname"><a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></div><div class="ttdeci">GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)</div><div class="ttdoc">Sets the window content scale callback for the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gaf5d31de9c19c4f994facea64d2b3106c"><div class="ttname"><a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></div><div class="ttdeci">void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified window.</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html"><div class="ttname"><a href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div><div class="ttdoc">Gamepad input state.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1745</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html_a27e9896b51c65df15fba2c7139bfdb9a"><div class="ttname"><a href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">GLFWgamepadstate::buttons</a></div><div class="ttdeci">unsigned char buttons[15]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1749</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html_a8b2c8939b1d31458de5359998375c189"><div class="ttname"><a href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">GLFWgamepadstate::axes</a></div><div class="ttdeci">float axes[6]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1753</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html"><div class="ttname"><a href="structGLFWgammaramp.html">GLFWgammaramp</a></div><div class="ttdoc">Gamma ramp.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1692</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_a2cce5d968734b685623eef913e635138"><div class="ttname"><a href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">GLFWgammaramp::red</a></div><div class="ttdeci">unsigned short * red</div><div class="ttdef"><b>Definition:</b> glfw3.h:1695</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_acf0c836d0efe29c392fe8d1a1042744b"><div class="ttname"><a href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">GLFWgammaramp::blue</a></div><div class="ttdeci">unsigned short * blue</div><div class="ttdef"><b>Definition:</b> glfw3.h:1701</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_ad620e1cffbff9a32c51bca46301b59a5"><div class="ttname"><a href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">GLFWgammaramp::size</a></div><div class="ttdeci">unsigned int size</div><div class="ttdef"><b>Definition:</b> glfw3.h:1704</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_affccc6f5df47820b6562d709da3a5a3a"><div class="ttname"><a href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">GLFWgammaramp::green</a></div><div class="ttdeci">unsigned short * green</div><div class="ttdef"><b>Definition:</b> glfw3.h:1698</div></div>
+<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1721</div></div>
+<div class="ttc" id="astructGLFWimage_html_a0b7d95368f0c80d5e5c9875057c7dbec"><div class="ttname"><a href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">GLFWimage::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1727</div></div>
+<div class="ttc" id="astructGLFWimage_html_a0c532a5c2bb715555279b7817daba0fb"><div class="ttname"><a href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">GLFWimage::pixels</a></div><div class="ttdeci">unsigned char * pixels</div><div class="ttdef"><b>Definition:</b> glfw3.h:1730</div></div>
+<div class="ttc" id="astructGLFWimage_html_af6a71cc999fe6d3aea31dd7e9687d835"><div class="ttname"><a href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">GLFWimage::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1724</div></div>
+<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1658</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a292fdd281f3485fb3ff102a5bda43faa"><div class="ttname"><a href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode::greenBits</a></div><div class="ttdeci">int greenBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1670</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a6066c4ecd251098700062d3b735dba1b"><div class="ttname"><a href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode::redBits</a></div><div class="ttdeci">int redBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1667</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a698dcb200562051a7249cb6ae154c71d"><div class="ttname"><a href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1661</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a791bdd6c7697b09f7e9c97054bf05649"><div class="ttname"><a href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode::refreshRate</a></div><div class="ttdeci">int refreshRate</div><div class="ttdef"><b>Definition:</b> glfw3.h:1676</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_ac65942a5f6981695517437a9d571d03c"><div class="ttname"><a href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1664</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_af310977f58d2e3b188175b6e3d314047"><div class="ttname"><a href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode::blueBits</a></div><div class="ttdeci">int blueBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1673</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/glfw3native_8h.html b/libs/glfw-3.3.8/docs/html/glfw3native_8h.html
new file mode 100644
index 0000000..b990f15
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/glfw3native_8h.html
@@ -0,0 +1,160 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: glfw3native.h File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li><li class="navelem"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">glfw3native.h File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<div class="textblock"><p >This is the header file of the native access functions. See <a class="el" href="group__native.html">Native access</a> for more information. </p>
+</div>
+<p><a href="glfw3native_8h_source.html">Go to the source code of this file.</a></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the adapter device name of the specified monitor. <a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">More...</a><br /></td></tr>
+<tr class="separator:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the display device name of the specified monitor. <a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">More...</a><br /></td></tr>
+<tr class="separator:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memItemLeft" align="right" valign="top">HWND&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gafe5079aa79038b0079fc09d5f0a8e667"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HWND</code> of the specified window. <a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">More...</a><br /></td></tr>
+<tr class="separator:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc4010d91d9cc1134d040eeb1202a143"><td class="memItemLeft" align="right" valign="top">HGLRC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gadc4010d91d9cc1134d040eeb1202a143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HGLRC</code> of the specified window. <a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">More...</a><br /></td></tr>
+<tr class="separator:gadc4010d91d9cc1134d040eeb1202a143"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memItemLeft" align="right" valign="top">CGDirectDisplayID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gaf22f429aec4b1aab316142d66d9be3e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>CGDirectDisplayID</code> of the specified monitor. <a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">More...</a><br /></td></tr>
+<tr class="separator:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gac3ed9d495d0c2bb9652de5a50c648715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSWindow</code> of the specified window. <a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">More...</a><br /></td></tr>
+<tr class="separator:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga559e002e3cd63c979881770cd4dc63bc"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga559e002e3cd63c979881770cd4dc63bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSOpenGLContext</code> of the specified window. <a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">More...</a><br /></td></tr>
+<tr class="separator:ga559e002e3cd63c979881770cd4dc63bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6e7822385cc8a1cc3b18f60352830189"><td class="memItemLeft" align="right" valign="top">Display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a> (void)</td></tr>
+<tr class="memdesc:ga6e7822385cc8a1cc3b18f60352830189"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Display</code> used by GLFW. <a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">More...</a><br /></td></tr>
+<tr class="separator:ga6e7822385cc8a1cc3b18f60352830189"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga088fbfa80f50569402b41be71ad66e40"><td class="memItemLeft" align="right" valign="top">RRCrtc&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga088fbfa80f50569402b41be71ad66e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RRCrtc</code> of the specified monitor. <a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">More...</a><br /></td></tr>
+<tr class="separator:ga088fbfa80f50569402b41be71ad66e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memItemLeft" align="right" valign="top">RROutput&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RROutput</code> of the specified monitor. <a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">More...</a><br /></td></tr>
+<tr class="separator:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90ca676322740842db446999a1b1f21d"><td class="memItemLeft" align="right" valign="top">Window&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga90ca676322740842db446999a1b1f21d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Window</code> of the specified window. <a href="group__native.html#ga90ca676322740842db446999a1b1f21d">More...</a><br /></td></tr>
+<tr class="separator:ga90ca676322740842db446999a1b1f21d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga55f879ab02d93367f966186b6f0133f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a> (const char *string)</td></tr>
+<tr class="memdesc:ga55f879ab02d93367f966186b6f0133f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current primary selection to the specified string. <a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">More...</a><br /></td></tr>
+<tr class="separator:ga55f879ab02d93367f966186b6f0133f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae084ef64dc0db140b455b1427256d3f7"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> (void)</td></tr>
+<tr class="memdesc:gae084ef64dc0db140b455b1427256d3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the current primary selection as a string. <a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">More...</a><br /></td></tr>
+<tr class="separator:gae084ef64dc0db140b455b1427256d3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga62d884114b0abfcdc2930e89f20867e2"><td class="memItemLeft" align="right" valign="top">GLXContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga62d884114b0abfcdc2930e89f20867e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXContext</code> of the specified window. <a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">More...</a><br /></td></tr>
+<tr class="separator:ga62d884114b0abfcdc2930e89f20867e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memItemLeft" align="right" valign="top">GLXWindow&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1ed27b8766e859a21381e8f8ce18d049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXWindow</code> of the specified window. <a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">More...</a><br /></td></tr>
+<tr class="separator:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacbe11f93ce20621de82989bbba94e62a"><td class="memItemLeft" align="right" valign="top">struct wl_display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a> (void)</td></tr>
+<tr class="memdesc:gacbe11f93ce20621de82989bbba94e62a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_display*</code> used by GLFW. <a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">More...</a><br /></td></tr>
+<tr class="separator:gacbe11f93ce20621de82989bbba94e62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memItemLeft" align="right" valign="top">struct wl_output *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_output*</code> of the specified monitor. <a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">More...</a><br /></td></tr>
+<tr class="separator:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5c597f2841229d9626f0811cca41ceb3"><td class="memItemLeft" align="right" valign="top">struct wl_surface *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga5c597f2841229d9626f0811cca41ceb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the main <code>struct wl_surface*</code> of the specified window. <a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">More...</a><br /></td></tr>
+<tr class="separator:ga5c597f2841229d9626f0811cca41ceb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1cd8d973f47aacb5532d368147cc3138"><td class="memItemLeft" align="right" valign="top">EGLDisplay&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a> (void)</td></tr>
+<tr class="memdesc:ga1cd8d973f47aacb5532d368147cc3138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLDisplay</code> used by GLFW. <a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">More...</a><br /></td></tr>
+<tr class="separator:ga1cd8d973f47aacb5532d368147cc3138"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memItemLeft" align="right" valign="top">EGLContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga671c5072becd085f4ab5771a9c8efcf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLContext</code> of the specified window. <a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">More...</a><br /></td></tr>
+<tr class="separator:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2199b36117a6a695fec8441d8052eee6"><td class="memItemLeft" align="right" valign="top">EGLSurface&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga2199b36117a6a695fec8441d8052eee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLSurface</code> of the specified window. <a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">More...</a><br /></td></tr>
+<tr class="separator:ga2199b36117a6a695fec8441d8052eee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *format, void **buffer)</td></tr>
+<tr class="memdesc:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the color buffer associated with the specified window. <a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">More...</a><br /></td></tr>
+<tr class="separator:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *bytesPerValue, void **buffer)</td></tr>
+<tr class="memdesc:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the depth buffer associated with the specified window. <a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">More...</a><br /></td></tr>
+<tr class="separator:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e47700080094eb569cb053afaa88773"><td class="memItemLeft" align="right" valign="top">OSMesaContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga9e47700080094eb569cb053afaa88773"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>OSMesaContext</code> of the specified window. <a href="group__native.html#ga9e47700080094eb569cb053afaa88773">More...</a><br /></td></tr>
+<tr class="separator:ga9e47700080094eb569cb053afaa88773"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/glfw3native_8h_source.html b/libs/glfw-3.3.8/docs/html/glfw3native_8h_source.html
new file mode 100644
index 0000000..31a0c40
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/glfw3native_8h_source.html
@@ -0,0 +1,285 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: glfw3native.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_4351554941a2744586042c1cf3cf139a.html">glfw-3.3.8</a></li><li class="navelem"><a class="el" href="dir_f6ba4c3dca55a8d4e7d63c8235e0ad43.html">include</a></li><li class="navelem"><a class="el" href="dir_1dfd43b3952c5bc1ba15d15b12afff7b.html">GLFW</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">glfw3native.h</div></div>
+</div><!--header-->
+<div class="contents">
+<a href="glfw3native_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="comment"> * GLFW 3.3 - www.glfw.org</span></div>
+<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span><span class="comment"> * A library for OpenGL, window and input</span></div>
+<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="comment"> *------------------------------------------------------------------------</span></div>
+<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="comment"> * Copyright (c) 2002-2006 Marcus Geelnard</span></div>
+<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="comment"> * Copyright (c) 2006-2018 Camilla Löwy &lt;elmindreda@glfw.org&gt;</span></div>
+<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="comment"> * This software is provided &#39;as-is&#39;, without any express or implied</span></div>
+<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="comment"> * warranty. In no event will the authors be held liable for any damages</span></div>
+<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="comment"> * arising from the use of this software.</span></div>
+<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="comment"> * Permission is granted to anyone to use this software for any purpose,</span></div>
+<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="comment"> * including commercial applications, and to alter it and redistribute it</span></div>
+<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="comment"> * freely, subject to the following restrictions:</span></div>
+<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="comment"> * 1. The origin of this software must not be misrepresented; you must not</span></div>
+<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="comment"> * claim that you wrote the original software. If you use this software</span></div>
+<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="comment"> * in a product, an acknowledgment in the product documentation would</span></div>
+<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span><span class="comment"> * be appreciated but is not required.</span></div>
+<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span><span class="comment"> * 2. Altered source versions must be plainly marked as such, and must not</span></div>
+<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span><span class="comment"> * be misrepresented as being the original software.</span></div>
+<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span><span class="comment"> * 3. This notice may not be removed or altered from any source</span></div>
+<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span><span class="comment"> * distribution.</span></div>
+<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span><span class="comment"> *</span></div>
+<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> </div>
+<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span><span class="preprocessor">#ifndef _glfw3_native_h_</span></div>
+<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span><span class="preprocessor">#define _glfw3_native_h_</span></div>
+<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
+<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span><span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
+<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> </div>
+<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span><span class="comment"> * Doxygen documentation</span></div>
+<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> </div>
+<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span><span class="comment"> * System headers and types</span></div>
+<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> </div>
+<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span><span class="preprocessor">#if !defined(GLFW_NATIVE_INCLUDE_NONE)</span></div>
+<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
+<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_WIN32) || defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
+<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> <span class="comment">/* This is a workaround for the fact that glfw3.h needs to export APIENTRY (for</span></div>
+<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span><span class="comment"> * example to allow applications to correctly declare a GL_KHR_debug callback)</span></div>
+<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="comment"> * but windows.h assumes no one will define APIENTRY before it does</span></div>
+<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span><span class="preprocessor"> #if defined(GLFW_APIENTRY_DEFINED)</span></div>
+<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span><span class="preprocessor"> #undef APIENTRY</span></div>
+<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span><span class="preprocessor"> #undef GLFW_APIENTRY_DEFINED</span></div>
+<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="preprocessor"> #include &lt;windows.h&gt;</span></div>
+<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span><span class="preprocessor"> #elif defined(GLFW_EXPOSE_NATIVE_COCOA) || defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
+<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span><span class="preprocessor"> #if defined(__OBJC__)</span></div>
+<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span><span class="preprocessor"> #import &lt;Cocoa/Cocoa.h&gt;</span></div>
+<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span><span class="preprocessor"> #else</span></div>
+<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span><span class="preprocessor"> #include &lt;ApplicationServices/ApplicationServices.h&gt;</span></div>
+<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span><span class="preprocessor"> #include &lt;objc/objc.h&gt;</span></div>
+<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span><span class="preprocessor"> #elif defined(GLFW_EXPOSE_NATIVE_X11) || defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
+<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span><span class="preprocessor"> #include &lt;X11/Xlib.h&gt;</span></div>
+<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span><span class="preprocessor"> #include &lt;X11/extensions/Xrandr.h&gt;</span></div>
+<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span><span class="preprocessor"> #elif defined(GLFW_EXPOSE_NATIVE_WAYLAND)</span></div>
+<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span><span class="preprocessor"> #include &lt;wayland-client.h&gt;</span></div>
+<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
+<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
+<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">/* WGL is declared by windows.h */</span></div>
+<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
+<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> <span class="comment">/* NSGL is declared by Cocoa.h */</span></div>
+<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
+<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="comment">/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by</span></div>
+<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span><span class="comment"> * default it also acts as an OpenGL header</span></div>
+<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="comment"> * However, glx.h will include gl.h, which will define it unconditionally</span></div>
+<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="preprocessor"> #if defined(GLFW_GLAPIENTRY_DEFINED)</span></div>
+<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="preprocessor"> #undef GLAPIENTRY</span></div>
+<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span><span class="preprocessor"> #undef GLFW_GLAPIENTRY_DEFINED</span></div>
+<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="preprocessor"> #include &lt;GL/glx.h&gt;</span></div>
+<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_EGL)</span></div>
+<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span><span class="preprocessor"> #include &lt;EGL/egl.h&gt;</span></div>
+<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="preprocessor"> #if defined(GLFW_EXPOSE_NATIVE_OSMESA)</span></div>
+<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> <span class="comment">/* This is a workaround for the fact that glfw3.h defines GLAPIENTRY because by</span></div>
+<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * default it also acts as an OpenGL header</span></div>
+<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span><span class="comment"> * However, osmesa.h will include gl.h, which will define it unconditionally</span></div>
+<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> */</span></div>
+<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="preprocessor"> #if defined(GLFW_GLAPIENTRY_DEFINED)</span></div>
+<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="preprocessor"> #undef GLAPIENTRY</span></div>
+<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="preprocessor"> #undef GLFW_GLAPIENTRY_DEFINED</span></div>
+<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="preprocessor"> #include &lt;GL/osmesa.h&gt;</span></div>
+<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="preprocessor"> #endif</span></div>
+<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> </div>
+<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="preprocessor">#endif </span><span class="comment">/*GLFW_NATIVE_INCLUDE_NONE*/</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
+<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
+<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment">/*************************************************************************</span></div>
+<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> * Functions</span></div>
+<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span><span class="comment"> *************************************************************************/</span></div>
+<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> </div>
+<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WIN32)</span></div>
+<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"><a class="line" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41"> 175</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
+<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766"> 192</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
+<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667"> 216</a></span>GLFWAPI HWND <a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
+<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WGL)</span></div>
+<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"><a class="line" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143"> 243</a></span>GLFWAPI HGLRC <a class="code hl_function" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
+<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_COCOA)</span></div>
+<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"><a class="line" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6"> 261</a></span>GLFWAPI CGDirectDisplayID <a class="code hl_function" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
+<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"><a class="line" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715"> 277</a></span>GLFWAPI <span class="keywordtype">id</span> <a class="code hl_function" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
+<div class="line"><a id="l00280" name="l00280"></a><span class="lineno"> 280</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_NSGL)</span></div>
+<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"><a class="line" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc"> 296</a></span>GLFWAPI <span class="keywordtype">id</span> <a class="code hl_function" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00298" name="l00298"></a><span class="lineno"> 298</span> </div>
+<div class="line"><a id="l00299" name="l00299"></a><span class="lineno"> 299</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_X11)</span></div>
+<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189"> 314</a></span>GLFWAPI Display* <a class="code hl_function" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
+<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40"> 330</a></span>GLFWAPI RRCrtc <a class="code hl_function" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
+<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"><a class="line" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c"> 346</a></span>GLFWAPI RROutput <a class="code hl_function" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00347" name="l00347"></a><span class="lineno"> 347</span> </div>
+<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="group__native.html#ga90ca676322740842db446999a1b1f21d"> 362</a></span>GLFWAPI Window <a class="code hl_function" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
+<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"><a class="line" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7"> 384</a></span>GLFWAPI <span class="keywordtype">void</span> <a class="code hl_function" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* <span class="keywordtype">string</span>);</div>
+<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
+<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"><a class="line" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7"> 412</a></span>GLFWAPI <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code hl_function" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> </div>
+<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_GLX)</span></div>
+<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"><a class="line" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2"> 431</a></span>GLFWAPI GLXContext <a class="code hl_function" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> </div>
+<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"><a class="line" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049"> 448</a></span>GLFWAPI GLXWindow <a class="code hl_function" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> </div>
+<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_WAYLAND)</span></div>
+<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"><a class="line" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a"> 466</a></span>GLFWAPI <span class="keyword">struct </span>wl_display* <a class="code hl_function" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span> </div>
+<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"><a class="line" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16"> 482</a></span>GLFWAPI <span class="keyword">struct </span>wl_output* <a class="code hl_function" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a>(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor);</div>
+<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
+<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"><a class="line" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3"> 498</a></span>GLFWAPI <span class="keyword">struct </span>wl_surface* <a class="code hl_function" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
+<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_EGL)</span></div>
+<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"><a class="line" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138"> 519</a></span>GLFWAPI EGLDisplay <a class="code hl_function" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> </div>
+<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"><a class="line" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1"> 536</a></span>GLFWAPI EGLContext <a class="code hl_function" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> </div>
+<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"><a class="line" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6"> 553</a></span>GLFWAPI EGLSurface <a class="code hl_function" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> </div>
+<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span><span class="preprocessor">#if defined(GLFW_EXPOSE_NATIVE_OSMESA)</span></div>
+<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"><a class="line" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132"> 579</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height, <span class="keywordtype">int</span>* format, <span class="keywordtype">void</span>** buffer);</div>
+<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> </div>
+<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"><a class="line" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53"> 603</a></span>GLFWAPI <span class="keywordtype">int</span> <a class="code hl_function" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span>* width, <span class="keywordtype">int</span>* height, <span class="keywordtype">int</span>* bytesPerValue, <span class="keywordtype">void</span>** buffer);</div>
+<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> </div>
+<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"><a class="line" href="group__native.html#ga9e47700080094eb569cb053afaa88773"> 620</a></span>GLFWAPI OSMesaContext <a class="code hl_function" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a>(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> </div>
+<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span>}</div>
+<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="preprocessor">#endif</span></div>
+<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> </div>
+<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span><span class="preprocessor">#endif </span><span class="comment">/* _glfw3_native_h_ */</span><span class="preprocessor"></span></div>
+<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
+<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1173</div></div>
+<div class="ttc" id="agroup__native_html_ga088fbfa80f50569402b41be71ad66e40"><div class="ttname"><a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a></div><div class="ttdeci">RRCrtc glfwGetX11Adapter(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the RRCrtc of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_ga1cd8d973f47aacb5532d368147cc3138"><div class="ttname"><a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a></div><div class="ttdeci">EGLDisplay glfwGetEGLDisplay(void)</div><div class="ttdoc">Returns the EGLDisplay used by GLFW.</div></div>
+<div class="ttc" id="agroup__native_html_ga1ed27b8766e859a21381e8f8ce18d049"><div class="ttname"><a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a></div><div class="ttdeci">GLXWindow glfwGetGLXWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the GLXWindow of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga2199b36117a6a695fec8441d8052eee6"><div class="ttname"><a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a></div><div class="ttdeci">EGLSurface glfwGetEGLSurface(GLFWwindow *window)</div><div class="ttdoc">Returns the EGLSurface of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga3b36e3e3dcf308b776427b6bd73cc132"><div class="ttname"><a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a></div><div class="ttdeci">int glfwGetOSMesaColorBuffer(GLFWwindow *window, int *width, int *height, int *format, void **buffer)</div><div class="ttdoc">Retrieves the color buffer associated with the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga4f16066bd4c59e2f99418adfcb43dd16"><div class="ttname"><a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a></div><div class="ttdeci">struct wl_output * glfwGetWaylandMonitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the struct wl_output* of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_ga559e002e3cd63c979881770cd4dc63bc"><div class="ttname"><a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a></div><div class="ttdeci">id glfwGetNSGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the NSOpenGLContext of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga55f879ab02d93367f966186b6f0133f7"><div class="ttname"><a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a></div><div class="ttdeci">void glfwSetX11SelectionString(const char *string)</div><div class="ttdoc">Sets the current primary selection to the specified string.</div></div>
+<div class="ttc" id="agroup__native_html_ga5c597f2841229d9626f0811cca41ceb3"><div class="ttname"><a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a></div><div class="ttdeci">struct wl_surface * glfwGetWaylandWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the main struct wl_surface* of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga62d884114b0abfcdc2930e89f20867e2"><div class="ttname"><a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a></div><div class="ttdeci">GLXContext glfwGetGLXContext(GLFWwindow *window)</div><div class="ttdoc">Returns the GLXContext of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga671c5072becd085f4ab5771a9c8efcf1"><div class="ttname"><a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a></div><div class="ttdeci">EGLContext glfwGetEGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the EGLContext of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga6b64039ffc88a7a2f57f0956c0c75d53"><div class="ttname"><a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a></div><div class="ttdeci">int glfwGetOSMesaDepthBuffer(GLFWwindow *window, int *width, int *height, int *bytesPerValue, void **buffer)</div><div class="ttdoc">Retrieves the depth buffer associated with the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga6e7822385cc8a1cc3b18f60352830189"><div class="ttname"><a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a></div><div class="ttdeci">Display * glfwGetX11Display(void)</div><div class="ttdoc">Returns the Display used by GLFW.</div></div>
+<div class="ttc" id="agroup__native_html_ga90ca676322740842db446999a1b1f21d"><div class="ttname"><a href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a></div><div class="ttdeci">Window glfwGetX11Window(GLFWwindow *window)</div><div class="ttdoc">Returns the Window of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_ga9e47700080094eb569cb053afaa88773"><div class="ttname"><a href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a></div><div class="ttdeci">OSMesaContext glfwGetOSMesaContext(GLFWwindow *window)</div><div class="ttdoc">Returns the OSMesaContext of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_gab2f8cc043905e9fa9b12bfdbbcfe874c"><div class="ttname"><a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a></div><div class="ttdeci">RROutput glfwGetX11Monitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the RROutput of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_gac3ed9d495d0c2bb9652de5a50c648715"><div class="ttname"><a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a></div><div class="ttdeci">id glfwGetCocoaWindow(GLFWwindow *window)</div><div class="ttdoc">Returns the NSWindow of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_gac845f7dbe4c1d7fdd682a3c6fdae6766"><div class="ttname"><a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a></div><div class="ttdeci">const char * glfwGetWin32Monitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the display device name of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_gacbe11f93ce20621de82989bbba94e62a"><div class="ttname"><a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a></div><div class="ttdeci">struct wl_display * glfwGetWaylandDisplay(void)</div><div class="ttdoc">Returns the struct wl_display* used by GLFW.</div></div>
+<div class="ttc" id="agroup__native_html_gad4d3e9242536c0ba6be88a98f4c73a41"><div class="ttname"><a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a></div><div class="ttdeci">const char * glfwGetWin32Adapter(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the adapter device name of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_gadc4010d91d9cc1134d040eeb1202a143"><div class="ttname"><a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a></div><div class="ttdeci">HGLRC glfwGetWGLContext(GLFWwindow *window)</div><div class="ttdoc">Returns the HGLRC of the specified window.</div></div>
+<div class="ttc" id="agroup__native_html_gae084ef64dc0db140b455b1427256d3f7"><div class="ttname"><a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a></div><div class="ttdeci">const char * glfwGetX11SelectionString(void)</div><div class="ttdoc">Returns the contents of the current primary selection as a string.</div></div>
+<div class="ttc" id="agroup__native_html_gaf22f429aec4b1aab316142d66d9be3e6"><div class="ttname"><a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a></div><div class="ttdeci">CGDirectDisplayID glfwGetCocoaMonitor(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the CGDirectDisplayID of the specified monitor.</div></div>
+<div class="ttc" id="agroup__native_html_gafe5079aa79038b0079fc09d5f0a8e667"><div class="ttname"><a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a></div><div class="ttdeci">HWND glfwGetWin32Window(GLFWwindow *window)</div><div class="ttdoc">Returns the HWND of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --></div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__buttons.html b/libs/glfw-3.3.8/docs/html/group__buttons.html
new file mode 100644
index 0000000..7f1bb3d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__buttons.html
@@ -0,0 +1,275 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Mouse buttons</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Mouse buttons<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#input_mouse_button">mouse button input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga181a6e875251fd8671654eff00f9112e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga181a6e875251fd8671654eff00f9112e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga604b39b92c88ce9bd332e97fc3f4156c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0130d505563d0236a6f85545f19e1721"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga0130d505563d0236a6f85545f19e1721"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9">GLFW_MOUSE_BUTTON_4</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga53f4097bb01d5521c7d9513418c91ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c">GLFW_MOUSE_BUTTON_5</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gaf08c4ddecb051d3d9667db1d5e417c9c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae8513e06aab8aa393b595f22c6d8257a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a">GLFW_MOUSE_BUTTON_6</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:gae8513e06aab8aa393b595f22c6d8257a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7">GLFW_MOUSE_BUTTON_7</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:ga8b02a1ab55dde45b3a3883d54ffd7dc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga35d5c4263e0dc0d0a4731ca6c562f32c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf">GLFW_MOUSE_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td></tr>
+<tr class="separator:gab1fd86a4518a9141ec7bcde2e15a2fdf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td></tr>
+<tr class="separator:gaf37100431dcd5082d48f95ee8bc8cd56"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td></tr>
+<tr class="separator:ga3e2f2cf3c4942df73cc094247d275e74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a">GLFW_MOUSE_BUTTON_MIDDLE</a>&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td></tr>
+<tr class="separator:ga34a4d2a701434f763fd93a2ff842b95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga181a6e875251fd8671654eff00f9112e" name="ga181a6e875251fd8671654eff00f9112e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga181a6e875251fd8671654eff00f9112e">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_1&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga604b39b92c88ce9bd332e97fc3f4156c" name="ga604b39b92c88ce9bd332e97fc3f4156c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga604b39b92c88ce9bd332e97fc3f4156c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_2&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga0130d505563d0236a6f85545f19e1721" name="ga0130d505563d0236a6f85545f19e1721"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0130d505563d0236a6f85545f19e1721">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_3</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_3&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga53f4097bb01d5521c7d9513418c91ca9" name="ga53f4097bb01d5521c7d9513418c91ca9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga53f4097bb01d5521c7d9513418c91ca9">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_4</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_4&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf08c4ddecb051d3d9667db1d5e417c9c" name="gaf08c4ddecb051d3d9667db1d5e417c9c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf08c4ddecb051d3d9667db1d5e417c9c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_5</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_5&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae8513e06aab8aa393b595f22c6d8257a" name="gae8513e06aab8aa393b595f22c6d8257a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae8513e06aab8aa393b595f22c6d8257a">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_6</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_6&#160;&#160;&#160;5</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8b02a1ab55dde45b3a3883d54ffd7dc7" name="ga8b02a1ab55dde45b3a3883d54ffd7dc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8b02a1ab55dde45b3a3883d54ffd7dc7">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_7</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_7&#160;&#160;&#160;6</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga35d5c4263e0dc0d0a4731ca6c562f32c" name="ga35d5c4263e0dc0d0a4731ca6c562f32c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga35d5c4263e0dc0d0a4731ca6c562f32c">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_8</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_8&#160;&#160;&#160;7</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab1fd86a4518a9141ec7bcde2e15a2fdf" name="gab1fd86a4518a9141ec7bcde2e15a2fdf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab1fd86a4518a9141ec7bcde2e15a2fdf">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_LAST</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_LAST&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c">GLFW_MOUSE_BUTTON_8</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf37100431dcd5082d48f95ee8bc8cd56" name="gaf37100431dcd5082d48f95ee8bc8cd56"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf37100431dcd5082d48f95ee8bc8cd56">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_LEFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_LEFT&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga181a6e875251fd8671654eff00f9112e">GLFW_MOUSE_BUTTON_1</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga3e2f2cf3c4942df73cc094247d275e74" name="ga3e2f2cf3c4942df73cc094247d275e74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3e2f2cf3c4942df73cc094247d275e74">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_RIGHT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_RIGHT&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c">GLFW_MOUSE_BUTTON_2</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga34a4d2a701434f763fd93a2ff842b95a" name="ga34a4d2a701434f763fd93a2ff842b95a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga34a4d2a701434f763fd93a2ff842b95a">&#9670;&nbsp;</a></span>GLFW_MOUSE_BUTTON_MIDDLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOUSE_BUTTON_MIDDLE&#160;&#160;&#160;<a class="el" href="group__buttons.html#ga0130d505563d0236a6f85545f19e1721">GLFW_MOUSE_BUTTON_3</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__context.html b/libs/glfw-3.3.8/docs/html/group__context.html
new file mode 100644
index 0000000..2913ea0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__context.html
@@ -0,0 +1,295 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Context reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Context reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for OpenGL and OpenGL ES context related functions. For more task-oriented information, see the <a class="el" href="context_guide.html">Context guide</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>) (void)</td></tr>
+<tr class="memdesc:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Client API function pointer type. <a href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">More...</a><br /></td></tr>
+<tr class="separator:ga3d47c2d2fbe0be9c505d0e04e91a133c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga1c04dc242268f827290fe40aa1c91157"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1c04dc242268f827290fe40aa1c91157"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the context of the specified window current for the calling thread. <a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">More...</a><br /></td></tr>
+<tr class="separator:ga1c04dc242268f827290fe40aa1c91157"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad94e80185397a6cf5fe2ab30567af71c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a> (void)</td></tr>
+<tr class="memdesc:gad94e80185397a6cf5fe2ab30567af71c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the window whose context is current on the calling thread. <a href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">More...</a><br /></td></tr>
+<tr class="separator:gad94e80185397a6cf5fe2ab30567af71c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> (int interval)</td></tr>
+<tr class="memdesc:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the swap interval for the current context. <a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">More...</a><br /></td></tr>
+<tr class="separator:ga6d4e0cdf151b5e579bd67f13202994ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87425065c011cef1ebd6aac75e059dfa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a> (const char *extension)</td></tr>
+<tr class="memdesc:ga87425065c011cef1ebd6aac75e059dfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified extension is available. <a href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">More...</a><br /></td></tr>
+<tr class="separator:ga87425065c011cef1ebd6aac75e059dfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35f1837e6f666781842483937612f163"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> (const char *procname)</td></tr>
+<tr class="memdesc:ga35f1837e6f666781842483937612f163"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified function for the current context. <a href="group__context.html#ga35f1837e6f666781842483937612f163">More...</a><br /></td></tr>
+<tr class="separator:ga35f1837e6f666781842483937612f163"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga3d47c2d2fbe0be9c505d0e04e91a133c" name="ga3d47c2d2fbe0be9c505d0e04e91a133c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3d47c2d2fbe0be9c505d0e04e91a133c">&#9670;&nbsp;</a></span>GLFWglproc</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWglproc) (void)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Generic function pointer used for returning client API function pointers without forcing a cast from a regular pointer.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
+<dd>
+<a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga1c04dc242268f827290fe40aa1c91157" name="ga1c04dc242268f827290fe40aa1c91157"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1c04dc242268f827290fe40aa1c91157">&#9670;&nbsp;</a></span>glfwMakeContextCurrent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwMakeContextCurrent </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function makes the OpenGL or OpenGL ES context of the specified window current on the calling thread. A context must only be made current on a single thread at a time and each thread can have only a single current context at a time.</p>
+<p >When moving a context between threads, you must make it non-current on the old thread before making it current on the new one.</p>
+<p >By default, making a context non-current implicitly forces a pipeline flush. On machines that support <code>GL_KHR_context_flush_control</code>, you can control whether a context performs this flush by setting the <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_hint">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> hint.</p>
+<p >The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> error.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose context to make current, or <code>NULL</code> to detach the current context.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_current">Current context</a> </dd>
+<dd>
+<a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gad94e80185397a6cf5fe2ab30567af71c" name="gad94e80185397a6cf5fe2ab30567af71c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad94e80185397a6cf5fe2ab30567af71c">&#9670;&nbsp;</a></span>glfwGetCurrentContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> * glfwGetCurrentContext </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the window whose OpenGL or OpenGL ES context is current on the calling thread.</p>
+<dl class="section return"><dt>Returns</dt><dd>The window whose context is current, or <code>NULL</code> if no window's context is current.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_current">Current context</a> </dd>
+<dd>
+<a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga6d4e0cdf151b5e579bd67f13202994ed" name="ga6d4e0cdf151b5e579bd67f13202994ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6d4e0cdf151b5e579bd67f13202994ed">&#9670;&nbsp;</a></span>glfwSwapInterval()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSwapInterval </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>interval</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the swap interval for the current OpenGL or OpenGL ES context, i.e. the number of screen updates to wait from the time <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> was called before swapping the buffers and returning. This is sometimes called <em>vertical synchronization</em>, <em>vertical retrace synchronization</em> or just <em>vsync</em>.</p>
+<p >A context that supports either of the <code>WGL_EXT_swap_control_tear</code> and <code>GLX_EXT_swap_control_tear</code> extensions also accepts <em>negative</em> swap intervals, which allows the driver to swap immediately even if a frame arrives a little bit late. You can check for these extensions with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>.</p>
+<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
+<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see the present mode of your swapchain instead.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">interval</td><td>The minimum number of screen updates to wait for until the buffers are swapped by <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function is not called during context 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.</dd>
+<dd>
+Some GPU drivers do not honor the requested swap interval, either because of a user setting that overrides the application's request or due to bugs in the driver.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga87425065c011cef1ebd6aac75e059dfa" name="ga87425065c011cef1ebd6aac75e059dfa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga87425065c011cef1ebd6aac75e059dfa">&#9670;&nbsp;</a></span>glfwExtensionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwExtensionSupported </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>extension</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether the specified <a class="el" href="context_guide.html#context_glext">API extension</a> is supported by the current OpenGL or OpenGL ES context. It searches both for client API extension and context creation API extensions.</p>
+<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
+<p >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.</p>
+<p >This function does not apply to Vulkan. If you are using Vulkan, see <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>, <code>vkEnumerateInstanceExtensionProperties</code> and <code>vkEnumerateDeviceExtensionProperties</code> instead.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">extension</td><td>The ASCII encoded name of the extension. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the extension is available, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
+<dd>
+<a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga35f1837e6f666781842483937612f163" name="ga35f1837e6f666781842483937612f163"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga35f1837e6f666781842483937612f163">&#9670;&nbsp;</a></span>glfwGetProcAddress()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c">GLFWglproc</a> glfwGetProcAddress </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>procname</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the address of the specified OpenGL or OpenGL ES <a class="el" href="context_guide.html#context_glext">core or extension function</a>, if it is supported by the current context.</p>
+<p >A context must be current on the calling thread. Calling this function without a current context will cause a <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> error.</p>
+<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>, <code>vkGetInstanceProcAddr</code> and <code>vkGetDeviceProcAddr</code> instead.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">procname</td><td>The ASCII encoded name of the function. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The address of the function, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The address of a given function is not guaranteed to be the same between contexts.</dd>
+<dd>
+This function may return a non-<code>NULL</code> address despite the associated version or extension not being available. Always check the context version or extension string first.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned function pointer is valid until the context is destroyed or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="context_guide.html#context_glext">OpenGL and OpenGL ES extensions</a> </dd>
+<dd>
+<a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__errors.html b/libs/glfw-3.3.8/docs/html/group__errors.html
new file mode 100644
index 0000000..3def8eb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__errors.html
@@ -0,0 +1,297 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Error codes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Error codes<div class="ingroups"><a class="el" href="group__init.html">Initialization, version and error reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="intro_guide.html#error_handling">error handling</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memdesc:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="mdescLeft">&#160;</td><td class="mdescRight">No error has occurred. <a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">More...</a><br /></td></tr>
+<tr class="separator:gafa30deee5db4d69c4c93d116ed87dbf4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>&#160;&#160;&#160;0x00010001</td></tr>
+<tr class="memdesc:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW has not been initialized. <a href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">More...</a><br /></td></tr>
+<tr class="separator:ga2374ee02c177f12e1fa76ff3ed15e14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">GLFW_NO_CURRENT_CONTEXT</a>&#160;&#160;&#160;0x00010002</td></tr>
+<tr class="memdesc:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">No context is current for this thread. <a href="group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0">More...</a><br /></td></tr>
+<tr class="separator:gaa8290386e9528ccb9e42a3a4e16fc0d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76f6bb9c4eea73db675f096b404593ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>&#160;&#160;&#160;0x00010003</td></tr>
+<tr class="memdesc:ga76f6bb9c4eea73db675f096b404593ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid enum value. <a href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">More...</a><br /></td></tr>
+<tr class="separator:ga76f6bb9c4eea73db675f096b404593ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>&#160;&#160;&#160;0x00010004</td></tr>
+<tr class="memdesc:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="mdescLeft">&#160;</td><td class="mdescRight">One of the arguments to the function was an invalid value. <a href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">More...</a><br /></td></tr>
+<tr class="separator:gaaf2ef9aa8202c2b82ac2d921e554c687"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">GLFW_OUT_OF_MEMORY</a>&#160;&#160;&#160;0x00010005</td></tr>
+<tr class="memdesc:ga9023953a2bcb98c2906afd071d21ee7f"><td class="mdescLeft">&#160;</td><td class="mdescRight">A memory allocation failed. <a href="group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f">More...</a><br /></td></tr>
+<tr class="separator:ga9023953a2bcb98c2906afd071d21ee7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga56882b290db23261cc6c053c40c2d08e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>&#160;&#160;&#160;0x00010006</td></tr>
+<tr class="memdesc:ga56882b290db23261cc6c053c40c2d08e"><td class="mdescLeft">&#160;</td><td class="mdescRight">GLFW could not find support for the requested API on the system. <a href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">More...</a><br /></td></tr>
+<tr class="separator:ga56882b290db23261cc6c053c40c2d08e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>&#160;&#160;&#160;0x00010007</td></tr>
+<tr class="memdesc:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested OpenGL or OpenGL ES version is not available. <a href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">More...</a><br /></td></tr>
+<tr class="separator:gad16c5565b4a69f9c2a9ac2c0dbc89462"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>&#160;&#160;&#160;0x00010008</td></tr>
+<tr class="memdesc:gad44162d78100ea5e87cdd38426b8c7a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">A platform-specific error occurred that does not match any of the more specific categories. <a href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">More...</a><br /></td></tr>
+<tr class="separator:gad44162d78100ea5e87cdd38426b8c7a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga196e125ef261d94184e2b55c05762f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a>&#160;&#160;&#160;0x00010009</td></tr>
+<tr class="memdesc:ga196e125ef261d94184e2b55c05762f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">The requested format is not supported or available. <a href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">More...</a><br /></td></tr>
+<tr class="separator:ga196e125ef261d94184e2b55c05762f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacff24d2757da752ae4c80bf452356487"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a>&#160;&#160;&#160;0x0001000A</td></tr>
+<tr class="memdesc:gacff24d2757da752ae4c80bf452356487"><td class="mdescLeft">&#160;</td><td class="mdescRight">The specified window does not have an OpenGL or OpenGL ES context. <a href="group__errors.html#gacff24d2757da752ae4c80bf452356487">More...</a><br /></td></tr>
+<tr class="separator:gacff24d2757da752ae4c80bf452356487"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="gafa30deee5db4d69c4c93d116ed87dbf4" name="gafa30deee5db4d69c4c93d116ed87dbf4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafa30deee5db4d69c4c93d116ed87dbf4">&#9670;&nbsp;</a></span>GLFW_NO_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_ERROR&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >No error has occurred.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Yay. </dd></dl>
+
+</div>
+</div>
+<a id="ga2374ee02c177f12e1fa76ff3ed15e14a" name="ga2374ee02c177f12e1fa76ff3ed15e14a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2374ee02c177f12e1fa76ff3ed15e14a">&#9670;&nbsp;</a></span>GLFW_NOT_INITIALIZED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NOT_INITIALIZED&#160;&#160;&#160;0x00010001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This occurs if a GLFW function was called that must not be called unless the library is <a class="el" href="intro_guide.html#intro_init">initialized</a>.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Initialize GLFW before calling any function that requires initialization. </dd></dl>
+
+</div>
+</div>
+<a id="gaa8290386e9528ccb9e42a3a4e16fc0d0" name="gaa8290386e9528ccb9e42a3a4e16fc0d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa8290386e9528ccb9e42a3a4e16fc0d0">&#9670;&nbsp;</a></span>GLFW_NO_CURRENT_CONTEXT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_CURRENT_CONTEXT&#160;&#160;&#160;0x00010002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Ensure a context is current before calling functions that require a current context. </dd></dl>
+
+</div>
+</div>
+<a id="ga76f6bb9c4eea73db675f096b404593ce" name="ga76f6bb9c4eea73db675f096b404593ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga76f6bb9c4eea73db675f096b404593ce">&#9670;&nbsp;</a></span>GLFW_INVALID_ENUM</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_INVALID_ENUM&#160;&#160;&#160;0x00010003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >One of the arguments to the function was an invalid enum value, for example requesting <a class="el" href="window_guide.html#GLFW_RED_BITS">GLFW_RED_BITS</a> with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
+
+</div>
+</div>
+<a id="gaaf2ef9aa8202c2b82ac2d921e554c687" name="gaaf2ef9aa8202c2b82ac2d921e554c687"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaaf2ef9aa8202c2b82ac2d921e554c687">&#9670;&nbsp;</a></span>GLFW_INVALID_VALUE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_INVALID_VALUE&#160;&#160;&#160;0x00010004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >Requesting a valid but unavailable OpenGL or OpenGL ES version will instead result in a <a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a> error.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
+
+</div>
+</div>
+<a id="ga9023953a2bcb98c2906afd071d21ee7f" name="ga9023953a2bcb98c2906afd071d21ee7f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9023953a2bcb98c2906afd071d21ee7f">&#9670;&nbsp;</a></span>GLFW_OUT_OF_MEMORY</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OUT_OF_MEMORY&#160;&#160;&#160;0x00010005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >A memory allocation failed.</p>
+<dl class="section user"><dt>Analysis</dt><dd>A bug in GLFW or the underlying operating system. Report the bug to our <a href="https://github.com/glfw/glfw/issues">issue tracker</a>. </dd></dl>
+
+</div>
+</div>
+<a id="ga56882b290db23261cc6c053c40c2d08e" name="ga56882b290db23261cc6c053c40c2d08e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga56882b290db23261cc6c053c40c2d08e">&#9670;&nbsp;</a></span>GLFW_API_UNAVAILABLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_API_UNAVAILABLE&#160;&#160;&#160;0x00010006</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >GLFW could not find support for the requested API on the system.</p>
+<dl class="section user"><dt>Analysis</dt><dd>The installed graphics driver does not support the requested API, or does not support it via the chosen context creation backend. Below are a few examples.</dd></dl>
+<dl class="section user"><dt></dt><dd>Some pre-installed Windows graphics drivers do not support OpenGL. AMD only supports OpenGL ES via EGL, while Nvidia and Intel only support it via a WGL or GLX extension. macOS does not provide OpenGL ES at all. The Mesa EGL, OpenGL and OpenGL ES libraries do not interface with the Nvidia binary driver. Older graphics drivers do not support Vulkan. </dd></dl>
+
+</div>
+</div>
+<a id="gad16c5565b4a69f9c2a9ac2c0dbc89462" name="gad16c5565b4a69f9c2a9ac2c0dbc89462"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad16c5565b4a69f9c2a9ac2c0dbc89462">&#9670;&nbsp;</a></span>GLFW_VERSION_UNAVAILABLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VERSION_UNAVAILABLE&#160;&#160;&#160;0x00010007</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The requested OpenGL or OpenGL ES version (including any requested context or framebuffer hints) is not available on this machine.</p>
+<dl class="section user"><dt>Analysis</dt><dd>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.</dd></dl>
+<dl class="section user"><dt></dt><dd>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 <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>, because GLFW cannot know what future versions will exist. </dd></dl>
+
+</div>
+</div>
+<a id="gad44162d78100ea5e87cdd38426b8c7a1" name="gad44162d78100ea5e87cdd38426b8c7a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad44162d78100ea5e87cdd38426b8c7a1">&#9670;&nbsp;</a></span>GLFW_PLATFORM_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_PLATFORM_ERROR&#160;&#160;&#160;0x00010008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >A platform-specific error occurred that does not match any of the more specific categories.</p>
+<dl class="section user"><dt>Analysis</dt><dd>A bug or configuration error in GLFW, the underlying operating system or its drivers, or a lack of required resources. Report the issue to our <a href="https://github.com/glfw/glfw/issues">issue tracker</a>. </dd></dl>
+
+</div>
+</div>
+<a id="ga196e125ef261d94184e2b55c05762f14" name="ga196e125ef261d94184e2b55c05762f14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga196e125ef261d94184e2b55c05762f14">&#9670;&nbsp;</a></span>GLFW_FORMAT_UNAVAILABLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_FORMAT_UNAVAILABLE&#160;&#160;&#160;0x00010009</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If emitted during window creation, the requested pixel format is not supported.</p>
+<p >If emitted when querying the clipboard, the contents of the clipboard could not be converted to the requested format.</p>
+<dl class="section user"><dt>Analysis</dt><dd>If emitted during window creation, one or more <a class="el" href="window_guide.html#window_hints_hard">hard constraints</a> 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.</dd></dl>
+<dl class="section user"><dt></dt><dd>If emitted when querying the clipboard, ignore the error or report it to the user, as appropriate. </dd></dl>
+
+</div>
+</div>
+<a id="gacff24d2757da752ae4c80bf452356487" name="gacff24d2757da752ae4c80bf452356487"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacff24d2757da752ae4c80bf452356487">&#9670;&nbsp;</a></span>GLFW_NO_WINDOW_CONTEXT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_NO_WINDOW_CONTEXT&#160;&#160;&#160;0x0001000A</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >A window that does not have an OpenGL or OpenGL ES context was passed to a function that requires it to have one.</p>
+<dl class="section user"><dt>Analysis</dt><dd>Application programmer error. Fix the offending call. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__gamepad__axes.html b/libs/glfw-3.3.8/docs/html/group__gamepad__axes.html
new file mode 100644
index 0000000..5dc84be
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__gamepad__axes.html
@@ -0,0 +1,195 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Gamepad axes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Gamepad axes<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#gamepad">Gamepad input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga544e396d092036a7d80c1e5f233f7a38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga544e396d092036a7d80c1e5f233f7a38"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga64dcf2c6e9be50b7c556ff7671996dd5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:gabd6785106cd3c5a044a6e49a395ee2fc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga1cc20566d44d521b7183681a8e88e2e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6d79561dd8907c37354426242901b86e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:ga6d79561dd8907c37354426242901b86e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:ga121a7d5d20589a423cd1634dd6ee6eab"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0818fd9433e1359692b7443293e5ac86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td></tr>
+<tr class="separator:ga0818fd9433e1359692b7443293e5ac86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga544e396d092036a7d80c1e5f233f7a38" name="ga544e396d092036a7d80c1e5f233f7a38"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga544e396d092036a7d80c1e5f233f7a38">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_X&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga64dcf2c6e9be50b7c556ff7671996dd5" name="ga64dcf2c6e9be50b7c556ff7671996dd5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga64dcf2c6e9be50b7c556ff7671996dd5">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_Y&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gabd6785106cd3c5a044a6e49a395ee2fc" name="gabd6785106cd3c5a044a6e49a395ee2fc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabd6785106cd3c5a044a6e49a395ee2fc">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_X&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga1cc20566d44d521b7183681a8e88e2e4" name="ga1cc20566d44d521b7183681a8e88e2e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1cc20566d44d521b7183681a8e88e2e4">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_Y&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6d79561dd8907c37354426242901b86e" name="ga6d79561dd8907c37354426242901b86e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6d79561dd8907c37354426242901b86e">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_LEFT_TRIGGER&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga121a7d5d20589a423cd1634dd6ee6eab" name="ga121a7d5d20589a423cd1634dd6ee6eab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga121a7d5d20589a423cd1634dd6ee6eab">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER&#160;&#160;&#160;5</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga0818fd9433e1359692b7443293e5ac86" name="ga0818fd9433e1359692b7443293e5ac86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0818fd9433e1359692b7443293e5ac86">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_AXIS_LAST</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_AXIS_LAST&#160;&#160;&#160;<a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__gamepad__buttons.html b/libs/glfw-3.3.8/docs/html/group__gamepad__buttons.html
new file mode 100644
index 0000000..51c027d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__gamepad__buttons.html
@@ -0,0 +1,403 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Gamepad buttons</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Gamepad buttons<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#gamepad">Gamepad input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:gae055a12fbf4b48b5954c8e1cd129b810"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2228a6512fd5950cdb51ba07846546fa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga2228a6512fd5950cdb51ba07846546fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga52cc94785cf3fe9a12e246539259887c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga52cc94785cf3fe9a12e246539259887c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc931248bda494b530cbe057f386a5ed"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:gafc931248bda494b530cbe057f386a5ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:ga17d67b4f39a39d6b813bd1567a3507c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:gadfbc9ea9bf3aae896b79fa49fdc85c7f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabc7c0264ce778835b516a472b47f6caf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:gabc7c0264ce778835b516a472b47f6caf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga04606949dd9139434b8a1bedf4ac1021"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga04606949dd9139434b8a1bedf4ac1021"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:ga7fa48c32e5b2f5db2f080aa0b8b573dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3e089787327454f7bfca7364d6ca206a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a>&#160;&#160;&#160;9</td></tr>
+<tr class="separator:ga3e089787327454f7bfca7364d6ca206a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1c003f52b5aebb45272475b48953b21a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a>&#160;&#160;&#160;10</td></tr>
+<tr class="separator:ga1c003f52b5aebb45272475b48953b21a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a>&#160;&#160;&#160;11</td></tr>
+<tr class="separator:ga4f1ed6f974a47bc8930d4874a283476a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a>&#160;&#160;&#160;12</td></tr>
+<tr class="separator:gae2a780d2a8c79e0b77c0b7b601ca57c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8f2b731b97d80f90f11967a83207665c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a>&#160;&#160;&#160;13</td></tr>
+<tr class="separator:ga8f2b731b97d80f90f11967a83207665c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a>&#160;&#160;&#160;14</td></tr>
+<tr class="separator:gaf0697e0e8607b2ebe1c93b0c6befe301"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5cc98882f4f81dacf761639a567f61eb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td></tr>
+<tr class="separator:ga5cc98882f4f81dacf761639a567f61eb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf08d0df26527c9305253422bd98ed63a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td></tr>
+<tr class="separator:gaf08d0df26527c9305253422bd98ed63a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaef094b3dacbf15f272b274516839b82"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td></tr>
+<tr class="separator:gaaef094b3dacbf15f272b274516839b82"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td></tr>
+<tr class="separator:gafc7821e87d77d41ed2cd3e1f726ec35f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a>&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td></tr>
+<tr class="separator:ga3a7ef6bcb768a08cd3bf142f7f09f802"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="gae055a12fbf4b48b5954c8e1cd129b810" name="gae055a12fbf4b48b5954c8e1cd129b810"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae055a12fbf4b48b5954c8e1cd129b810">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_A</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_A&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga2228a6512fd5950cdb51ba07846546fa" name="ga2228a6512fd5950cdb51ba07846546fa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2228a6512fd5950cdb51ba07846546fa">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_B</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_B&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga52cc94785cf3fe9a12e246539259887c" name="ga52cc94785cf3fe9a12e246539259887c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga52cc94785cf3fe9a12e246539259887c">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_X&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafc931248bda494b530cbe057f386a5ed" name="gafc931248bda494b530cbe057f386a5ed"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafc931248bda494b530cbe057f386a5ed">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_Y&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga17d67b4f39a39d6b813bd1567a3507c3" name="ga17d67b4f39a39d6b813bd1567a3507c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga17d67b4f39a39d6b813bd1567a3507c3">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_LEFT_BUMPER&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadfbc9ea9bf3aae896b79fa49fdc85c7f" name="gadfbc9ea9bf3aae896b79fa49fdc85c7f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadfbc9ea9bf3aae896b79fa49fdc85c7f">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER&#160;&#160;&#160;5</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gabc7c0264ce778835b516a472b47f6caf" name="gabc7c0264ce778835b516a472b47f6caf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabc7c0264ce778835b516a472b47f6caf">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_BACK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_BACK&#160;&#160;&#160;6</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga04606949dd9139434b8a1bedf4ac1021" name="ga04606949dd9139434b8a1bedf4ac1021"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga04606949dd9139434b8a1bedf4ac1021">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_START</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_START&#160;&#160;&#160;7</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7fa48c32e5b2f5db2f080aa0b8b573dc" name="ga7fa48c32e5b2f5db2f080aa0b8b573dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7fa48c32e5b2f5db2f080aa0b8b573dc">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_GUIDE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_GUIDE&#160;&#160;&#160;8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga3e089787327454f7bfca7364d6ca206a" name="ga3e089787327454f7bfca7364d6ca206a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3e089787327454f7bfca7364d6ca206a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LEFT_THUMB</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_LEFT_THUMB&#160;&#160;&#160;9</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga1c003f52b5aebb45272475b48953b21a" name="ga1c003f52b5aebb45272475b48953b21a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1c003f52b5aebb45272475b48953b21a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_RIGHT_THUMB&#160;&#160;&#160;10</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4f1ed6f974a47bc8930d4874a283476a" name="ga4f1ed6f974a47bc8930d4874a283476a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4f1ed6f974a47bc8930d4874a283476a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_UP&#160;&#160;&#160;11</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae2a780d2a8c79e0b77c0b7b601ca57c6" name="gae2a780d2a8c79e0b77c0b7b601ca57c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae2a780d2a8c79e0b77c0b7b601ca57c6">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_RIGHT&#160;&#160;&#160;12</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8f2b731b97d80f90f11967a83207665c" name="ga8f2b731b97d80f90f11967a83207665c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8f2b731b97d80f90f11967a83207665c">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_DOWN&#160;&#160;&#160;13</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf0697e0e8607b2ebe1c93b0c6befe301" name="gaf0697e0e8607b2ebe1c93b0c6befe301"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf0697e0e8607b2ebe1c93b0c6befe301">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_DPAD_LEFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_DPAD_LEFT&#160;&#160;&#160;14</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga5cc98882f4f81dacf761639a567f61eb" name="ga5cc98882f4f81dacf761639a567f61eb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5cc98882f4f81dacf761639a567f61eb">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_LAST</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_LAST&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf08d0df26527c9305253422bd98ed63a" name="gaf08d0df26527c9305253422bd98ed63a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf08d0df26527c9305253422bd98ed63a">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_CROSS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_CROSS&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaaef094b3dacbf15f272b274516839b82" name="gaaef094b3dacbf15f272b274516839b82"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaaef094b3dacbf15f272b274516839b82">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_CIRCLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_CIRCLE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafc7821e87d77d41ed2cd3e1f726ec35f" name="gafc7821e87d77d41ed2cd3e1f726ec35f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafc7821e87d77d41ed2cd3e1f726ec35f">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_SQUARE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_SQUARE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga3a7ef6bcb768a08cd3bf142f7f09f802" name="ga3a7ef6bcb768a08cd3bf142f7f09f802"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3a7ef6bcb768a08cd3bf142f7f09f802">&#9670;&nbsp;</a></span>GLFW_GAMEPAD_BUTTON_TRIANGLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GAMEPAD_BUTTON_TRIANGLE&#160;&#160;&#160;<a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__hat__state.html b/libs/glfw-3.3.8/docs/html/group__hat__state.html
new file mode 100644
index 0000000..d08f541
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__hat__state.html
@@ -0,0 +1,227 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Joystick hat states</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Joystick hat states<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#joystick_hat">joystick hat input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:gae2c0bcb7aec609e4736437554f6638fd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:gae2c0bcb7aec609e4736437554f6638fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8c9720c76cd1b912738159ed74c85b36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga8c9720c76cd1b912738159ed74c85b36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:ga252586e3bbde75f4b0e07ad3124867f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gad60d1fd0dc85c18f2642cbae96d3deff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac775f4b3154fdf5db93eb432ba546dff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:gac775f4b3154fdf5db93eb432ba546dff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga94aea0ae241a8b902883536c592ee693"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
+<tr class="separator:ga94aea0ae241a8b902883536c592ee693"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
+<tr class="separator:gad7f0e4f52fd68d734863aaeadab3a3f5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga638f0e20dc5de90de21a33564e8ce129"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td></tr>
+<tr class="separator:ga638f0e20dc5de90de21a33564e8ce129"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a>&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td></tr>
+<tr class="separator:ga76c02baf1ea345fcbe3e8ff176a73e19"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="gae2c0bcb7aec609e4736437554f6638fd" name="gae2c0bcb7aec609e4736437554f6638fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae2c0bcb7aec609e4736437554f6638fd">&#9670;&nbsp;</a></span>GLFW_HAT_CENTERED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_CENTERED&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8c9720c76cd1b912738159ed74c85b36" name="ga8c9720c76cd1b912738159ed74c85b36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8c9720c76cd1b912738159ed74c85b36">&#9670;&nbsp;</a></span>GLFW_HAT_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_UP&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga252586e3bbde75f4b0e07ad3124867f5" name="ga252586e3bbde75f4b0e07ad3124867f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga252586e3bbde75f4b0e07ad3124867f5">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_RIGHT&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad60d1fd0dc85c18f2642cbae96d3deff" name="gad60d1fd0dc85c18f2642cbae96d3deff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad60d1fd0dc85c18f2642cbae96d3deff">&#9670;&nbsp;</a></span>GLFW_HAT_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_DOWN&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gac775f4b3154fdf5db93eb432ba546dff" name="gac775f4b3154fdf5db93eb432ba546dff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac775f4b3154fdf5db93eb432ba546dff">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_LEFT&#160;&#160;&#160;8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga94aea0ae241a8b902883536c592ee693" name="ga94aea0ae241a8b902883536c592ee693"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga94aea0ae241a8b902883536c592ee693">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_RIGHT_UP&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad7f0e4f52fd68d734863aaeadab3a3f5" name="gad7f0e4f52fd68d734863aaeadab3a3f5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad7f0e4f52fd68d734863aaeadab3a3f5">&#9670;&nbsp;</a></span>GLFW_HAT_RIGHT_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_RIGHT_DOWN&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga638f0e20dc5de90de21a33564e8ce129" name="ga638f0e20dc5de90de21a33564e8ce129"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga638f0e20dc5de90de21a33564e8ce129">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_LEFT_UP&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga76c02baf1ea345fcbe3e8ff176a73e19" name="ga76c02baf1ea345fcbe3e8ff176a73e19"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga76c02baf1ea345fcbe3e8ff176a73e19">&#9670;&nbsp;</a></span>GLFW_HAT_LEFT_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAT_LEFT_DOWN&#160;&#160;&#160;(<a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a> | <a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a>)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__init.html b/libs/glfw-3.3.8/docs/html/group__init.html
new file mode 100644
index 0000000..944700b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__init.html
@@ -0,0 +1,545 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Initialization, version and error reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#groups">Modules</a> &#124;
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Initialization, version and error reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for initialization and termination of the library, version management and error handling. For more task-oriented information, see the <a class="el" href="intro_guide.html">Introduction to the API</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
+Modules</h2></td></tr>
+<tr class="memitem:group__errors"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__errors.html">Error codes</a></td></tr>
+<tr class="memdesc:group__errors"><td class="mdescLeft">&#160;</td><td class="mdescRight">Error codes. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>&#160;&#160;&#160;1</td></tr>
+<tr class="memdesc:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="mdescLeft">&#160;</td><td class="mdescRight">One. <a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">More...</a><br /></td></tr>
+<tr class="separator:ga2744fbb29b5631bb28802dbe0cf36eba"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>&#160;&#160;&#160;0</td></tr>
+<tr class="memdesc:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Zero. <a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">More...</a><br /></td></tr>
+<tr class="separator:gac877fe3b627d21ef3a0a23e0a73ba8c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab9c0534709fda03ec8959201da3a9a18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>&#160;&#160;&#160;0x00050001</td></tr>
+<tr class="memdesc:gab9c0534709fda03ec8959201da3a9a18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat buttons init hint. <a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">More...</a><br /></td></tr>
+<tr class="separator:gab9c0534709fda03ec8959201da3a9a18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab937983147a3158d45f88fad7129d9f2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a>&#160;&#160;&#160;0x00051001</td></tr>
+<tr class="memdesc:gab937983147a3158d45f88fad7129d9f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#gab937983147a3158d45f88fad7129d9f2">More...</a><br /></td></tr>
+<tr class="separator:gab937983147a3158d45f88fad7129d9f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a>&#160;&#160;&#160;0x00051002</td></tr>
+<tr class="memdesc:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific init hint. <a href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">More...</a><br /></td></tr>
+<tr class="separator:ga71e0b4ce2f2696a84a9b8c5e12dc70cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga8184701785c096b3862a75cda1bf44a3"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>) (int error_code, const char *description)</td></tr>
+<tr class="memdesc:ga8184701785c096b3862a75cda1bf44a3"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for error callbacks. <a href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">More...</a><br /></td></tr>
+<tr class="separator:ga8184701785c096b3862a75cda1bf44a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga317aac130a235ab08c6db0834907d85e"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> (void)</td></tr>
+<tr class="memdesc:ga317aac130a235ab08c6db0834907d85e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initializes the GLFW library. <a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">More...</a><br /></td></tr>
+<tr class="separator:ga317aac130a235ab08c6db0834907d85e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> (void)</td></tr>
+<tr class="memdesc:gaaae48c0a18607ea4a4ba951d939f0901"><td class="mdescLeft">&#160;</td><td class="mdescRight">Terminates the GLFW library. <a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">More...</a><br /></td></tr>
+<tr class="separator:gaaae48c0a18607ea4a4ba951d939f0901"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga110fd1d3f0412822b4f1908c026f724a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a> (int hint, int value)</td></tr>
+<tr class="memdesc:ga110fd1d3f0412822b4f1908c026f724a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified init hint to the desired value. <a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">More...</a><br /></td></tr>
+<tr class="separator:ga110fd1d3f0412822b4f1908c026f724a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> (int *major, int *minor, int *rev)</td></tr>
+<tr class="memdesc:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the version of the GLFW library. <a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">More...</a><br /></td></tr>
+<tr class="separator:ga9f8ffaacf3c269cc48eafbf8b9b71197"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga026abd003c8e6501981ab1662062f1c0"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a> (void)</td></tr>
+<tr class="memdesc:ga026abd003c8e6501981ab1662062f1c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a string describing the compile-time configuration. <a href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">More...</a><br /></td></tr>
+<tr class="separator:ga026abd003c8e6501981ab1662062f1c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga944986b4ec0b928d488141f92982aa18"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> (const char **description)</td></tr>
+<tr class="memdesc:ga944986b4ec0b928d488141f92982aa18"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns and clears the last error for the calling thread. <a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">More...</a><br /></td></tr>
+<tr class="separator:ga944986b4ec0b928d488141f92982aa18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff45816610d53f0b83656092a4034f40"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a> (<a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> callback)</td></tr>
+<tr class="memdesc:gaff45816610d53f0b83656092a4034f40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the error callback. <a href="group__init.html#gaff45816610d53f0b83656092a4034f40">More...</a><br /></td></tr>
+<tr class="separator:gaff45816610d53f0b83656092a4034f40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga6337d9ea43b22fc529b2bba066b4a576" name="ga6337d9ea43b22fc529b2bba066b4a576"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6337d9ea43b22fc529b2bba066b4a576">&#9670;&nbsp;</a></span>GLFW_VERSION_MAJOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VERSION_MAJOR&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The major version number of the GLFW header. This is incremented when the API is changed in non-compatible ways. </p>
+
+</div>
+</div>
+<a id="gaf80d40f0aea7088ff337606e9c48f7a3" name="gaf80d40f0aea7088ff337606e9c48f7a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf80d40f0aea7088ff337606e9c48f7a3">&#9670;&nbsp;</a></span>GLFW_VERSION_MINOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VERSION_MINOR&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The minor version number of the GLFW header. This is incremented when features are added to the API but it remains backward-compatible. </p>
+
+</div>
+</div>
+<a id="gab72ae2e2035d9ea461abc3495eac0502" name="gab72ae2e2035d9ea461abc3495eac0502"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab72ae2e2035d9ea461abc3495eac0502">&#9670;&nbsp;</a></span>GLFW_VERSION_REVISION</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VERSION_REVISION&#160;&#160;&#160;8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The revision number of the GLFW header. This is incremented when a bug fix release is made that does not contain any API changes. </p>
+
+</div>
+</div>
+<a id="ga2744fbb29b5631bb28802dbe0cf36eba" name="ga2744fbb29b5631bb28802dbe0cf36eba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2744fbb29b5631bb28802dbe0cf36eba">&#9670;&nbsp;</a></span>GLFW_TRUE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_TRUE&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is only semantic sugar for the number 1. You can instead use <code>1</code> or <code>true</code> or <code>_True</code> or <code>GL_TRUE</code> or <code>VK_TRUE</code> or anything else that is equal to one. </p>
+
+</div>
+</div>
+<a id="gac877fe3b627d21ef3a0a23e0a73ba8c5" name="gac877fe3b627d21ef3a0a23e0a73ba8c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac877fe3b627d21ef3a0a23e0a73ba8c5">&#9670;&nbsp;</a></span>GLFW_FALSE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_FALSE&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is only semantic sugar for the number 0. You can instead use <code>0</code> or <code>false</code> or <code>_False</code> or <code>GL_FALSE</code> or <code>VK_FALSE</code> or anything else that is equal to zero. </p>
+
+</div>
+</div>
+<a id="gab9c0534709fda03ec8959201da3a9a18" name="gab9c0534709fda03ec8959201da3a9a18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab9c0534709fda03ec8959201da3a9a18">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_HAT_BUTTONS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_HAT_BUTTONS&#160;&#160;&#160;0x00050001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Joystick hat buttons <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">init hint</a>. </p>
+
+</div>
+</div>
+<a id="gab937983147a3158d45f88fad7129d9f2" name="gab937983147a3158d45f88fad7129d9f2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab937983147a3158d45f88fad7129d9f2">&#9670;&nbsp;</a></span>GLFW_COCOA_CHDIR_RESOURCES</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_COCOA_CHDIR_RESOURCES&#160;&#160;&#160;0x00051001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >macOS specific <a class="el" href="intro_guide.html#GLFW_COCOA_CHDIR_RESOURCES_hint">init hint</a>. </p>
+
+</div>
+</div>
+<a id="ga71e0b4ce2f2696a84a9b8c5e12dc70cf" name="ga71e0b4ce2f2696a84a9b8c5e12dc70cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">&#9670;&nbsp;</a></span>GLFW_COCOA_MENUBAR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_COCOA_MENUBAR&#160;&#160;&#160;0x00051002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >macOS specific <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">init hint</a>. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga8184701785c096b3862a75cda1bf44a3" name="ga8184701785c096b3862a75cda1bf44a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8184701785c096b3862a75cda1bf44a3">&#9670;&nbsp;</a></span>GLFWerrorfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWerrorfun) (int error_code, const char *description)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for error callbacks. An error callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">error_code</td><td>An <a class="el" href="group__errors.html">error code</a>. Future releases may add more error codes. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">description</td><td>A UTF-8 encoded string describing the error.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The error description string is valid until the callback function returns.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
+<dd>
+<a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga317aac130a235ab08c6db0834907d85e" name="ga317aac130a235ab08c6db0834907d85e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga317aac130a235ab08c6db0834907d85e">&#9670;&nbsp;</a></span>glfwInit()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwInit </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function initializes the GLFW library. Before most GLFW functions can 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.</p>
+<p >If this function fails, it calls <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> before returning. If it succeeds, you should call <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> before the application exits.</p>
+<p >Additional calls to this function after successful initialization but before termination will return <code>GLFW_TRUE</code> immediately.</p>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> This function will change the current directory of the application to the <code>Contents/Resources</code> subdirectory of the application's bundle, if present. This can be disabled with the <a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a> init hint.</dd>
+<dd>
+<b>X11:</b> This function will set the <code>LC_CTYPE</code> category of the application locale according to the current environment if that category is still "C". This is because the "C" locale breaks Unicode text input.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_init">Initialization and termination</a> </dd>
+<dd>
+<a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaaae48c0a18607ea4a4ba951d939f0901" name="gaaae48c0a18607ea4a4ba951d939f0901"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaaae48c0a18607ea4a4ba951d939f0901">&#9670;&nbsp;</a></span>glfwTerminate()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwTerminate </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> successfully before you will be able to use most GLFW functions.</p>
+<p >If GLFW has been successfully initialized, this function should be called before the application exits. If initialization fails, there is no need to call this function, as it is called by <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> before it returns failure.</p>
+<p >This function has no effect if GLFW is not initialized.</p>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section warning"><dt>Warning</dt><dd>The contexts of any remaining windows must not be current on any other thread when this function is called.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_init">Initialization and termination</a> </dd>
+<dd>
+<a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga110fd1d3f0412822b4f1908c026f724a" name="ga110fd1d3f0412822b4f1908c026f724a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga110fd1d3f0412822b4f1908c026f724a">&#9670;&nbsp;</a></span>glfwInitHint()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwInitHint </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets hints for the next initialization of GLFW.</p>
+<p >The values you set hints to are never reset by GLFW, but they only take effect during initialization. Once GLFW has been initialized, any values you set will be ignored until the library is terminated and initialized again.</p>
+<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="intro_guide.html#init_hints">init hint</a> to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the init hint.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd>init_hints </dd>
+<dd>
+<a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e" title="Initializes the GLFW library.">glfwInit</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga9f8ffaacf3c269cc48eafbf8b9b71197" name="ga9f8ffaacf3c269cc48eafbf8b9b71197"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9f8ffaacf3c269cc48eafbf8b9b71197">&#9670;&nbsp;</a></span>glfwGetVersion()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetVersion </td>
+ <td>(</td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>major</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>minor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>rev</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the major, minor and revision numbers of the GLFW library. It is intended for when you are using GLFW as a shared library and want to ensure that you are using the minimum required version.</p>
+<p >Any or all of the version arguments may be <code>NULL</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">major</td><td>Where to store the major version number, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">minor</td><td>Where to store the minor version number, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">rev</td><td>Where to store the revision number, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_version">Version management</a> </dd>
+<dd>
+<a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga026abd003c8e6501981ab1662062f1c0" name="ga026abd003c8e6501981ab1662062f1c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga026abd003c8e6501981ab1662062f1c0">&#9670;&nbsp;</a></span>glfwGetVersionString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetVersionString </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the compile-time generated <a class="el" href="intro_guide.html#intro_version_string">version string</a> of the GLFW library binary. It describes the version, platform, compiler and any platform-specific compile-time options. It should not be confused with the OpenGL or OpenGL ES version string, queried with <code>glGetString</code>.</p>
+<p ><b>Do not use the version string</b> to parse the GLFW library version. The <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> function provides the version of the running library binary in numerical format.</p>
+<dl class="section return"><dt>Returns</dt><dd>The ASCII encoded GLFW version string.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is static and compile-time generated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#intro_version">Version management</a> </dd>
+<dd>
+<a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga944986b4ec0b928d488141f92982aa18" name="ga944986b4ec0b928d488141f92982aa18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga944986b4ec0b928d488141f92982aa18">&#9670;&nbsp;</a></span>glfwGetError()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetError </td>
+ <td>(</td>
+ <td class="paramtype">const char **&#160;</td>
+ <td class="paramname"><em>description</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns and clears the <a class="el" href="group__errors.html">error code</a> of the last error that occurred on the calling thread, and optionally a UTF-8 encoded human-readable description of it. If no error has occurred since the last call, it returns <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero) and the description pointer is set to <code>NULL</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">description</td><td>Where to store the error description pointer, or <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The last error code for the calling thread, or <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero).</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the next error occurs or the library is terminated.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
+<dd>
+<a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gaff45816610d53f0b83656092a4034f40" name="gaff45816610d53f0b83656092a4034f40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaff45816610d53f0b83656092a4034f40">&#9670;&nbsp;</a></span>glfwSetErrorCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a> glfwSetErrorCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">GLFWerrorfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the error callback, which is called with an error code and a human-readable description each time a GLFW error occurs.</p>
+<p >The error code is set before the callback is called. Calling <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> from the error callback will return the same value as the error code argument.</p>
+<p >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.</p>
+<p >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.</p>
+<p >Once set, the error callback remains set even after the library has been terminated.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<span class="keywordtype">int</span> error_code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__init.html#ga8184701785c096b3862a75cda1bf44a3">callback pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>None.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>This function may be called before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="intro_guide.html#error_handling">Error handling</a> </dd>
+<dd>
+<a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__input.html b/libs/glfw-3.3.8/docs/html/group__input.html
new file mode 100644
index 0000000..18cf6f2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__input.html
@@ -0,0 +1,2228 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Input reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#groups">Modules</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Input reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for input related functions and types. For more task-oriented information, see the <a class="el" href="input_guide.html">Input guide</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="groups" name="groups"></a>
+Modules</h2></td></tr>
+<tr class="memitem:group__gamepad__axes"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__axes.html">Gamepad axes</a></td></tr>
+<tr class="memdesc:group__gamepad__axes"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad axes. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__gamepad__buttons"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__gamepad__buttons.html">Gamepad buttons</a></td></tr>
+<tr class="memdesc:group__gamepad__buttons"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad buttons. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__hat__state"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__hat__state.html">Joystick hat states</a></td></tr>
+<tr class="memdesc:group__hat__state"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick hat states. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__joysticks"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html">Joysticks</a></td></tr>
+<tr class="memdesc:group__joysticks"><td class="mdescLeft">&#160;</td><td class="mdescRight">Joystick IDs. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__keys"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html">Keyboard keys</a></td></tr>
+<tr class="memdesc:group__keys"><td class="mdescLeft">&#160;</td><td class="mdescRight">Keyboard key IDs. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__mods"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html">Modifier key flags</a></td></tr>
+<tr class="memdesc:group__mods"><td class="mdescLeft">&#160;</td><td class="mdescRight">Modifier key flags. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__buttons"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__buttons.html">Mouse buttons</a></td></tr>
+<tr class="memdesc:group__buttons"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse button IDs. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:group__shapes"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html">Standard cursor shapes</a></td></tr>
+<tr class="memdesc:group__shapes"><td class="mdescLeft">&#160;</td><td class="mdescRight">Standard system cursor shapes. <br /></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td></tr>
+<tr class="memdesc:ga89261ae18c75e863aaf2656ecdd238f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque cursor object. <a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">More...</a><br /></td></tr>
+<tr class="separator:ga89261ae18c75e863aaf2656ecdd238f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0184dcb59f6d85d735503dcaae809727"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td></tr>
+<tr class="memdesc:ga0184dcb59f6d85d735503dcaae809727"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for mouse button callbacks. <a href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">More...</a><br /></td></tr>
+<tr class="separator:ga0184dcb59f6d85d735503dcaae809727"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
+<tr class="memdesc:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor position callbacks. <a href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">More...</a><br /></td></tr>
+<tr class="separator:gad6fae41b3ac2e4209aaa87b596c57f68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td></tr>
+<tr class="memdesc:gaa93dc4818ac9ab32532909d53a337cbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for cursor enter/leave callbacks. <a href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">More...</a><br /></td></tr>
+<tr class="separator:gaa93dc4818ac9ab32532909d53a337cbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf656112c33de3efdb227fa58f0134cf5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td></tr>
+<tr class="memdesc:gaf656112c33de3efdb227fa58f0134cf5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for scroll callbacks. <a href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">More...</a><br /></td></tr>
+<tr class="separator:gaf656112c33de3efdb227fa58f0134cf5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5bd751b27b90f865d2ea613533f0453c"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td></tr>
+<tr class="memdesc:ga5bd751b27b90f865d2ea613533f0453c"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for keyboard key callbacks. <a href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">More...</a><br /></td></tr>
+<tr class="separator:ga5bd751b27b90f865d2ea613533f0453c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td></tr>
+<tr class="memdesc:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character callbacks. <a href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">More...</a><br /></td></tr>
+<tr class="separator:ga1ab90a55cf3f58639b893c0f4118cb6e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td></tr>
+<tr class="memdesc:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for Unicode character with modifiers callbacks. <a href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">More...</a><br /></td></tr>
+<tr class="separator:gac3cf64f90b6219c05ac7b7822d5a4b8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaba73c3274062c18723b7f05862d94b2"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td></tr>
+<tr class="memdesc:gaaba73c3274062c18723b7f05862d94b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for path drop callbacks. <a href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">More...</a><br /></td></tr>
+<tr class="separator:gaaba73c3274062c18723b7f05862d94b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa21ad5986ae9a26077a40142efb56243"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>) (int jid, int event)</td></tr>
+<tr class="memdesc:gaa21ad5986ae9a26077a40142efb56243"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for joystick configuration callbacks. <a href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">More...</a><br /></td></tr>
+<tr class="separator:gaa21ad5986ae9a26077a40142efb56243"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga61acfb1f28f751438dd221225c5e725d"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">GLFWgamepadstate</a></td></tr>
+<tr class="memdesc:ga61acfb1f28f751438dd221225c5e725d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamepad input state. <a href="group__input.html#ga61acfb1f28f751438dd221225c5e725d">More...</a><br /></td></tr>
+<tr class="separator:ga61acfb1f28f751438dd221225c5e725d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode)</td></tr>
+<tr class="memdesc:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the value of an input option for the specified window. <a href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">More...</a><br /></td></tr>
+<tr class="separator:gaf5b859dbe19bdf434e42695ea45cc5f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa92336e173da9c8834558b54ee80563b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int mode, int value)</td></tr>
+<tr class="memdesc:gaa92336e173da9c8834558b54ee80563b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an input option for the specified window. <a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">More...</a><br /></td></tr>
+<tr class="separator:gaa92336e173da9c8834558b54ee80563b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> (void)</td></tr>
+<tr class="memdesc:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether raw mouse motion is supported. <a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">More...</a><br /></td></tr>
+<tr class="separator:gae4ee0dbd0d256183e1ea4026d897e1c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a> (int key, int scancode)</td></tr>
+<tr class="memdesc:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout-specific name of the specified printable key. <a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">More...</a><br /></td></tr>
+<tr class="separator:gaeaed62e69c3bd62b7ff8f7b19913ce4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a> (int key)</td></tr>
+<tr class="memdesc:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the platform-specific scancode of the specified key. <a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">More...</a><br /></td></tr>
+<tr class="separator:ga67ddd1b7dcbbaff03e4a76c0ea67103a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key)</td></tr>
+<tr class="memdesc:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a keyboard key for the specified window. <a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">More...</a><br /></td></tr>
+<tr class="separator:gadd341da06bc8d418b4dc3a3518af9ad2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1473feacb5996c01a7a5a33b5066704"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button)</td></tr>
+<tr class="memdesc:gac1473feacb5996c01a7a5a33b5066704"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the last reported state of a mouse button for the specified window. <a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">More...</a><br /></td></tr>
+<tr class="separator:gac1473feacb5996c01a7a5a33b5066704"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double *xpos, double *ypos)</td></tr>
+<tr class="memdesc:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the cursor relative to the content area of the window. <a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">More...</a><br /></td></tr>
+<tr class="separator:ga01d37b6c40133676b9cea60ca1d7c0cc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td></tr>
+<tr class="memdesc:ga04b03af936d906ca123c8f4ee08b39e7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the cursor, relative to the content area of the window. <a href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">More...</a><br /></td></tr>
+<tr class="separator:ga04b03af936d906ca123c8f4ee08b39e7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga556f604f73af156c0db0e97c081373c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> (const <a class="el" href="structGLFWimage.html">GLFWimage</a> *image, int xhot, int yhot)</td></tr>
+<tr class="memdesc:ga556f604f73af156c0db0e97c081373c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a custom cursor. <a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">More...</a><br /></td></tr>
+<tr class="separator:ga556f604f73af156c0db0e97c081373c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> (int shape)</td></tr>
+<tr class="memdesc:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a cursor with a standard shape. <a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">More...</a><br /></td></tr>
+<tr class="separator:gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> (<a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
+<tr class="memdesc:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys a cursor. <a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">More...</a><br /></td></tr>
+<tr class="separator:ga81b952cd1764274d0db7fb3c5a79ba6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *cursor)</td></tr>
+<tr class="memdesc:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor for the window. <a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">More...</a><br /></td></tr>
+<tr class="separator:gad3b4f38c8d5dae036bc8fa959e18343e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1caf18159767e761185e49a3be019f8d"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> callback)</td></tr>
+<tr class="memdesc:ga1caf18159767e761185e49a3be019f8d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the key callback. <a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">More...</a><br /></td></tr>
+<tr class="separator:ga1caf18159767e761185e49a3be019f8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab25c4a220fd8f5717718dbc487828996"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> callback)</td></tr>
+<tr class="memdesc:gab25c4a220fd8f5717718dbc487828996"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character callback. <a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">More...</a><br /></td></tr>
+<tr class="separator:gab25c4a220fd8f5717718dbc487828996"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> callback)</td></tr>
+<tr class="memdesc:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the Unicode character with modifiers callback. <a href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">More...</a><br /></td></tr>
+<tr class="separator:ga0b7f4ad13c2b17435ff13b6dcfb4e43c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ab84420974d812bee700e45284a723c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> callback)</td></tr>
+<tr class="memdesc:ga6ab84420974d812bee700e45284a723c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mouse button callback. <a href="group__input.html#ga6ab84420974d812bee700e45284a723c">More...</a><br /></td></tr>
+<tr class="separator:ga6ab84420974d812bee700e45284a723c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> callback)</td></tr>
+<tr class="memdesc:gac1f879ab7435d54d4d79bb469fe225d7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor position callback. <a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">More...</a><br /></td></tr>
+<tr class="separator:gac1f879ab7435d54d4d79bb469fe225d7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad27f8ad0142c038a281466c0966817d8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> callback)</td></tr>
+<tr class="memdesc:gad27f8ad0142c038a281466c0966817d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the cursor enter/leave callback. <a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">More...</a><br /></td></tr>
+<tr class="separator:gad27f8ad0142c038a281466c0966817d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga571e45a030ae4061f746ed56cb76aede"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> callback)</td></tr>
+<tr class="memdesc:ga571e45a030ae4061f746ed56cb76aede"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the scroll callback. <a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">More...</a><br /></td></tr>
+<tr class="separator:ga571e45a030ae4061f746ed56cb76aede"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> callback)</td></tr>
+<tr class="memdesc:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the path drop callback. <a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">More...</a><br /></td></tr>
+<tr class="separator:gab773f0ee0a07cff77a210cea40bc1f6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed0966cee139d815317f9ffcba64c9f1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> (int jid)</td></tr>
+<tr class="memdesc:gaed0966cee139d815317f9ffcba64c9f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick is present. <a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">More...</a><br /></td></tr>
+<tr class="separator:gaed0966cee139d815317f9ffcba64c9f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeb1c0191d3140a233a682987c61eb408"><td class="memItemLeft" align="right" valign="top">const float *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:gaeb1c0191d3140a233a682987c61eb408"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the values of all axes of the specified joystick. <a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">More...</a><br /></td></tr>
+<tr class="separator:gaeb1c0191d3140a233a682987c61eb408"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all buttons of the specified joystick. <a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">More...</a><br /></td></tr>
+<tr class="separator:ga5ffe34739d3dc97efe432ed2d81d9938"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memItemLeft" align="right" valign="top">const unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a> (int jid, int *count)</td></tr>
+<tr class="memdesc:ga06e660841b3e79c54da4f54a932c5a2c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the state of all hats of the specified joystick. <a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">More...</a><br /></td></tr>
+<tr class="separator:ga06e660841b3e79c54da4f54a932c5a2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> (int jid)</td></tr>
+<tr class="memdesc:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified joystick. <a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">More...</a><br /></td></tr>
+<tr class="separator:gac6a8e769e18e0bcfa9097793fc2c3978"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> (int jid)</td></tr>
+<tr class="memdesc:ga6659411aec3c7fcef27780e2cb2d9600"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the SDL compatible GUID of the specified joystick. <a href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">More...</a><br /></td></tr>
+<tr class="separator:ga6659411aec3c7fcef27780e2cb2d9600"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> (int jid, void *pointer)</td></tr>
+<tr class="memdesc:ga6b2f72d64d636b48a727b437cbb7489e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified joystick. <a href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">More...</a><br /></td></tr>
+<tr class="separator:ga6b2f72d64d636b48a727b437cbb7489e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> (int jid)</td></tr>
+<tr class="memdesc:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified joystick. <a href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">More...</a><br /></td></tr>
+<tr class="separator:ga18cefd7265d1fa04f3fd38a6746db5f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad0f676860f329d80f7e47e9f06a96f00"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> (int jid)</td></tr>
+<tr class="memdesc:gad0f676860f329d80f7e47e9f06a96f00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified joystick has a gamepad mapping. <a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">More...</a><br /></td></tr>
+<tr class="separator:gad0f676860f329d80f7e47e9f06a96f00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a> (<a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> callback)</td></tr>
+<tr class="memdesc:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the joystick configuration callback. <a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">More...</a><br /></td></tr>
+<tr class="separator:ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> (const char *string)</td></tr>
+<tr class="memdesc:gaed5104612f2fa8e66aa6e846652ad00f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds the specified SDL_GameControllerDB gamepad mappings. <a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">More...</a><br /></td></tr>
+<tr class="separator:gaed5104612f2fa8e66aa6e846652ad00f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8aea73a1a25cc6c0486a617019f56728"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> (int jid)</td></tr>
+<tr class="memdesc:ga8aea73a1a25cc6c0486a617019f56728"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the human-readable gamepad name for the specified joystick. <a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">More...</a><br /></td></tr>
+<tr class="separator:ga8aea73a1a25cc6c0486a617019f56728"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadccddea8bce6113fa459de379ddaf051"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> (int jid, <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *state)</td></tr>
+<tr class="memdesc:gadccddea8bce6113fa459de379ddaf051"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the state of the specified joystick remapped as a gamepad. <a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">More...</a><br /></td></tr>
+<tr class="separator:gadccddea8bce6113fa459de379ddaf051"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *string)</td></tr>
+<tr class="memdesc:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the clipboard to the specified string. <a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">More...</a><br /></td></tr>
+<tr class="separator:gaba1f022c5eb07dfac421df34cdcd31dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga71a5b20808ea92193d65c21b82580355"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga71a5b20808ea92193d65c21b82580355"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the clipboard as a string. <a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">More...</a><br /></td></tr>
+<tr class="separator:ga71a5b20808ea92193d65c21b82580355"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> (void)</td></tr>
+<tr class="memdesc:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the GLFW time. <a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">More...</a><br /></td></tr>
+<tr class="separator:gaa6cf4e7a77158a3b8fd00328b1720a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> (double time)</td></tr>
+<tr class="memdesc:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the GLFW time. <a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">More...</a><br /></td></tr>
+<tr class="separator:gaf59589ef6e8b8c8b5ad184b25afd4dc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> (void)</td></tr>
+<tr class="memdesc:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current value of the raw timer. <a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">More...</a><br /></td></tr>
+<tr class="separator:ga09b2bd37d328e0b9456c7ec575cc26aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3289ee876572f6e91f06df3a24824443"><td class="memItemLeft" align="right" valign="top">uint64_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> (void)</td></tr>
+<tr class="memdesc:ga3289ee876572f6e91f06df3a24824443"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the frequency, in Hz, of the raw timer. <a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">More...</a><br /></td></tr>
+<tr class="separator:ga3289ee876572f6e91f06df3a24824443"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="gada11d965c4da13090ad336e030e4d11f" name="gada11d965c4da13090ad336e030e4d11f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gada11d965c4da13090ad336e030e4d11f">&#9670;&nbsp;</a></span>GLFW_RELEASE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RELEASE&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The key or mouse button was released. </p>
+
+</div>
+</div>
+<a id="ga2485743d0b59df3791c45951c4195265" name="ga2485743d0b59df3791c45951c4195265"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2485743d0b59df3791c45951c4195265">&#9670;&nbsp;</a></span>GLFW_PRESS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_PRESS&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The key or mouse button was pressed. </p>
+
+</div>
+</div>
+<a id="gac96fd3b9fc66c6f0eebaf6532595338f" name="gac96fd3b9fc66c6f0eebaf6532595338f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac96fd3b9fc66c6f0eebaf6532595338f">&#9670;&nbsp;</a></span>GLFW_REPEAT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_REPEAT&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The key was held down until it repeated. </p>
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga89261ae18c75e863aaf2656ecdd238f4" name="ga89261ae18c75e863aaf2656ecdd238f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga89261ae18c75e863aaf2656ecdd238f4">&#9670;&nbsp;</a></span>GLFWcursor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Opaque cursor object.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga0184dcb59f6d85d735503dcaae809727" name="ga0184dcb59f6d85d735503dcaae809727"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0184dcb59f6d85d735503dcaae809727">&#9670;&nbsp;</a></span>GLFWmousebuttonfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWmousebuttonfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int button, int action, int mods)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for mouse button callback functions. A mouse button callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">button</td><td>The <a class="el" href="group__buttons.html">mouse button</a> that was pressed or released. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">action</td><td>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. Future releases may add more actions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle and modifier mask parameters. </dd></dl>
+
+</div>
+</div>
+<a id="gad6fae41b3ac2e4209aaa87b596c57f68" name="gad6fae41b3ac2e4209aaa87b596c57f68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad6fae41b3ac2e4209aaa87b596c57f68">&#9670;&nbsp;</a></span>GLFWcursorposfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWcursorposfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xpos, double ypos)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for cursor position callbacks. A cursor position callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The new cursor x-coordinate, relative to the left edge of the content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The new cursor y-coordinate, relative to the top edge of the content area.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>GLFWmouseposfun</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gaa93dc4818ac9ab32532909d53a337cbe" name="gaa93dc4818ac9ab32532909d53a337cbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa93dc4818ac9ab32532909d53a337cbe">&#9670;&nbsp;</a></span>GLFWcursorenterfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWcursorenterfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int entered)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for cursor enter/leave callbacks. A cursor enter/leave callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">entered</td><td><code>GLFW_TRUE</code> if the cursor entered the window's content area, or <code>GLFW_FALSE</code> if it left it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaf656112c33de3efdb227fa58f0134cf5" name="gaf656112c33de3efdb227fa58f0134cf5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf656112c33de3efdb227fa58f0134cf5">&#9670;&nbsp;</a></span>GLFWscrollfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWscrollfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, double xoffset, double yoffset)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for scroll callbacks. A scroll callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xoffset</td><td>The scroll offset along the x-axis. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">yoffset</td><td>The scroll offset along the y-axis.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#scrolling">Scroll input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>GLFWmousewheelfun</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga5bd751b27b90f865d2ea613533f0453c" name="ga5bd751b27b90f865d2ea613533f0453c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5bd751b27b90f865d2ea613533f0453c">&#9670;&nbsp;</a></span>GLFWkeyfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWkeyfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int key, int scancode, int action, int mods)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for keyboard key callbacks. A keyboard key callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The <a class="el" href="group__keys.html">keyboard key</a> that was pressed or released. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">scancode</td><td>The system-specific scancode of the key. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">action</td><td><code>GLFW_PRESS</code>, <code>GLFW_RELEASE</code> or <code>GLFW_REPEAT</code>. Future releases may add more actions. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle, scancode and modifier mask parameters. </dd></dl>
+
+</div>
+</div>
+<a id="ga1ab90a55cf3f58639b893c0f4118cb6e" name="ga1ab90a55cf3f58639b893c0f4118cb6e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1ab90a55cf3f58639b893c0f4118cb6e">&#9670;&nbsp;</a></span>GLFWcharfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWcharfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for Unicode character callbacks. A Unicode character callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">codepoint</td><td>The Unicode code point of the character.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.4. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gac3cf64f90b6219c05ac7b7822d5a4b8f" name="gac3cf64f90b6219c05ac7b7822d5a4b8f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac3cf64f90b6219c05ac7b7822d5a4b8f">&#9670;&nbsp;</a></span>GLFWcharmodsfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWcharmodsfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, unsigned int codepoint, int mods)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for Unicode character with modifiers callbacks. It is called for each input character, regardless of what modifier keys are held down. A Unicode character with modifiers callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">codepoint</td><td>The Unicode code point of the character. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mods</td><td>Bit field describing which <a class="el" href="group__mods.html">modifier keys</a> were held down.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a></dd></dl>
+<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000001">Deprecated:</a></b></dt><dd>Scheduled for removal in version 4.0.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gaaba73c3274062c18723b7f05862d94b2" name="gaaba73c3274062c18723b7f05862d94b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaaba73c3274062c18723b7f05862d94b2">&#9670;&nbsp;</a></span>GLFWdropfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWdropfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int path_count, const char *paths[])</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for path drop callbacks. A path drop callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[])</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that received the event. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">path_count</td><td>The number of dropped paths. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">paths</td><td>The UTF-8 encoded file and/or directory path names.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The path array and its strings are valid until the callback function returns.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gaa21ad5986ae9a26077a40142efb56243" name="gaa21ad5986ae9a26077a40142efb56243"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa21ad5986ae9a26077a40142efb56243">&#9670;&nbsp;</a></span>GLFWjoystickfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWjoystickfun) (int jid, int event)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for joystick configuration callbacks. A joystick configuration callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick that was connected or disconnected. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>One of <code>GLFW_CONNECTED</code> or <code>GLFW_DISCONNECTED</code>. Future releases may add more events.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_event">Joystick configuration changes</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga61acfb1f28f751438dd221225c5e725d" name="ga61acfb1f28f751438dd221225c5e725d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga61acfb1f28f751438dd221225c5e725d">&#9670;&nbsp;</a></span>GLFWgamepadstate</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This describes the input state of a gamepad.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaf5b859dbe19bdf434e42695ea45cc5f4" name="gaf5b859dbe19bdf434e42695ea45cc5f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf5b859dbe19bdf434e42695ea45cc5f4">&#9670;&nbsp;</a></span>glfwGetInputMode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetInputMode </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>mode</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the value of an input option for the specified window. The mode must be one of <a class="el" href="input_guide.html#GLFW_CURSOR">GLFW_CURSOR</a>, <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a>, <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> or <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>One of <code>GLFW_CURSOR</code>, <code>GLFW_STICKY_KEYS</code>, <code>GLFW_STICKY_MOUSE_BUTTONS</code>, <code>GLFW_LOCK_KEY_MODS</code> or <code>GLFW_RAW_MOUSE_MOTION</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaa92336e173da9c8834558b54ee80563b" name="gaa92336e173da9c8834558b54ee80563b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa92336e173da9c8834558b54ee80563b">&#9670;&nbsp;</a></span>glfwSetInputMode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetInputMode </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>mode</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets an input mode option for the specified window. The mode must be one of <a class="el" href="input_guide.html#GLFW_CURSOR">GLFW_CURSOR</a>, <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a>, <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> or <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a>.</p>
+<p >If the mode is <code>GLFW_CURSOR</code>, the value must be one of the following cursor modes:</p><ul>
+<li><code>GLFW_CURSOR_NORMAL</code> makes the cursor visible and behaving normally.</li>
+<li><code>GLFW_CURSOR_HIDDEN</code> makes the cursor invisible when it is over the content area of the window but does not restrict the cursor from leaving.</li>
+<li><code>GLFW_CURSOR_DISABLED</code> hides and grabs the cursor, providing virtual and unlimited cursor movement. This is useful for implementing for example 3D camera controls.</li>
+</ul>
+<p >If the mode is <code>GLFW_STICKY_KEYS</code>, the value must be either <code>GLFW_TRUE</code> to enable sticky keys, or <code>GLFW_FALSE</code> to disable it. If sticky keys are enabled, a key press will ensure that <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> returns <code>GLFW_PRESS</code> 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.</p>
+<p >If the mode is <code>GLFW_STICKY_MOUSE_BUTTONS</code>, the value must be either <code>GLFW_TRUE</code> to enable sticky mouse buttons, or <code>GLFW_FALSE</code> to disable it. If sticky mouse buttons are enabled, a mouse button press will ensure that <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a> returns <code>GLFW_PRESS</code> 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.</p>
+<p >If the mode is <code>GLFW_LOCK_KEY_MODS</code>, the value must be either <code>GLFW_TRUE</code> to enable lock key modifier bits, or <code>GLFW_FALSE</code> to disable them. If enabled, callbacks that receive modifier bits will also have the <a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a> bit set when the event was generated with Caps Lock on, and the <a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a> bit when Num Lock was on.</p>
+<p >If the mode is <code>GLFW_RAW_MOUSE_MOTION</code>, the value must be either <code>GLFW_TRUE</code> to enable raw (unscaled and unaccelerated) mouse motion when the cursor is disabled, or <code>GLFW_FALSE</code> to disable it. If raw motion is not supported, attempting to set this will emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>. Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check for support.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose input mode to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">mode</td><td>One of <code>GLFW_CURSOR</code>, <code>GLFW_STICKY_KEYS</code>, <code>GLFW_STICKY_MOUSE_BUTTONS</code>, <code>GLFW_LOCK_KEY_MODS</code> or <code>GLFW_RAW_MOUSE_MOTION</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the specified input mode.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4">glfwGetInputMode</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwEnable</code> and <code>glfwDisable</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gae4ee0dbd0d256183e1ea4026d897e1c2" name="gae4ee0dbd0d256183e1ea4026d897e1c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae4ee0dbd0d256183e1ea4026d897e1c2">&#9670;&nbsp;</a></span>glfwRawMouseMotionSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwRawMouseMotionSupported </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether raw mouse motion is supported on the current system. This status does not change after GLFW has been initialized so you only need to check this once. If you attempt to enable raw motion on a system that does not support it, <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> will be emitted.</p>
+<p >Raw mouse motion is closer to the actual motion of the mouse across a surface. It is not affected by the scaling and acceleration applied to the motion of the desktop cursor. That processing is suitable for a cursor while raw motion is better for controlling for example a 3D camera. Because of this, raw mouse motion is only provided when the cursor is disabled.</p>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if raw mouse motion is supported on the current machine, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#raw_mouse_motion">Raw mouse motion</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gaeaed62e69c3bd62b7ff8f7b19913ce4f" name="gaeaed62e69c3bd62b7ff8f7b19913ce4f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeaed62e69c3bd62b7ff8f7b19913ce4f">&#9670;&nbsp;</a></span>glfwGetKeyName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetKeyName </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>scancode</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the name of the specified printable key, encoded as UTF-8. This is typically the character that key would produce without any modifier keys, intended for displaying key bindings to the user. For dead keys, it is typically the diacritic it would add to a character.</p>
+<p ><b>Do not use this function</b> for <a class="el" href="input_guide.html#input_char">text input</a>. You will break text input for many languages even if it happens to work for yours.</p>
+<p >If the key is <code>GLFW_KEY_UNKNOWN</code>, the scancode is used to identify the key, otherwise the scancode is ignored. If you specify a non-printable key, or <code>GLFW_KEY_UNKNOWN</code> and a scancode that maps to a non-printable key, this function returns <code>NULL</code> but does not emit an error.</p>
+<p >This behavior allows you to always pass in the arguments in the <a class="el" href="input_guide.html#input_key">key callback</a> without modification.</p>
+<p >The printable keys are:</p><ul>
+<li><code>GLFW_KEY_APOSTROPHE</code></li>
+<li><code>GLFW_KEY_COMMA</code></li>
+<li><code>GLFW_KEY_MINUS</code></li>
+<li><code>GLFW_KEY_PERIOD</code></li>
+<li><code>GLFW_KEY_SLASH</code></li>
+<li><code>GLFW_KEY_SEMICOLON</code></li>
+<li><code>GLFW_KEY_EQUAL</code></li>
+<li><code>GLFW_KEY_LEFT_BRACKET</code></li>
+<li><code>GLFW_KEY_RIGHT_BRACKET</code></li>
+<li><code>GLFW_KEY_BACKSLASH</code></li>
+<li><code>GLFW_KEY_WORLD_1</code></li>
+<li><code>GLFW_KEY_WORLD_2</code></li>
+<li><code>GLFW_KEY_0</code> to <code>GLFW_KEY_9</code></li>
+<li><code>GLFW_KEY_A</code> to <code>GLFW_KEY_Z</code></li>
+<li><code>GLFW_KEY_KP_0</code> to <code>GLFW_KEY_KP_9</code></li>
+<li><code>GLFW_KEY_KP_DECIMAL</code></li>
+<li><code>GLFW_KEY_KP_DIVIDE</code></li>
+<li><code>GLFW_KEY_KP_MULTIPLY</code></li>
+<li><code>GLFW_KEY_KP_SUBTRACT</code></li>
+<li><code>GLFW_KEY_KP_ADD</code></li>
+<li><code>GLFW_KEY_KP_EQUAL</code></li>
+</ul>
+<p >Names for printable keys depend on keyboard layout, while names for non-printable keys are the same across layouts but depend on the application language and should be localized along with other user interface text.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The key to query, or <code>GLFW_KEY_UNKNOWN</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">scancode</td><td>The scancode of the key to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded, layout-specific name of the key, or <code>NULL</code>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The contents of the returned string may change when a keyboard layout change event is received.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key_name">Key names</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga67ddd1b7dcbbaff03e4a76c0ea67103a" name="ga67ddd1b7dcbbaff03e4a76c0ea67103a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga67ddd1b7dcbbaff03e4a76c0ea67103a">&#9670;&nbsp;</a></span>glfwGetKeyScancode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetKeyScancode </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the platform-specific scancode of the specified key.</p>
+<p >If the key is <code>GLFW_KEY_UNKNOWN</code> or does not exist on the keyboard this method will return <code>-1</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>Any <a class="el" href="group__keys.html">named key</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The platform-specific scancode for the key, or <code>-1</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gadd341da06bc8d418b4dc3a3518af9ad2" name="gadd341da06bc8d418b4dc3a3518af9ad2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadd341da06bc8d418b4dc3a3518af9ad2">&#9670;&nbsp;</a></span>glfwGetKey()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetKey </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>key</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the last state reported for the specified key to the specified window. The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. The action <code>GLFW_REPEAT</code> is only reported to the key callback.</p>
+<p >If the <a class="el" href="input_guide.html#GLFW_STICKY_KEYS">GLFW_STICKY_KEYS</a> input mode is enabled, this function returns <code>GLFW_PRESS</code> the first time you call it for a key that was pressed, even if that key has already been released.</p>
+<p >The key functions deal with physical keys, with <a class="el" href="group__keys.html">key tokens</a> named after their use on the standard US keyboard layout. If you want to input text, use the Unicode character callback instead.</p>
+<p >The <a class="el" href="group__mods.html">modifier key bit masks</a> are not key tokens and cannot be used with this function.</p>
+<p ><b>Do not use this function</b> to implement <a class="el" href="input_guide.html#input_char">text input</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">key</td><td>The desired <a class="el" href="group__keys.html">keyboard key</a>. <code>GLFW_KEY_UNKNOWN</code> is not a valid key for this function. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gac1473feacb5996c01a7a5a33b5066704" name="gac1473feacb5996c01a7a5a33b5066704"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac1473feacb5996c01a7a5a33b5066704">&#9670;&nbsp;</a></span>glfwGetMouseButton()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetMouseButton </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>button</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the last state reported for the specified mouse button to the specified window. The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >If the <a class="el" href="input_guide.html#GLFW_STICKY_MOUSE_BUTTONS">GLFW_STICKY_MOUSE_BUTTONS</a> input mode is enabled, this function returns <code>GLFW_PRESS</code> the first time you call it for a mouse button that was pressed, even if that mouse button has already been released.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">button</td><td>The desired <a class="el" href="group__buttons.html">mouse button</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>One of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga01d37b6c40133676b9cea60ca1d7c0cc" name="ga01d37b6c40133676b9cea60ca1d7c0cc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga01d37b6c40133676b9cea60ca1d7c0cc">&#9670;&nbsp;</a></span>glfwGetCursorPos()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetCursorPos </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double *&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double *&#160;</td>
+ <td class="paramname"><em>ypos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the position of the cursor, in screen coordinates, relative to the upper-left corner of the content area of the specified window.</p>
+<p >If the cursor is disabled (with <code>GLFW_CURSOR_DISABLED</code>) then the cursor position is unbounded and limited only by the minimum and maximum values of a <code>double</code>.</p>
+<p >The coordinate can be converted to their integer equivalents with the <code>floor</code> function. Casting directly to an integer type works for positive coordinates, but fails for negative ones.</p>
+<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the cursor x-coordinate, relative to the left edge of the content area, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the cursor y-coordinate, relative to the to top edge of the content area, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetMousePos</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga04b03af936d906ca123c8f4ee08b39e7" name="ga04b03af936d906ca123c8f4ee08b39e7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga04b03af936d906ca123c8f4ee08b39e7">&#9670;&nbsp;</a></span>glfwSetCursorPos()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetCursorPos </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>ypos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the position, in screen coordinates, of the cursor relative to the upper-left corner of the content area of the specified window. The window must have input focus. If the window does not have input focus when this function is called, it fails silently.</p>
+<p ><b>Do not use this function</b> to implement things like camera controls. GLFW already provides the <code>GLFW_CURSOR_DISABLED</code> cursor mode that hides the cursor, transparently re-centers it and provides unconstrained cursor motion. See <a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> for more information.</p>
+<p >If the cursor mode is <code>GLFW_CURSOR_DISABLED</code> then the cursor position is unconstrained and limited only by the minimum and maximum values of a <code>double</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The desired window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The desired x-coordinate, relative to the left edge of the content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The desired y-coordinate, relative to the top edge of the content area.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> This function will only work when the cursor mode is <code>GLFW_CURSOR_DISABLED</code>, otherwise it will do nothing.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMousePos</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga556f604f73af156c0db0e97c081373c3" name="ga556f604f73af156c0db0e97c081373c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga556f604f73af156c0db0e97c081373c3">&#9670;&nbsp;</a></span>glfwCreateCursor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> * glfwCreateCursor </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="structGLFWimage.html">GLFWimage</a> *&#160;</td>
+ <td class="paramname"><em>image</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>xhot</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>yhot</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Creates a new custom cursor image that can be set for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>. The cursor can be destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>. Any remaining cursors are destroyed by <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
+<p >The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. They are arranged canonically as packed sequential rows, starting from the top-left corner.</p>
+<p >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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">image</td><td>The desired cursor image. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xhot</td><td>The desired x-coordinate, in pixels, of the cursor hotspot. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">yhot</td><td>The desired y-coordinate, in pixels, of the cursor hotspot. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The handle of the created cursor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified image data is copied before this function returns.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gaf2fb2eb2c9dd842d1cef8a34e3c6403e" name="gaf2fb2eb2c9dd842d1cef8a34e3c6403e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">&#9670;&nbsp;</a></span>glfwCreateStandardCursor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> * glfwCreateStandardCursor </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>shape</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Returns a cursor with a <a class="el" href="group__shapes.html">standard shape</a>, that can be set for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">shape</td><td>One of the <a class="el" href="group__shapes.html">standard shapes</a>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>A new cursor ready to use or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga81b952cd1764274d0db7fb3c5a79ba6a" name="ga81b952cd1764274d0db7fb3c5a79ba6a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga81b952cd1764274d0db7fb3c5a79ba6a">&#9670;&nbsp;</a></span>glfwDestroyCursor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwDestroyCursor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td>
+ <td class="paramname"><em>cursor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function destroys a cursor previously created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>. Any remaining cursors will be destroyed by <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
+<p >If the specified cursor is current for any window, that window will be reverted to the default cursor. This does not affect the cursor mode.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>The cursor object to destroy.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gad3b4f38c8d5dae036bc8fa959e18343e" name="gad3b4f38c8d5dae036bc8fa959e18343e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad3b4f38c8d5dae036bc8fa959e18343e">&#9670;&nbsp;</a></span>glfwSetCursor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetCursor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> *&#160;</td>
+ <td class="paramname"><em>cursor</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the cursor image to be used when the cursor is over the content area of the specified window. The set cursor will only be visible when the <a class="el" href="input_guide.html#cursor_mode">cursor mode</a> of the window is <code>GLFW_CURSOR_NORMAL</code>.</p>
+<p >On some platforms, the set cursor may not be visible unless the window also has input focus.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the cursor for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">cursor</td><td>The cursor to set, or <code>NULL</code> to switch back to the default arrow cursor.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga1caf18159767e761185e49a3be019f8d" name="ga1caf18159767e761185e49a3be019f8d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1caf18159767e761185e49a3be019f8d">&#9670;&nbsp;</a></span>glfwSetKeyCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a> glfwSetKeyCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">GLFWkeyfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the key callback of the specified window, which is called when a key is pressed, repeated or released.</p>
+<p >The key functions deal with physical keys, with layout independent <a class="el" href="group__keys.html">key tokens</a> named after their values in the standard US keyboard layout. If you want to input text, use the <a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">character callback</a> instead.</p>
+<p >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 <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">window focus callback</a> has been called.</p>
+<p >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 <code>key</code> set to <code>GLFW_KEY_UNKNOWN</code>, their state is not saved and so it cannot be queried with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>.</p>
+<p >Sometimes GLFW needs to generate synthetic key events, in which case the scancode may be zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new key callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_key">Key input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="gab25c4a220fd8f5717718dbc487828996" name="gab25c4a220fd8f5717718dbc487828996"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab25c4a220fd8f5717718dbc487828996">&#9670;&nbsp;</a></span>glfwSetCharCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a> glfwSetCharCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">GLFWcharfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the character callback of the specified window, which is called when a Unicode character is input.</p>
+<p >The character callback is intended for Unicode text input. As it deals with characters, it is keyboard layout dependent, whereas the <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">key callback</a> 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.</p>
+<p >The character callback behaves as system text input normally does and will not be called if modifier keys are held down that would prevent normal text input on that platform, for example a Super (Command) key on macOS or Alt key on Windows.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.4. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="ga0b7f4ad13c2b17435ff13b6dcfb4e43c" name="ga0b7f4ad13c2b17435ff13b6dcfb4e43c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">&#9670;&nbsp;</a></span>glfwSetCharModsCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a> glfwSetCharModsCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">GLFWcharmodsfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >The character with modifiers callback is intended for implementing custom Unicode character input. For regular Unicode text input, see the <a class="el" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">character callback</a>. 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 <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">key callback</a> instead.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint, <span class="keywordtype">int</span> mods)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f">function pointer type</a>.</dd></dl>
+<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000002">Deprecated:</a></b></dt><dd>Scheduled for removal in version 4.0.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga6ab84420974d812bee700e45284a723c" name="ga6ab84420974d812bee700e45284a723c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6ab84420974d812bee700e45284a723c">&#9670;&nbsp;</a></span>glfwSetMouseButtonCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a> glfwSetMouseButtonCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">GLFWmousebuttonfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the mouse button callback of the specified window, which is called when a mouse button is pressed or released.</p>
+<p >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 <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">window focus callback</a> has been called.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_mouse_button">Mouse button input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="gac1f879ab7435d54d4d79bb469fe225d7" name="gac1f879ab7435d54d4d79bb469fe225d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac1f879ab7435d54d4d79bb469fe225d7">&#9670;&nbsp;</a></span>glfwSetCursorPosCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> glfwSetCursorPosCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the cursor position callback of the specified window, which is called when the cursor is moved. The callback is provided with the position, in screen coordinates, relative to the upper-left corner of the content area of the window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos);</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_pos">Cursor position</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMousePosCallback</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gad27f8ad0142c038a281466c0966817d8" name="gad27f8ad0142c038a281466c0966817d8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad27f8ad0142c038a281466c0966817d8">&#9670;&nbsp;</a></span>glfwSetCursorEnterCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a> glfwSetCursorEnterCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">GLFWcursorenterfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the cursor boundary crossing callback of the specified window, which is called when the cursor enters or leaves the content area of the window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaa93dc4818ac9ab32532909d53a337cbe">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga571e45a030ae4061f746ed56cb76aede" name="ga571e45a030ae4061f746ed56cb76aede"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga571e45a030ae4061f746ed56cb76aede">&#9670;&nbsp;</a></span>glfwSetScrollCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> glfwSetScrollCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the scroll callback of the specified window, which is called when a scrolling device is used, such as a mouse wheel or scrolling area of a touchpad.</p>
+<p >The scroll callback receives all scrolling input, like that from a mouse wheel or a touchpad scrolling area.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new scroll callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#scrolling">Scroll input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwSetMouseWheelCallback</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gab773f0ee0a07cff77a210cea40bc1f6b" name="gab773f0ee0a07cff77a210cea40bc1f6b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab773f0ee0a07cff77a210cea40bc1f6b">&#9670;&nbsp;</a></span>glfwSetDropCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a> glfwSetDropCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">GLFWdropfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the path drop callback of the specified window, which is called when one or more dragged paths are dropped on the window.</p>
+<p >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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new file drop callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> path_count, <span class="keyword">const</span> <span class="keywordtype">char</span>* paths[])</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaaba73c3274062c18723b7f05862d94b2">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> File drop is currently unimplemented.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gaed0966cee139d815317f9ffcba64c9f1" name="gaed0966cee139d815317f9ffcba64c9f1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaed0966cee139d815317f9ffcba64c9f1">&#9670;&nbsp;</a></span>glfwJoystickPresent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwJoystickPresent </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether the specified joystick is present.</p>
+<p >There is no need to call this function before other functions that accept a joystick ID, as they all check for presence before performing any other work.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the joystick is present, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick">Joystick input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetJoystickParam</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gaeb1c0191d3140a233a682987c61eb408" name="gaeb1c0191d3140a233a682987c61eb408"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeb1c0191d3140a233a682987c61eb408">&#9670;&nbsp;</a></span>glfwGetJoystickAxes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const float * glfwGetJoystickAxes </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of axis values in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of axis values, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_axis">Joystick axis states</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetJoystickPos</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga5ffe34739d3dc97efe432ed2d81d9938" name="ga5ffe34739d3dc97efe432ed2d81d9938"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5ffe34739d3dc97efe432ed2d81d9938">&#9670;&nbsp;</a></span>glfwGetJoystickButtons()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const unsigned char * glfwGetJoystickButtons </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the state of all buttons of the specified joystick. Each element in the array is either <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, the button array also includes all hats, each represented as four buttons. The hats are in the same order as returned by <b>glfwGetJoystickHats</b> and are in the order <em>up</em>, <em>right</em>, <em>down</em> and <em>left</em>. To disable these extra buttons, set the <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> init hint before initialization.</p>
+<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of button states in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of button states, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_button">Joystick button states</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.2. <b>GLFW 3:</b> Changed to return a dynamic array. </dd></dl>
+
+</div>
+</div>
+<a id="ga06e660841b3e79c54da4f54a932c5a2c" name="ga06e660841b3e79c54da4f54a932c5a2c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga06e660841b3e79c54da4f54a932c5a2c">&#9670;&nbsp;</a></span>glfwGetJoystickHats()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const unsigned char * glfwGetJoystickHats </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the state of all hats of the specified joystick. Each element in the array is one of the following values:</p>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Value </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_CENTERED</code> </td><td class="markdownTableBodyNone">0 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_UP</code> </td><td class="markdownTableBodyNone">1 </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> </td><td class="markdownTableBodyNone">2 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_DOWN</code> </td><td class="markdownTableBodyNone">4 </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> </td><td class="markdownTableBodyNone">8 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_UP</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_UP</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
+</table>
+<p >The diagonal directions are bitwise combinations of the primary (up, right, down and left) directions and you can test for these individually by ANDing it with the corresponding direction.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (hats[2] &amp; <a class="code hl_define" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// State of hat 2 could be right-up, right or right-down</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__hat__state_html_ga252586e3bbde75f4b0e07ad3124867f5"><div class="ttname"><a href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></div><div class="ttdeci">#define GLFW_HAT_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:357</div></div>
+</div><!-- fragment --><p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of hat states in the returned array. This is set to zero if the joystick is not present or an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of hat states, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_hat">Joystick hat states</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gac6a8e769e18e0bcfa9097793fc2c3978" name="gac6a8e769e18e0bcfa9097793fc2c3978"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac6a8e769e18e0bcfa9097793fc2c3978">&#9670;&nbsp;</a></span>glfwGetJoystickName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetJoystickName </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the joystick, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_name">Joystick name</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga6659411aec3c7fcef27780e2cb2d9600" name="ga6659411aec3c7fcef27780e2cb2d9600"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6659411aec3c7fcef27780e2cb2d9600">&#9670;&nbsp;</a></span>glfwGetJoystickGUID()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetJoystickGUID </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the SDL compatible GUID, as a UTF-8 encoded hexadecimal string, of the specified joystick. The returned string is allocated and freed by GLFW. You should not free it yourself.</p>
+<p >The GUID is what connects a joystick to a gamepad mapping. A connected joystick will always have a GUID even if there is no gamepad mapping assigned to it.</p>
+<p >If the specified joystick is not present this function will return <code>NULL</code> but will not generate an error. This can be used instead of first calling <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<p >The GUID uses the format introduced in SDL 2.0.5. This GUID tries to uniquely identify the make and model of a joystick but does not identify a specific unit, e.g. all wired Xbox 360 controllers will have the same GUID on that platform. The GUID for a unit may vary between platforms depending on what hardware information the platform specific APIs provide.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded GUID of the joystick, or <code>NULL</code> if the joystick is not present or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga6b2f72d64d636b48a727b437cbb7489e" name="ga6b2f72d64d636b48a727b437cbb7489e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6b2f72d64d636b48a727b437cbb7489e">&#9670;&nbsp;</a></span>glfwSetJoystickUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetJoystickUserPointer </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>pointer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the user-defined pointer of the specified joystick. The current value is retained until the joystick is disconnected. The initial value is <code>NULL</code>.</p>
+<p >This function may be called from the joystick callback, even for a joystick that is being disconnected.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick whose pointer to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga18cefd7265d1fa04f3fd38a6746db5f3" name="ga18cefd7265d1fa04f3fd38a6746db5f3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga18cefd7265d1fa04f3fd38a6746db5f3">&#9670;&nbsp;</a></span>glfwGetJoystickUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void * glfwGetJoystickUserPointer </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current value of the user-defined pointer of the specified joystick. The initial value is <code>NULL</code>.</p>
+<p >This function may be called from the joystick callback, even for a joystick that is being disconnected.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The joystick whose pointer to return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gad0f676860f329d80f7e47e9f06a96f00" name="gad0f676860f329d80f7e47e9f06a96f00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad0f676860f329d80f7e47e9f06a96f00">&#9670;&nbsp;</a></span>glfwJoystickIsGamepad()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwJoystickIsGamepad </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether the specified joystick is both present and has a gamepad mapping.</p>
+<p >If the specified joystick is present but does not have a gamepad mapping this function will return <code>GLFW_FALSE</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check if a joystick is present regardless of whether it has a mapping.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if a joystick is both present and has a gamepad mapping, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c" name="ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">&#9670;&nbsp;</a></span>glfwSetJoystickCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a> glfwSetJoystickCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">GLFWjoystickfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the joystick configuration callback, or removes the currently set callback. This is called when a joystick is connected to or disconnected from the system.</p>
+<p >For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the <a class="el" href="input_guide.html#events">event processing</a> functions. Joystick disconnection may also be detected and the callback called by joystick functions. The function will then return whatever it returns if the joystick is not present.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__input.html#gaa21ad5986ae9a26077a40142efb56243">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#joystick_event">Joystick configuration changes</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gaed5104612f2fa8e66aa6e846652ad00f" name="gaed5104612f2fa8e66aa6e846652ad00f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaed5104612f2fa8e66aa6e846652ad00f">&#9670;&nbsp;</a></span>glfwUpdateGamepadMappings()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwUpdateGamepadMappings </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>string</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function parses the specified ASCII encoded string and updates the internal list with any gamepad mappings it finds. This string may contain either a single gamepad mapping or many mappings separated by newlines. The parser supports the full format of the <code>gamecontrollerdb.txt</code> source file including empty lines and comments.</p>
+<p >See <a class="el" href="input_guide.html#gamepad_mapping">Gamepad mappings</a> for a description of the format.</p>
+<p >If there is already a gamepad mapping for a given GUID in the internal list, it will be replaced by the one passed to this function. If the library is terminated and re-initialized the internal list will revert to the built-in default.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>The string containing the gamepad mappings. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga8aea73a1a25cc6c0486a617019f56728" name="ga8aea73a1a25cc6c0486a617019f56728"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8aea73a1a25cc6c0486a617019f56728">&#9670;&nbsp;</a></span>glfwGetGamepadName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetGamepadName </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the human-readable name of the gamepad from the gamepad mapping assigned to the specified joystick.</p>
+<p >If the specified joystick is not present or does not have a gamepad mapping this function will return <code>NULL</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check whether it is present regardless of whether it has a mapping.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the gamepad, or <code>NULL</code> if the joystick is not present, does not have a mapping or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the specified joystick is disconnected, the gamepad mappings are updated or the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gadccddea8bce6113fa459de379ddaf051" name="gadccddea8bce6113fa459de379ddaf051"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadccddea8bce6113fa459de379ddaf051">&#9670;&nbsp;</a></span>glfwGetGamepadState()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetGamepadState </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>jid</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> *&#160;</td>
+ <td class="paramname"><em>state</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the state of the specified joystick remapped to an Xbox-like gamepad.</p>
+<p >If the specified joystick is not present or does not have a gamepad mapping this function will return <code>GLFW_FALSE</code> but will not generate an error. Call <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> to check whether it is present regardless of whether it has a mapping.</p>
+<p >The Guide button may not be available for input as it is often hooked by the system or the Steam client.</p>
+<p >Not all devices have all the buttons or axes provided by <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a>. Unavailable buttons and axes will always report <code>GLFW_RELEASE</code> and 0.0 respectively.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">jid</td><td>The <a class="el" href="group__joysticks.html">joystick</a> to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">state</td><td>The gamepad input state of the joystick. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if no joystick is connected, it has no gamepad mapping or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gaba1f022c5eb07dfac421df34cdcd31dd" name="gaba1f022c5eb07dfac421df34cdcd31dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaba1f022c5eb07dfac421df34cdcd31dd">&#9670;&nbsp;</a></span>glfwSetClipboardString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetClipboardString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>string</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the system clipboard to the specified, UTF-8 encoded string.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>Deprecated. Any valid window or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>A UTF-8 encoded string.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga71a5b20808ea92193d65c21b82580355" name="ga71a5b20808ea92193d65c21b82580355"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga71a5b20808ea92193d65c21b82580355">&#9670;&nbsp;</a></span>glfwGetClipboardString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetClipboardString </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the contents of the system clipboard, if it contains or is convertible to a UTF-8 encoded string. If the clipboard is empty or if its contents cannot be converted, <code>NULL</code> is returned and a <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> error is generated.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>Deprecated. Any valid window or <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The contents of the clipboard as a UTF-8 encoded string, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> or <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>, or until the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaa6cf4e7a77158a3b8fd00328b1720a4a" name="gaa6cf4e7a77158a3b8fd00328b1720a4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa6cf4e7a77158a3b8fd00328b1720a4a">&#9670;&nbsp;</a></span>glfwGetTime()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">double glfwGetTime </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current GLFW time, in seconds. Unless the time has been set using <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> it measures time elapsed since GLFW was initialized.</p>
+<p >This function and <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a> are helper functions on top of <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> and <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
+<p >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.</p>
+<dl class="section return"><dt>Returns</dt><dd>The current time, in seconds, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Reading and writing of the internal base time is not atomic, so it needs to be externally synchronized with calls to <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaf59589ef6e8b8c8b5ad184b25afd4dc0" name="gaf59589ef6e8b8c8b5ad184b25afd4dc0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf59589ef6e8b8c8b5ad184b25afd4dc0">&#9670;&nbsp;</a></span>glfwSetTime()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetTime </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>time</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the current GLFW time, in seconds. The value must be a positive finite number less than or equal to 18446744073.0, which is approximately 584.5 years.</p>
+<p >This function and <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a> are helper functions on top of <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a> and <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">time</td><td>The new value, in seconds.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The upper limit of GLFW time is calculated as floor((2<sup>64</sup> - 1) / 10<sup>9</sup>) and is due to implementations storing nanoseconds in 64 bits. The limit may be increased in the future.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Reading and writing of the internal base time is not atomic, so it needs to be externally synchronized with calls to <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga09b2bd37d328e0b9456c7ec575cc26aa" name="ga09b2bd37d328e0b9456c7ec575cc26aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga09b2bd37d328e0b9456c7ec575cc26aa">&#9670;&nbsp;</a></span>glfwGetTimerValue()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint64_t glfwGetTimerValue </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current value of the raw timer, measured in 1&#160;/&#160;frequency seconds. To get the frequency, call <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
+<dl class="section return"><dt>Returns</dt><dd>The value of the timer, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga3289ee876572f6e91f06df3a24824443" name="ga3289ee876572f6e91f06df3a24824443"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3289ee876572f6e91f06df3a24824443">&#9670;&nbsp;</a></span>glfwGetTimerFrequency()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">uint64_t glfwGetTimerFrequency </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the frequency, in Hz, of the raw timer.</p>
+<dl class="section return"><dt>Returns</dt><dd>The frequency of the timer, in Hz, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#time">Time input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__joysticks.html b/libs/glfw-3.3.8/docs/html/group__joysticks.html
new file mode 100644
index 0000000..34f86b2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__joysticks.html
@@ -0,0 +1,355 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Joysticks</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Joysticks<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#joystick">joystick input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga34a0443d059e9f22272cd4669073f73d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>&#160;&#160;&#160;0</td></tr>
+<tr class="separator:ga34a0443d059e9f22272cd4669073f73d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>&#160;&#160;&#160;1</td></tr>
+<tr class="separator:ga6eab65ec88e65e0850ef8413504cb50c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>&#160;&#160;&#160;2</td></tr>
+<tr class="separator:gae6f3eedfeb42424c2f5e3161efb0b654"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>&#160;&#160;&#160;3</td></tr>
+<tr class="separator:ga97ddbcad02b7f48d74fad4ddb08fff59"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>&#160;&#160;&#160;4</td></tr>
+<tr class="separator:gae43281bc66d3fa5089fb50c3e7a28695"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga74771620aa53bd68a487186dea66fd77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga74771620aa53bd68a487186dea66fd77">GLFW_JOYSTICK_6</a>&#160;&#160;&#160;5</td></tr>
+<tr class="separator:ga74771620aa53bd68a487186dea66fd77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>&#160;&#160;&#160;6</td></tr>
+<tr class="separator:ga20a9f4f3aaefed9ea5e66072fc588b87"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb">GLFW_JOYSTICK_8</a>&#160;&#160;&#160;7</td></tr>
+<tr class="separator:ga21a934c940bcf25db0e4c8fe9b364bdb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">GLFW_JOYSTICK_9</a>&#160;&#160;&#160;8</td></tr>
+<tr class="separator:ga87689d47df0ba6f9f5fcbbcaf7b3cecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec">GLFW_JOYSTICK_10</a>&#160;&#160;&#160;9</td></tr>
+<tr class="separator:gaef55389ee605d6dfc31aef6fe98c54ec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae7d26e3df447c2c14a569fcc18516af4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4">GLFW_JOYSTICK_11</a>&#160;&#160;&#160;10</td></tr>
+<tr class="separator:gae7d26e3df447c2c14a569fcc18516af4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">GLFW_JOYSTICK_12</a>&#160;&#160;&#160;11</td></tr>
+<tr class="separator:gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508">GLFW_JOYSTICK_13</a>&#160;&#160;&#160;12</td></tr>
+<tr class="separator:ga5c84fb4e49bf661d7d7c78eb4018c508"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga89540873278ae5a42b3e70d64164dc74"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74">GLFW_JOYSTICK_14</a>&#160;&#160;&#160;13</td></tr>
+<tr class="separator:ga89540873278ae5a42b3e70d64164dc74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">GLFW_JOYSTICK_15</a>&#160;&#160;&#160;14</td></tr>
+<tr class="separator:ga7b02ab70daf7a78bcc942d5d4cc1dcf9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga453edeeabf350827646b6857df4f80ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a>&#160;&#160;&#160;15</td></tr>
+<tr class="separator:ga453edeeabf350827646b6857df4f80ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9">GLFW_JOYSTICK_LAST</a>&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td></tr>
+<tr class="separator:ga9ca13ebf24c331dd98df17d84a4b72c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga34a0443d059e9f22272cd4669073f73d" name="ga34a0443d059e9f22272cd4669073f73d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga34a0443d059e9f22272cd4669073f73d">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_1&#160;&#160;&#160;0</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6eab65ec88e65e0850ef8413504cb50c" name="ga6eab65ec88e65e0850ef8413504cb50c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6eab65ec88e65e0850ef8413504cb50c">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_2&#160;&#160;&#160;1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae6f3eedfeb42424c2f5e3161efb0b654" name="gae6f3eedfeb42424c2f5e3161efb0b654"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae6f3eedfeb42424c2f5e3161efb0b654">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_3</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_3&#160;&#160;&#160;2</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga97ddbcad02b7f48d74fad4ddb08fff59" name="ga97ddbcad02b7f48d74fad4ddb08fff59"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga97ddbcad02b7f48d74fad4ddb08fff59">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_4</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_4&#160;&#160;&#160;3</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae43281bc66d3fa5089fb50c3e7a28695" name="gae43281bc66d3fa5089fb50c3e7a28695"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae43281bc66d3fa5089fb50c3e7a28695">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_5</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_5&#160;&#160;&#160;4</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga74771620aa53bd68a487186dea66fd77" name="ga74771620aa53bd68a487186dea66fd77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga74771620aa53bd68a487186dea66fd77">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_6</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_6&#160;&#160;&#160;5</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga20a9f4f3aaefed9ea5e66072fc588b87" name="ga20a9f4f3aaefed9ea5e66072fc588b87"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga20a9f4f3aaefed9ea5e66072fc588b87">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_7</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_7&#160;&#160;&#160;6</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga21a934c940bcf25db0e4c8fe9b364bdb" name="ga21a934c940bcf25db0e4c8fe9b364bdb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga21a934c940bcf25db0e4c8fe9b364bdb">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_8</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_8&#160;&#160;&#160;7</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga87689d47df0ba6f9f5fcbbcaf7b3cecf" name="ga87689d47df0ba6f9f5fcbbcaf7b3cecf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga87689d47df0ba6f9f5fcbbcaf7b3cecf">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_9</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_9&#160;&#160;&#160;8</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaef55389ee605d6dfc31aef6fe98c54ec" name="gaef55389ee605d6dfc31aef6fe98c54ec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaef55389ee605d6dfc31aef6fe98c54ec">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_10</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_10&#160;&#160;&#160;9</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae7d26e3df447c2c14a569fcc18516af4" name="gae7d26e3df447c2c14a569fcc18516af4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae7d26e3df447c2c14a569fcc18516af4">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_11</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_11&#160;&#160;&#160;10</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab91bbf5b7ca6be8d3ac5c4d89ff48ac7" name="gab91bbf5b7ca6be8d3ac5c4d89ff48ac7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_12</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_12&#160;&#160;&#160;11</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga5c84fb4e49bf661d7d7c78eb4018c508" name="ga5c84fb4e49bf661d7d7c78eb4018c508"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5c84fb4e49bf661d7d7c78eb4018c508">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_13</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_13&#160;&#160;&#160;12</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga89540873278ae5a42b3e70d64164dc74" name="ga89540873278ae5a42b3e70d64164dc74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga89540873278ae5a42b3e70d64164dc74">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_14</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_14&#160;&#160;&#160;13</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7b02ab70daf7a78bcc942d5d4cc1dcf9" name="ga7b02ab70daf7a78bcc942d5d4cc1dcf9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7b02ab70daf7a78bcc942d5d4cc1dcf9">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_15</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_15&#160;&#160;&#160;14</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga453edeeabf350827646b6857df4f80ce" name="ga453edeeabf350827646b6857df4f80ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga453edeeabf350827646b6857df4f80ce">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_16</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_16&#160;&#160;&#160;15</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9ca13ebf24c331dd98df17d84a4b72c9" name="ga9ca13ebf24c331dd98df17d84a4b72c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9ca13ebf24c331dd98df17d84a4b72c9">&#9670;&nbsp;</a></span>GLFW_JOYSTICK_LAST</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_JOYSTICK_LAST&#160;&#160;&#160;<a class="el" href="group__joysticks.html#ga453edeeabf350827646b6857df4f80ce">GLFW_JOYSTICK_16</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__keys.html b/libs/glfw-3.3.8/docs/html/group__keys.html
new file mode 100644
index 0000000..f899864
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__keys.html
@@ -0,0 +1,2043 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Keyboard keys</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Keyboard keys<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#input_key">key input</a> for how these are used.</p>
+<p >These key codes are inspired by the <em>USB HID Usage Tables v1.12</em> (p. 53-60), but re-arranged to map to 7-bit ASCII for printable keys (function keys are put in the 256+ range).</p>
+<p >The naming of the key codes follow these rules:</p><ul>
+<li>The US keyboard layout is used</li>
+<li>Names of printable alpha-numeric characters are used (e.g. "A", "R", "3", etc.)</li>
+<li>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)</li>
+<li>Keys that lack a clear US mapping are named "WORLD_x"</li>
+<li>For non-printable keys, custom names are used (e.g. "F4", "BACKSPACE", etc.) </li>
+</ul>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga99aacc875b6b27a072552631e13775c7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga99aacc875b6b27a072552631e13775c7">GLFW_KEY_UNKNOWN</a>&#160;&#160;&#160;-1</td></tr>
+<tr class="separator:ga99aacc875b6b27a072552631e13775c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014">GLFW_KEY_SPACE</a>&#160;&#160;&#160;32</td></tr>
+<tr class="separator:gaddb2c23772b97fd7e26e8ee66f1ad014"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24">GLFW_KEY_APOSTROPHE</a>&#160;&#160;&#160;39 /* ' */</td></tr>
+<tr class="separator:ga6059b0b048ba6980b6107fffbd3b4b24"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab3d5d72e59d3055f494627b0a524926c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab3d5d72e59d3055f494627b0a524926c">GLFW_KEY_COMMA</a>&#160;&#160;&#160;44 /* , */</td></tr>
+<tr class="separator:gab3d5d72e59d3055f494627b0a524926c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4">GLFW_KEY_MINUS</a>&#160;&#160;&#160;45 /* - */</td></tr>
+<tr class="separator:gac556b360f7f6fca4b70ba0aecf313fd4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga37e296b650eab419fc474ff69033d927"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga37e296b650eab419fc474ff69033d927">GLFW_KEY_PERIOD</a>&#160;&#160;&#160;46 /* . */</td></tr>
+<tr class="separator:ga37e296b650eab419fc474ff69033d927"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadf3d753b2d479148d711de34b83fd0db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadf3d753b2d479148d711de34b83fd0db">GLFW_KEY_SLASH</a>&#160;&#160;&#160;47 /* / */</td></tr>
+<tr class="separator:gadf3d753b2d479148d711de34b83fd0db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1">GLFW_KEY_0</a>&#160;&#160;&#160;48</td></tr>
+<tr class="separator:ga50391730e9d7112ad4fd42d0bd1597c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f">GLFW_KEY_1</a>&#160;&#160;&#160;49</td></tr>
+<tr class="separator:ga05e4cae9ddb8d40cf6d82c8f11f2502f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c">GLFW_KEY_2</a>&#160;&#160;&#160;50</td></tr>
+<tr class="separator:gadc8e66b3a4c4b5c39ad1305cf852863c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga812f0273fe1a981e1fa002ae73e92271"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga812f0273fe1a981e1fa002ae73e92271">GLFW_KEY_3</a>&#160;&#160;&#160;51</td></tr>
+<tr class="separator:ga812f0273fe1a981e1fa002ae73e92271"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356">GLFW_KEY_4</a>&#160;&#160;&#160;52</td></tr>
+<tr class="separator:ga9e14b6975a9cc8f66cdd5cb3d3861356"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924">GLFW_KEY_5</a>&#160;&#160;&#160;53</td></tr>
+<tr class="separator:ga4d74ddaa5d4c609993b4d4a15736c924"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d">GLFW_KEY_6</a>&#160;&#160;&#160;54</td></tr>
+<tr class="separator:ga9ea4ab80c313a227b14d0a7c6f810b5d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666">GLFW_KEY_7</a>&#160;&#160;&#160;55</td></tr>
+<tr class="separator:gab79b1cfae7bd630cfc4604c1f263c666"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f">GLFW_KEY_8</a>&#160;&#160;&#160;56</td></tr>
+<tr class="separator:gadeaa109a0f9f5afc94fe4a108e686f6f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39">GLFW_KEY_9</a>&#160;&#160;&#160;57</td></tr>
+<tr class="separator:ga2924cb5349ebbf97c8987f3521c44f39"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d">GLFW_KEY_SEMICOLON</a>&#160;&#160;&#160;59 /* ; */</td></tr>
+<tr class="separator:ga84233de9ee5bb3e8788a5aa07d80af7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae1a2de47240d6664423c204bdd91bd17"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae1a2de47240d6664423c204bdd91bd17">GLFW_KEY_EQUAL</a>&#160;&#160;&#160;61 /* = */</td></tr>
+<tr class="separator:gae1a2de47240d6664423c204bdd91bd17"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga03e842608e1ea323370889d33b8f70ff"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>&#160;&#160;&#160;65</td></tr>
+<tr class="separator:ga03e842608e1ea323370889d33b8f70ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941">GLFW_KEY_B</a>&#160;&#160;&#160;66</td></tr>
+<tr class="separator:ga8e3fb647ff3aca9e8dbf14fe66332941"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga00ccf3475d9ee2e679480d540d554669"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga00ccf3475d9ee2e679480d540d554669">GLFW_KEY_C</a>&#160;&#160;&#160;67</td></tr>
+<tr class="separator:ga00ccf3475d9ee2e679480d540d554669"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga011f7cdc9a654da984a2506479606933"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga011f7cdc9a654da984a2506479606933">GLFW_KEY_D</a>&#160;&#160;&#160;68</td></tr>
+<tr class="separator:ga011f7cdc9a654da984a2506479606933"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabf48fcc3afbe69349df432b470c96ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>&#160;&#160;&#160;69</td></tr>
+<tr class="separator:gabf48fcc3afbe69349df432b470c96ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5df402e02aca08444240058fd9b42a55"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga5df402e02aca08444240058fd9b42a55">GLFW_KEY_F</a>&#160;&#160;&#160;70</td></tr>
+<tr class="separator:ga5df402e02aca08444240058fd9b42a55"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae74ecddf7cc96104ab23989b1cdab536"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae74ecddf7cc96104ab23989b1cdab536">GLFW_KEY_G</a>&#160;&#160;&#160;71</td></tr>
+<tr class="separator:gae74ecddf7cc96104ab23989b1cdab536"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076">GLFW_KEY_H</a>&#160;&#160;&#160;72</td></tr>
+<tr class="separator:gad4cc98fc8f35f015d9e2fb94bf136076"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga274655c8bfe39742684ca393cf8ed093"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga274655c8bfe39742684ca393cf8ed093">GLFW_KEY_I</a>&#160;&#160;&#160;73</td></tr>
+<tr class="separator:ga274655c8bfe39742684ca393cf8ed093"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f">GLFW_KEY_J</a>&#160;&#160;&#160;74</td></tr>
+<tr class="separator:ga65ff2aedb129a3149ad9cb3e4159a75f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0">GLFW_KEY_K</a>&#160;&#160;&#160;75</td></tr>
+<tr class="separator:ga4ae8debadf6d2a691badae0b53ea3ba0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2">GLFW_KEY_L</a>&#160;&#160;&#160;76</td></tr>
+<tr class="separator:gaaa8b54a13f6b1eed85ac86f82d550db2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">GLFW_KEY_M</a>&#160;&#160;&#160;77</td></tr>
+<tr class="separator:ga4d7f0260c82e4ea3d6ebc7a21d6e3716"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda">GLFW_KEY_N</a>&#160;&#160;&#160;78</td></tr>
+<tr class="separator:gae00856dfeb5d13aafebf59d44de5cdda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaecbbb79130df419d58dd7f09a169efe9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaecbbb79130df419d58dd7f09a169efe9">GLFW_KEY_O</a>&#160;&#160;&#160;79</td></tr>
+<tr class="separator:gaecbbb79130df419d58dd7f09a169efe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1">GLFW_KEY_P</a>&#160;&#160;&#160;80</td></tr>
+<tr class="separator:ga8fc15819c1094fb2afa01d84546b33e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafdd01e38b120d67cf51e348bb47f3964"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafdd01e38b120d67cf51e348bb47f3964">GLFW_KEY_Q</a>&#160;&#160;&#160;81</td></tr>
+<tr class="separator:gafdd01e38b120d67cf51e348bb47f3964"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">GLFW_KEY_R</a>&#160;&#160;&#160;82</td></tr>
+<tr class="separator:ga4ce6c70a0c98c50b3fe4ab9a728d4d36"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9">GLFW_KEY_S</a>&#160;&#160;&#160;83</td></tr>
+<tr class="separator:ga1570e2ccaab036ea82bed66fc1dab2a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9">GLFW_KEY_T</a>&#160;&#160;&#160;84</td></tr>
+<tr class="separator:ga90e0560422ec7a30e7f3f375bc9f37f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d">GLFW_KEY_U</a>&#160;&#160;&#160;85</td></tr>
+<tr class="separator:gacad52f3bf7d378fc0ffa72a76769256d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga22c7763899ecf7788862e5f90eacce6b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga22c7763899ecf7788862e5f90eacce6b">GLFW_KEY_V</a>&#160;&#160;&#160;86</td></tr>
+<tr class="separator:ga22c7763899ecf7788862e5f90eacce6b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>&#160;&#160;&#160;87</td></tr>
+<tr class="separator:gaa06a712e6202661fc03da5bdb7b6e545"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac1c42c0bf4192cea713c55598b06b744"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>&#160;&#160;&#160;88</td></tr>
+<tr class="separator:gac1c42c0bf4192cea713c55598b06b744"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafd9f115a549effdf8e372a787c360313"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafd9f115a549effdf8e372a787c360313">GLFW_KEY_Y</a>&#160;&#160;&#160;89</td></tr>
+<tr class="separator:gafd9f115a549effdf8e372a787c360313"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac489e208c26afda8d4938ed88718760a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac489e208c26afda8d4938ed88718760a">GLFW_KEY_Z</a>&#160;&#160;&#160;90</td></tr>
+<tr class="separator:gac489e208c26afda8d4938ed88718760a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1c8d9adac53925276ecb1d592511d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1c8d9adac53925276ecb1d592511d8a">GLFW_KEY_LEFT_BRACKET</a>&#160;&#160;&#160;91 /* [ */</td></tr>
+<tr class="separator:gad1c8d9adac53925276ecb1d592511d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1">GLFW_KEY_BACKSLASH</a>&#160;&#160;&#160;92 /* \ */</td></tr>
+<tr class="separator:gab8155ea99d1ab27ff56f24f8dc73f8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga86ef225fd6a66404caae71044cdd58d8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86ef225fd6a66404caae71044cdd58d8">GLFW_KEY_RIGHT_BRACKET</a>&#160;&#160;&#160;93 /* ] */</td></tr>
+<tr class="separator:ga86ef225fd6a66404caae71044cdd58d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668">GLFW_KEY_GRAVE_ACCENT</a>&#160;&#160;&#160;96 /* ` */</td></tr>
+<tr class="separator:ga7a3701fb4e2a0b136ff4b568c3c8d668"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc78dad3dab76bcd4b5c20114052577a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadc78dad3dab76bcd4b5c20114052577a">GLFW_KEY_WORLD_1</a>&#160;&#160;&#160;161 /* non-US #1 */</td></tr>
+<tr class="separator:gadc78dad3dab76bcd4b5c20114052577a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e">GLFW_KEY_WORLD_2</a>&#160;&#160;&#160;162 /* non-US #2 */</td></tr>
+<tr class="separator:ga20494bfebf0bb4fc9503afca18ab2c5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaac6596c350b635c245113b81c2123b93"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a>&#160;&#160;&#160;256</td></tr>
+<tr class="separator:gaac6596c350b635c245113b81c2123b93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9555a92ecbecdbc1f3435219c571d667"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9555a92ecbecdbc1f3435219c571d667">GLFW_KEY_ENTER</a>&#160;&#160;&#160;257</td></tr>
+<tr class="separator:ga9555a92ecbecdbc1f3435219c571d667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df">GLFW_KEY_TAB</a>&#160;&#160;&#160;258</td></tr>
+<tr class="separator:ga6908a4bda9950a3e2b73f794bbe985df"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635">GLFW_KEY_BACKSPACE</a>&#160;&#160;&#160;259</td></tr>
+<tr class="separator:ga6c0df1fe2f156bbd5a98c66d76ff3635"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga373ac7365435d6b0eb1068f470e34f47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga373ac7365435d6b0eb1068f470e34f47">GLFW_KEY_INSERT</a>&#160;&#160;&#160;260</td></tr>
+<tr class="separator:ga373ac7365435d6b0eb1068f470e34f47"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadb111e4df74b8a715f2c05dad58d2682"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gadb111e4df74b8a715f2c05dad58d2682">GLFW_KEY_DELETE</a>&#160;&#160;&#160;261</td></tr>
+<tr class="separator:gadb111e4df74b8a715f2c05dad58d2682"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac">GLFW_KEY_RIGHT</a>&#160;&#160;&#160;262</td></tr>
+<tr class="separator:ga06ba07662e8c291a4a84535379ffc7ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae12a010d33c309a67ab9460c51eb2462"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae12a010d33c309a67ab9460c51eb2462">GLFW_KEY_LEFT</a>&#160;&#160;&#160;263</td></tr>
+<tr class="separator:gae12a010d33c309a67ab9460c51eb2462"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae2e3958c71595607416aa7bf082be2f9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae2e3958c71595607416aa7bf082be2f9">GLFW_KEY_DOWN</a>&#160;&#160;&#160;264</td></tr>
+<tr class="separator:gae2e3958c71595607416aa7bf082be2f9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f3342b194020d3544c67e3506b6f144"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga2f3342b194020d3544c67e3506b6f144">GLFW_KEY_UP</a>&#160;&#160;&#160;265</td></tr>
+<tr class="separator:ga2f3342b194020d3544c67e3506b6f144"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586">GLFW_KEY_PAGE_UP</a>&#160;&#160;&#160;266</td></tr>
+<tr class="separator:ga3ab731f9622f0db280178a5f3cc6d586"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaee0a8fa442001cc2147812f84b59041c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaee0a8fa442001cc2147812f84b59041c">GLFW_KEY_PAGE_DOWN</a>&#160;&#160;&#160;267</td></tr>
+<tr class="separator:gaee0a8fa442001cc2147812f84b59041c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga41452c7287195d481e43207318c126a7"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga41452c7287195d481e43207318c126a7">GLFW_KEY_HOME</a>&#160;&#160;&#160;268</td></tr>
+<tr class="separator:ga41452c7287195d481e43207318c126a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9">GLFW_KEY_END</a>&#160;&#160;&#160;269</td></tr>
+<tr class="separator:ga86587ea1df19a65978d3e3b8439bedd9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672">GLFW_KEY_CAPS_LOCK</a>&#160;&#160;&#160;280</td></tr>
+<tr class="separator:ga92c1d2c9d63485f3d70f94f688d48672"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf622b63b9537f7084c2ab649b8365630"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf622b63b9537f7084c2ab649b8365630">GLFW_KEY_SCROLL_LOCK</a>&#160;&#160;&#160;281</td></tr>
+<tr class="separator:gaf622b63b9537f7084c2ab649b8365630"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3946edc362aeff213b2be6304296cf43"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga3946edc362aeff213b2be6304296cf43">GLFW_KEY_NUM_LOCK</a>&#160;&#160;&#160;282</td></tr>
+<tr class="separator:ga3946edc362aeff213b2be6304296cf43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642">GLFW_KEY_PRINT_SCREEN</a>&#160;&#160;&#160;283</td></tr>
+<tr class="separator:gaf964c2e65e97d0cf785a5636ee8df642"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8116b9692d87382afb5849b6d8907f18"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8116b9692d87382afb5849b6d8907f18">GLFW_KEY_PAUSE</a>&#160;&#160;&#160;284</td></tr>
+<tr class="separator:ga8116b9692d87382afb5849b6d8907f18"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb8d66c573acf22e364049477dcbea30"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb8d66c573acf22e364049477dcbea30">GLFW_KEY_F1</a>&#160;&#160;&#160;290</td></tr>
+<tr class="separator:gafb8d66c573acf22e364049477dcbea30"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0900750aff94889b940f5e428c07daee"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0900750aff94889b940f5e428c07daee">GLFW_KEY_F2</a>&#160;&#160;&#160;291</td></tr>
+<tr class="separator:ga0900750aff94889b940f5e428c07daee"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015">GLFW_KEY_F3</a>&#160;&#160;&#160;292</td></tr>
+<tr class="separator:gaed7cd729c0147a551bb8b7bb36c17015"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6">GLFW_KEY_F4</a>&#160;&#160;&#160;293</td></tr>
+<tr class="separator:ga9b61ebd0c63b44b7332fda2c9763eaa6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf258dda9947daa428377938ed577c8c2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf258dda9947daa428377938ed577c8c2">GLFW_KEY_F5</a>&#160;&#160;&#160;294</td></tr>
+<tr class="separator:gaf258dda9947daa428377938ed577c8c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">GLFW_KEY_F6</a>&#160;&#160;&#160;295</td></tr>
+<tr class="separator:ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a">GLFW_KEY_F7</a>&#160;&#160;&#160;296</td></tr>
+<tr class="separator:gacca6ef8a2162c52a0ac1d881e8d9c38a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac9d39390336ae14e4a93e295de43c7e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gac9d39390336ae14e4a93e295de43c7e8">GLFW_KEY_F8</a>&#160;&#160;&#160;297</td></tr>
+<tr class="separator:gac9d39390336ae14e4a93e295de43c7e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851">GLFW_KEY_F9</a>&#160;&#160;&#160;298</td></tr>
+<tr class="separator:gae40de0de1c9f21cd26c9afa3d7050851"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga718d11d2f7d57471a2f6a894235995b1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga718d11d2f7d57471a2f6a894235995b1">GLFW_KEY_F10</a>&#160;&#160;&#160;299</td></tr>
+<tr class="separator:ga718d11d2f7d57471a2f6a894235995b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0bc04b11627e7d69339151e7306b2832"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga0bc04b11627e7d69339151e7306b2832">GLFW_KEY_F11</a>&#160;&#160;&#160;300</td></tr>
+<tr class="separator:ga0bc04b11627e7d69339151e7306b2832"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">GLFW_KEY_F12</a>&#160;&#160;&#160;301</td></tr>
+<tr class="separator:gaf5908fa9b0a906ae03fc2c61ac7aa3e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b">GLFW_KEY_F13</a>&#160;&#160;&#160;302</td></tr>
+<tr class="separator:gad637f4308655e1001bd6ad942bc0fd4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f">GLFW_KEY_F14</a>&#160;&#160;&#160;303</td></tr>
+<tr class="separator:gaf14c66cff3396e5bd46e803c035e6c1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7f70970db6e8be1794da8516a6d14058"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f70970db6e8be1794da8516a6d14058">GLFW_KEY_F15</a>&#160;&#160;&#160;304</td></tr>
+<tr class="separator:ga7f70970db6e8be1794da8516a6d14058"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27">GLFW_KEY_F16</a>&#160;&#160;&#160;305</td></tr>
+<tr class="separator:gaa582dbb1d2ba2050aa1dca0838095b27"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga972ce5c365e2394b36104b0e3125c748"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga972ce5c365e2394b36104b0e3125c748">GLFW_KEY_F17</a>&#160;&#160;&#160;306</td></tr>
+<tr class="separator:ga972ce5c365e2394b36104b0e3125c748"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaebf6391058d5566601e357edc5ea737c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebf6391058d5566601e357edc5ea737c">GLFW_KEY_F18</a>&#160;&#160;&#160;307</td></tr>
+<tr class="separator:gaebf6391058d5566601e357edc5ea737c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaec011d9ba044058cb54529da710e9791"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaec011d9ba044058cb54529da710e9791">GLFW_KEY_F19</a>&#160;&#160;&#160;308</td></tr>
+<tr class="separator:gaec011d9ba044058cb54529da710e9791"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga82b9c721ada04cd5ca8de767da38022f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga82b9c721ada04cd5ca8de767da38022f">GLFW_KEY_F20</a>&#160;&#160;&#160;309</td></tr>
+<tr class="separator:ga82b9c721ada04cd5ca8de767da38022f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f">GLFW_KEY_F21</a>&#160;&#160;&#160;310</td></tr>
+<tr class="separator:ga356afb14d3440ff2bb378f74f7ebc60f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90960bd2a155f2b09675324d3dff1565"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga90960bd2a155f2b09675324d3dff1565">GLFW_KEY_F22</a>&#160;&#160;&#160;311</td></tr>
+<tr class="separator:ga90960bd2a155f2b09675324d3dff1565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga43c21099aac10952d1be909a8ddee4d5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga43c21099aac10952d1be909a8ddee4d5">GLFW_KEY_F23</a>&#160;&#160;&#160;312</td></tr>
+<tr class="separator:ga43c21099aac10952d1be909a8ddee4d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8150374677b5bed3043408732152dea2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8150374677b5bed3043408732152dea2">GLFW_KEY_F24</a>&#160;&#160;&#160;313</td></tr>
+<tr class="separator:ga8150374677b5bed3043408732152dea2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199">GLFW_KEY_F25</a>&#160;&#160;&#160;314</td></tr>
+<tr class="separator:gaa4bbd93ed73bb4c6ae7d83df880b7199"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d">GLFW_KEY_KP_0</a>&#160;&#160;&#160;320</td></tr>
+<tr class="separator:ga10515dafc55b71e7683f5b4fedd1c70d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3">GLFW_KEY_KP_1</a>&#160;&#160;&#160;321</td></tr>
+<tr class="separator:gaf3a29a334402c5eaf0b3439edf5587c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf82d5a802ab8213c72653d7480c16f13"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaf82d5a802ab8213c72653d7480c16f13">GLFW_KEY_KP_2</a>&#160;&#160;&#160;322</td></tr>
+<tr class="separator:gaf82d5a802ab8213c72653d7480c16f13"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2">GLFW_KEY_KP_3</a>&#160;&#160;&#160;323</td></tr>
+<tr class="separator:ga7e25ff30d56cd512828c1d4ae8d54ef2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gada7ec86778b85e0b4de0beea72234aea"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gada7ec86778b85e0b4de0beea72234aea">GLFW_KEY_KP_4</a>&#160;&#160;&#160;324</td></tr>
+<tr class="separator:gada7ec86778b85e0b4de0beea72234aea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9a5be274434866c51738cafbb6d26b45"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9a5be274434866c51738cafbb6d26b45">GLFW_KEY_KP_5</a>&#160;&#160;&#160;325</td></tr>
+<tr class="separator:ga9a5be274434866c51738cafbb6d26b45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafc141b0f8450519084c01092a3157faa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafc141b0f8450519084c01092a3157faa">GLFW_KEY_KP_6</a>&#160;&#160;&#160;326</td></tr>
+<tr class="separator:gafc141b0f8450519084c01092a3157faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8882f411f05d04ec77a9563974bbfa53"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8882f411f05d04ec77a9563974bbfa53">GLFW_KEY_KP_7</a>&#160;&#160;&#160;327</td></tr>
+<tr class="separator:ga8882f411f05d04ec77a9563974bbfa53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab2ea2e6a12f89d315045af520ac78cec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gab2ea2e6a12f89d315045af520ac78cec">GLFW_KEY_KP_8</a>&#160;&#160;&#160;328</td></tr>
+<tr class="separator:gab2ea2e6a12f89d315045af520ac78cec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb21426b630ed4fcc084868699ba74c1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb21426b630ed4fcc084868699ba74c1">GLFW_KEY_KP_9</a>&#160;&#160;&#160;329</td></tr>
+<tr class="separator:gafb21426b630ed4fcc084868699ba74c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b">GLFW_KEY_KP_DECIMAL</a>&#160;&#160;&#160;330</td></tr>
+<tr class="separator:ga4e231d968796331a9ea0dbfb98d4005b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabca1733780a273d549129ad0f250d1e5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gabca1733780a273d549129ad0f250d1e5">GLFW_KEY_KP_DIVIDE</a>&#160;&#160;&#160;331</td></tr>
+<tr class="separator:gabca1733780a273d549129ad0f250d1e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef">GLFW_KEY_KP_MULTIPLY</a>&#160;&#160;&#160;332</td></tr>
+<tr class="separator:ga9ada267eb0e78ed2ada8701dd24a56ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236">GLFW_KEY_KP_SUBTRACT</a>&#160;&#160;&#160;333</td></tr>
+<tr class="separator:gaa3dbd60782ff93d6082a124bce1fa236"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad09c7c98acc79e89aa6a0a91275becac"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad09c7c98acc79e89aa6a0a91275becac">GLFW_KEY_KP_ADD</a>&#160;&#160;&#160;334</td></tr>
+<tr class="separator:gad09c7c98acc79e89aa6a0a91275becac"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf">GLFW_KEY_KP_ENTER</a>&#160;&#160;&#160;335</td></tr>
+<tr class="separator:ga4f728f8738f2986bd63eedd3d412e8cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97">GLFW_KEY_KP_EQUAL</a>&#160;&#160;&#160;336</td></tr>
+<tr class="separator:gaebdc76d4a808191e6d21b7e4ad2acd97"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6">GLFW_KEY_LEFT_SHIFT</a>&#160;&#160;&#160;340</td></tr>
+<tr class="separator:ga8a530a28a65c44ab5d00b759b756d3f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9f97b743e81460ac4b2deddecd10a464"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9f97b743e81460ac4b2deddecd10a464">GLFW_KEY_LEFT_CONTROL</a>&#160;&#160;&#160;341</td></tr>
+<tr class="separator:ga9f97b743e81460ac4b2deddecd10a464"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7f27dabf63a7789daa31e1c96790219b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga7f27dabf63a7789daa31e1c96790219b">GLFW_KEY_LEFT_ALT</a>&#160;&#160;&#160;342</td></tr>
+<tr class="separator:ga7f27dabf63a7789daa31e1c96790219b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb1207c91997fc295afd1835fbc5641a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gafb1207c91997fc295afd1835fbc5641a">GLFW_KEY_LEFT_SUPER</a>&#160;&#160;&#160;343</td></tr>
+<tr class="separator:gafb1207c91997fc295afd1835fbc5641a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaffca36b99c9dce1a19cb9befbadce691"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gaffca36b99c9dce1a19cb9befbadce691">GLFW_KEY_RIGHT_SHIFT</a>&#160;&#160;&#160;344</td></tr>
+<tr class="separator:gaffca36b99c9dce1a19cb9befbadce691"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519">GLFW_KEY_RIGHT_CONTROL</a>&#160;&#160;&#160;345</td></tr>
+<tr class="separator:gad1ca2094b2694e7251d0ab1fd34f8519"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga687b38009131cfdd07a8d05fff8fa446"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga687b38009131cfdd07a8d05fff8fa446">GLFW_KEY_RIGHT_ALT</a>&#160;&#160;&#160;346</td></tr>
+<tr class="separator:ga687b38009131cfdd07a8d05fff8fa446"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad4547a3e8e247594acb60423fe6502db"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#gad4547a3e8e247594acb60423fe6502db">GLFW_KEY_RIGHT_SUPER</a>&#160;&#160;&#160;347</td></tr>
+<tr class="separator:gad4547a3e8e247594acb60423fe6502db"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9845be48a745fc232045c9ec174d8820"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a>&#160;&#160;&#160;348</td></tr>
+<tr class="separator:ga9845be48a745fc232045c9ec174d8820"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789">GLFW_KEY_LAST</a>&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td></tr>
+<tr class="separator:ga442cbaef7bfb9a4ba13594dd7fbf2789"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga99aacc875b6b27a072552631e13775c7" name="ga99aacc875b6b27a072552631e13775c7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga99aacc875b6b27a072552631e13775c7">&#9670;&nbsp;</a></span>GLFW_KEY_UNKNOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_UNKNOWN&#160;&#160;&#160;-1</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaddb2c23772b97fd7e26e8ee66f1ad014" name="gaddb2c23772b97fd7e26e8ee66f1ad014"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaddb2c23772b97fd7e26e8ee66f1ad014">&#9670;&nbsp;</a></span>GLFW_KEY_SPACE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_SPACE&#160;&#160;&#160;32</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6059b0b048ba6980b6107fffbd3b4b24" name="ga6059b0b048ba6980b6107fffbd3b4b24"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6059b0b048ba6980b6107fffbd3b4b24">&#9670;&nbsp;</a></span>GLFW_KEY_APOSTROPHE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_APOSTROPHE&#160;&#160;&#160;39 /* ' */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab3d5d72e59d3055f494627b0a524926c" name="gab3d5d72e59d3055f494627b0a524926c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab3d5d72e59d3055f494627b0a524926c">&#9670;&nbsp;</a></span>GLFW_KEY_COMMA</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_COMMA&#160;&#160;&#160;44 /* , */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gac556b360f7f6fca4b70ba0aecf313fd4" name="gac556b360f7f6fca4b70ba0aecf313fd4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac556b360f7f6fca4b70ba0aecf313fd4">&#9670;&nbsp;</a></span>GLFW_KEY_MINUS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_MINUS&#160;&#160;&#160;45 /* - */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga37e296b650eab419fc474ff69033d927" name="ga37e296b650eab419fc474ff69033d927"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga37e296b650eab419fc474ff69033d927">&#9670;&nbsp;</a></span>GLFW_KEY_PERIOD</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_PERIOD&#160;&#160;&#160;46 /* . */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadf3d753b2d479148d711de34b83fd0db" name="gadf3d753b2d479148d711de34b83fd0db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadf3d753b2d479148d711de34b83fd0db">&#9670;&nbsp;</a></span>GLFW_KEY_SLASH</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_SLASH&#160;&#160;&#160;47 /* / */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga50391730e9d7112ad4fd42d0bd1597c1" name="ga50391730e9d7112ad4fd42d0bd1597c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga50391730e9d7112ad4fd42d0bd1597c1">&#9670;&nbsp;</a></span>GLFW_KEY_0</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_0&#160;&#160;&#160;48</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga05e4cae9ddb8d40cf6d82c8f11f2502f" name="ga05e4cae9ddb8d40cf6d82c8f11f2502f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga05e4cae9ddb8d40cf6d82c8f11f2502f">&#9670;&nbsp;</a></span>GLFW_KEY_1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_1&#160;&#160;&#160;49</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadc8e66b3a4c4b5c39ad1305cf852863c" name="gadc8e66b3a4c4b5c39ad1305cf852863c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadc8e66b3a4c4b5c39ad1305cf852863c">&#9670;&nbsp;</a></span>GLFW_KEY_2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_2&#160;&#160;&#160;50</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga812f0273fe1a981e1fa002ae73e92271" name="ga812f0273fe1a981e1fa002ae73e92271"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga812f0273fe1a981e1fa002ae73e92271">&#9670;&nbsp;</a></span>GLFW_KEY_3</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_3&#160;&#160;&#160;51</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9e14b6975a9cc8f66cdd5cb3d3861356" name="ga9e14b6975a9cc8f66cdd5cb3d3861356"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9e14b6975a9cc8f66cdd5cb3d3861356">&#9670;&nbsp;</a></span>GLFW_KEY_4</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_4&#160;&#160;&#160;52</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4d74ddaa5d4c609993b4d4a15736c924" name="ga4d74ddaa5d4c609993b4d4a15736c924"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4d74ddaa5d4c609993b4d4a15736c924">&#9670;&nbsp;</a></span>GLFW_KEY_5</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_5&#160;&#160;&#160;53</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9ea4ab80c313a227b14d0a7c6f810b5d" name="ga9ea4ab80c313a227b14d0a7c6f810b5d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9ea4ab80c313a227b14d0a7c6f810b5d">&#9670;&nbsp;</a></span>GLFW_KEY_6</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_6&#160;&#160;&#160;54</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab79b1cfae7bd630cfc4604c1f263c666" name="gab79b1cfae7bd630cfc4604c1f263c666"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab79b1cfae7bd630cfc4604c1f263c666">&#9670;&nbsp;</a></span>GLFW_KEY_7</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_7&#160;&#160;&#160;55</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadeaa109a0f9f5afc94fe4a108e686f6f" name="gadeaa109a0f9f5afc94fe4a108e686f6f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadeaa109a0f9f5afc94fe4a108e686f6f">&#9670;&nbsp;</a></span>GLFW_KEY_8</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_8&#160;&#160;&#160;56</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga2924cb5349ebbf97c8987f3521c44f39" name="ga2924cb5349ebbf97c8987f3521c44f39"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2924cb5349ebbf97c8987f3521c44f39">&#9670;&nbsp;</a></span>GLFW_KEY_9</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_9&#160;&#160;&#160;57</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga84233de9ee5bb3e8788a5aa07d80af7d" name="ga84233de9ee5bb3e8788a5aa07d80af7d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga84233de9ee5bb3e8788a5aa07d80af7d">&#9670;&nbsp;</a></span>GLFW_KEY_SEMICOLON</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_SEMICOLON&#160;&#160;&#160;59 /* ; */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae1a2de47240d6664423c204bdd91bd17" name="gae1a2de47240d6664423c204bdd91bd17"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae1a2de47240d6664423c204bdd91bd17">&#9670;&nbsp;</a></span>GLFW_KEY_EQUAL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_EQUAL&#160;&#160;&#160;61 /* = */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga03e842608e1ea323370889d33b8f70ff" name="ga03e842608e1ea323370889d33b8f70ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga03e842608e1ea323370889d33b8f70ff">&#9670;&nbsp;</a></span>GLFW_KEY_A</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_A&#160;&#160;&#160;65</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8e3fb647ff3aca9e8dbf14fe66332941" name="ga8e3fb647ff3aca9e8dbf14fe66332941"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8e3fb647ff3aca9e8dbf14fe66332941">&#9670;&nbsp;</a></span>GLFW_KEY_B</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_B&#160;&#160;&#160;66</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga00ccf3475d9ee2e679480d540d554669" name="ga00ccf3475d9ee2e679480d540d554669"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga00ccf3475d9ee2e679480d540d554669">&#9670;&nbsp;</a></span>GLFW_KEY_C</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_C&#160;&#160;&#160;67</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga011f7cdc9a654da984a2506479606933" name="ga011f7cdc9a654da984a2506479606933"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga011f7cdc9a654da984a2506479606933">&#9670;&nbsp;</a></span>GLFW_KEY_D</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_D&#160;&#160;&#160;68</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gabf48fcc3afbe69349df432b470c96ef2" name="gabf48fcc3afbe69349df432b470c96ef2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabf48fcc3afbe69349df432b470c96ef2">&#9670;&nbsp;</a></span>GLFW_KEY_E</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_E&#160;&#160;&#160;69</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga5df402e02aca08444240058fd9b42a55" name="ga5df402e02aca08444240058fd9b42a55"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5df402e02aca08444240058fd9b42a55">&#9670;&nbsp;</a></span>GLFW_KEY_F</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F&#160;&#160;&#160;70</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae74ecddf7cc96104ab23989b1cdab536" name="gae74ecddf7cc96104ab23989b1cdab536"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae74ecddf7cc96104ab23989b1cdab536">&#9670;&nbsp;</a></span>GLFW_KEY_G</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_G&#160;&#160;&#160;71</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad4cc98fc8f35f015d9e2fb94bf136076" name="gad4cc98fc8f35f015d9e2fb94bf136076"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad4cc98fc8f35f015d9e2fb94bf136076">&#9670;&nbsp;</a></span>GLFW_KEY_H</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_H&#160;&#160;&#160;72</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga274655c8bfe39742684ca393cf8ed093" name="ga274655c8bfe39742684ca393cf8ed093"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga274655c8bfe39742684ca393cf8ed093">&#9670;&nbsp;</a></span>GLFW_KEY_I</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_I&#160;&#160;&#160;73</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga65ff2aedb129a3149ad9cb3e4159a75f" name="ga65ff2aedb129a3149ad9cb3e4159a75f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga65ff2aedb129a3149ad9cb3e4159a75f">&#9670;&nbsp;</a></span>GLFW_KEY_J</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_J&#160;&#160;&#160;74</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4ae8debadf6d2a691badae0b53ea3ba0" name="ga4ae8debadf6d2a691badae0b53ea3ba0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4ae8debadf6d2a691badae0b53ea3ba0">&#9670;&nbsp;</a></span>GLFW_KEY_K</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_K&#160;&#160;&#160;75</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaaa8b54a13f6b1eed85ac86f82d550db2" name="gaaa8b54a13f6b1eed85ac86f82d550db2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaaa8b54a13f6b1eed85ac86f82d550db2">&#9670;&nbsp;</a></span>GLFW_KEY_L</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_L&#160;&#160;&#160;76</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4d7f0260c82e4ea3d6ebc7a21d6e3716" name="ga4d7f0260c82e4ea3d6ebc7a21d6e3716"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4d7f0260c82e4ea3d6ebc7a21d6e3716">&#9670;&nbsp;</a></span>GLFW_KEY_M</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_M&#160;&#160;&#160;77</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae00856dfeb5d13aafebf59d44de5cdda" name="gae00856dfeb5d13aafebf59d44de5cdda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae00856dfeb5d13aafebf59d44de5cdda">&#9670;&nbsp;</a></span>GLFW_KEY_N</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_N&#160;&#160;&#160;78</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaecbbb79130df419d58dd7f09a169efe9" name="gaecbbb79130df419d58dd7f09a169efe9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaecbbb79130df419d58dd7f09a169efe9">&#9670;&nbsp;</a></span>GLFW_KEY_O</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_O&#160;&#160;&#160;79</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8fc15819c1094fb2afa01d84546b33e1" name="ga8fc15819c1094fb2afa01d84546b33e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8fc15819c1094fb2afa01d84546b33e1">&#9670;&nbsp;</a></span>GLFW_KEY_P</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_P&#160;&#160;&#160;80</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafdd01e38b120d67cf51e348bb47f3964" name="gafdd01e38b120d67cf51e348bb47f3964"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafdd01e38b120d67cf51e348bb47f3964">&#9670;&nbsp;</a></span>GLFW_KEY_Q</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_Q&#160;&#160;&#160;81</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4ce6c70a0c98c50b3fe4ab9a728d4d36" name="ga4ce6c70a0c98c50b3fe4ab9a728d4d36"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4ce6c70a0c98c50b3fe4ab9a728d4d36">&#9670;&nbsp;</a></span>GLFW_KEY_R</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_R&#160;&#160;&#160;82</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga1570e2ccaab036ea82bed66fc1dab2a9" name="ga1570e2ccaab036ea82bed66fc1dab2a9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1570e2ccaab036ea82bed66fc1dab2a9">&#9670;&nbsp;</a></span>GLFW_KEY_S</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_S&#160;&#160;&#160;83</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga90e0560422ec7a30e7f3f375bc9f37f9" name="ga90e0560422ec7a30e7f3f375bc9f37f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga90e0560422ec7a30e7f3f375bc9f37f9">&#9670;&nbsp;</a></span>GLFW_KEY_T</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_T&#160;&#160;&#160;84</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gacad52f3bf7d378fc0ffa72a76769256d" name="gacad52f3bf7d378fc0ffa72a76769256d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacad52f3bf7d378fc0ffa72a76769256d">&#9670;&nbsp;</a></span>GLFW_KEY_U</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_U&#160;&#160;&#160;85</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga22c7763899ecf7788862e5f90eacce6b" name="ga22c7763899ecf7788862e5f90eacce6b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga22c7763899ecf7788862e5f90eacce6b">&#9670;&nbsp;</a></span>GLFW_KEY_V</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_V&#160;&#160;&#160;86</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaa06a712e6202661fc03da5bdb7b6e545" name="gaa06a712e6202661fc03da5bdb7b6e545"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa06a712e6202661fc03da5bdb7b6e545">&#9670;&nbsp;</a></span>GLFW_KEY_W</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_W&#160;&#160;&#160;87</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gac1c42c0bf4192cea713c55598b06b744" name="gac1c42c0bf4192cea713c55598b06b744"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac1c42c0bf4192cea713c55598b06b744">&#9670;&nbsp;</a></span>GLFW_KEY_X</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_X&#160;&#160;&#160;88</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafd9f115a549effdf8e372a787c360313" name="gafd9f115a549effdf8e372a787c360313"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafd9f115a549effdf8e372a787c360313">&#9670;&nbsp;</a></span>GLFW_KEY_Y</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_Y&#160;&#160;&#160;89</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gac489e208c26afda8d4938ed88718760a" name="gac489e208c26afda8d4938ed88718760a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac489e208c26afda8d4938ed88718760a">&#9670;&nbsp;</a></span>GLFW_KEY_Z</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_Z&#160;&#160;&#160;90</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad1c8d9adac53925276ecb1d592511d8a" name="gad1c8d9adac53925276ecb1d592511d8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad1c8d9adac53925276ecb1d592511d8a">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_BRACKET</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT_BRACKET&#160;&#160;&#160;91 /* [ */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab8155ea99d1ab27ff56f24f8dc73f8d1" name="gab8155ea99d1ab27ff56f24f8dc73f8d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab8155ea99d1ab27ff56f24f8dc73f8d1">&#9670;&nbsp;</a></span>GLFW_KEY_BACKSLASH</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_BACKSLASH&#160;&#160;&#160;92 /* \ */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga86ef225fd6a66404caae71044cdd58d8" name="ga86ef225fd6a66404caae71044cdd58d8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga86ef225fd6a66404caae71044cdd58d8">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_BRACKET</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT_BRACKET&#160;&#160;&#160;93 /* ] */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7a3701fb4e2a0b136ff4b568c3c8d668" name="ga7a3701fb4e2a0b136ff4b568c3c8d668"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7a3701fb4e2a0b136ff4b568c3c8d668">&#9670;&nbsp;</a></span>GLFW_KEY_GRAVE_ACCENT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_GRAVE_ACCENT&#160;&#160;&#160;96 /* ` */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadc78dad3dab76bcd4b5c20114052577a" name="gadc78dad3dab76bcd4b5c20114052577a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadc78dad3dab76bcd4b5c20114052577a">&#9670;&nbsp;</a></span>GLFW_KEY_WORLD_1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_WORLD_1&#160;&#160;&#160;161 /* non-US #1 */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga20494bfebf0bb4fc9503afca18ab2c5e" name="ga20494bfebf0bb4fc9503afca18ab2c5e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga20494bfebf0bb4fc9503afca18ab2c5e">&#9670;&nbsp;</a></span>GLFW_KEY_WORLD_2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_WORLD_2&#160;&#160;&#160;162 /* non-US #2 */</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaac6596c350b635c245113b81c2123b93" name="gaac6596c350b635c245113b81c2123b93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaac6596c350b635c245113b81c2123b93">&#9670;&nbsp;</a></span>GLFW_KEY_ESCAPE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_ESCAPE&#160;&#160;&#160;256</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9555a92ecbecdbc1f3435219c571d667" name="ga9555a92ecbecdbc1f3435219c571d667"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9555a92ecbecdbc1f3435219c571d667">&#9670;&nbsp;</a></span>GLFW_KEY_ENTER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_ENTER&#160;&#160;&#160;257</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6908a4bda9950a3e2b73f794bbe985df" name="ga6908a4bda9950a3e2b73f794bbe985df"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6908a4bda9950a3e2b73f794bbe985df">&#9670;&nbsp;</a></span>GLFW_KEY_TAB</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_TAB&#160;&#160;&#160;258</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6c0df1fe2f156bbd5a98c66d76ff3635" name="ga6c0df1fe2f156bbd5a98c66d76ff3635"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6c0df1fe2f156bbd5a98c66d76ff3635">&#9670;&nbsp;</a></span>GLFW_KEY_BACKSPACE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_BACKSPACE&#160;&#160;&#160;259</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga373ac7365435d6b0eb1068f470e34f47" name="ga373ac7365435d6b0eb1068f470e34f47"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga373ac7365435d6b0eb1068f470e34f47">&#9670;&nbsp;</a></span>GLFW_KEY_INSERT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_INSERT&#160;&#160;&#160;260</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gadb111e4df74b8a715f2c05dad58d2682" name="gadb111e4df74b8a715f2c05dad58d2682"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadb111e4df74b8a715f2c05dad58d2682">&#9670;&nbsp;</a></span>GLFW_KEY_DELETE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_DELETE&#160;&#160;&#160;261</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga06ba07662e8c291a4a84535379ffc7ac" name="ga06ba07662e8c291a4a84535379ffc7ac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga06ba07662e8c291a4a84535379ffc7ac">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT&#160;&#160;&#160;262</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae12a010d33c309a67ab9460c51eb2462" name="gae12a010d33c309a67ab9460c51eb2462"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae12a010d33c309a67ab9460c51eb2462">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT&#160;&#160;&#160;263</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae2e3958c71595607416aa7bf082be2f9" name="gae2e3958c71595607416aa7bf082be2f9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae2e3958c71595607416aa7bf082be2f9">&#9670;&nbsp;</a></span>GLFW_KEY_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_DOWN&#160;&#160;&#160;264</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga2f3342b194020d3544c67e3506b6f144" name="ga2f3342b194020d3544c67e3506b6f144"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2f3342b194020d3544c67e3506b6f144">&#9670;&nbsp;</a></span>GLFW_KEY_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_UP&#160;&#160;&#160;265</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga3ab731f9622f0db280178a5f3cc6d586" name="ga3ab731f9622f0db280178a5f3cc6d586"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3ab731f9622f0db280178a5f3cc6d586">&#9670;&nbsp;</a></span>GLFW_KEY_PAGE_UP</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_PAGE_UP&#160;&#160;&#160;266</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaee0a8fa442001cc2147812f84b59041c" name="gaee0a8fa442001cc2147812f84b59041c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaee0a8fa442001cc2147812f84b59041c">&#9670;&nbsp;</a></span>GLFW_KEY_PAGE_DOWN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_PAGE_DOWN&#160;&#160;&#160;267</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga41452c7287195d481e43207318c126a7" name="ga41452c7287195d481e43207318c126a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga41452c7287195d481e43207318c126a7">&#9670;&nbsp;</a></span>GLFW_KEY_HOME</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_HOME&#160;&#160;&#160;268</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga86587ea1df19a65978d3e3b8439bedd9" name="ga86587ea1df19a65978d3e3b8439bedd9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga86587ea1df19a65978d3e3b8439bedd9">&#9670;&nbsp;</a></span>GLFW_KEY_END</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_END&#160;&#160;&#160;269</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga92c1d2c9d63485f3d70f94f688d48672" name="ga92c1d2c9d63485f3d70f94f688d48672"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga92c1d2c9d63485f3d70f94f688d48672">&#9670;&nbsp;</a></span>GLFW_KEY_CAPS_LOCK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_CAPS_LOCK&#160;&#160;&#160;280</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf622b63b9537f7084c2ab649b8365630" name="gaf622b63b9537f7084c2ab649b8365630"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf622b63b9537f7084c2ab649b8365630">&#9670;&nbsp;</a></span>GLFW_KEY_SCROLL_LOCK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_SCROLL_LOCK&#160;&#160;&#160;281</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga3946edc362aeff213b2be6304296cf43" name="ga3946edc362aeff213b2be6304296cf43"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3946edc362aeff213b2be6304296cf43">&#9670;&nbsp;</a></span>GLFW_KEY_NUM_LOCK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_NUM_LOCK&#160;&#160;&#160;282</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf964c2e65e97d0cf785a5636ee8df642" name="gaf964c2e65e97d0cf785a5636ee8df642"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf964c2e65e97d0cf785a5636ee8df642">&#9670;&nbsp;</a></span>GLFW_KEY_PRINT_SCREEN</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_PRINT_SCREEN&#160;&#160;&#160;283</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8116b9692d87382afb5849b6d8907f18" name="ga8116b9692d87382afb5849b6d8907f18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8116b9692d87382afb5849b6d8907f18">&#9670;&nbsp;</a></span>GLFW_KEY_PAUSE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_PAUSE&#160;&#160;&#160;284</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafb8d66c573acf22e364049477dcbea30" name="gafb8d66c573acf22e364049477dcbea30"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb8d66c573acf22e364049477dcbea30">&#9670;&nbsp;</a></span>GLFW_KEY_F1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F1&#160;&#160;&#160;290</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga0900750aff94889b940f5e428c07daee" name="ga0900750aff94889b940f5e428c07daee"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0900750aff94889b940f5e428c07daee">&#9670;&nbsp;</a></span>GLFW_KEY_F2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F2&#160;&#160;&#160;291</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaed7cd729c0147a551bb8b7bb36c17015" name="gaed7cd729c0147a551bb8b7bb36c17015"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaed7cd729c0147a551bb8b7bb36c17015">&#9670;&nbsp;</a></span>GLFW_KEY_F3</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F3&#160;&#160;&#160;292</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9b61ebd0c63b44b7332fda2c9763eaa6" name="ga9b61ebd0c63b44b7332fda2c9763eaa6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9b61ebd0c63b44b7332fda2c9763eaa6">&#9670;&nbsp;</a></span>GLFW_KEY_F4</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F4&#160;&#160;&#160;293</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf258dda9947daa428377938ed577c8c2" name="gaf258dda9947daa428377938ed577c8c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf258dda9947daa428377938ed577c8c2">&#9670;&nbsp;</a></span>GLFW_KEY_F5</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F5&#160;&#160;&#160;294</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d" name="ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d">&#9670;&nbsp;</a></span>GLFW_KEY_F6</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F6&#160;&#160;&#160;295</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gacca6ef8a2162c52a0ac1d881e8d9c38a" name="gacca6ef8a2162c52a0ac1d881e8d9c38a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacca6ef8a2162c52a0ac1d881e8d9c38a">&#9670;&nbsp;</a></span>GLFW_KEY_F7</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F7&#160;&#160;&#160;296</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gac9d39390336ae14e4a93e295de43c7e8" name="gac9d39390336ae14e4a93e295de43c7e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac9d39390336ae14e4a93e295de43c7e8">&#9670;&nbsp;</a></span>GLFW_KEY_F8</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F8&#160;&#160;&#160;297</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae40de0de1c9f21cd26c9afa3d7050851" name="gae40de0de1c9f21cd26c9afa3d7050851"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae40de0de1c9f21cd26c9afa3d7050851">&#9670;&nbsp;</a></span>GLFW_KEY_F9</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F9&#160;&#160;&#160;298</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga718d11d2f7d57471a2f6a894235995b1" name="ga718d11d2f7d57471a2f6a894235995b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga718d11d2f7d57471a2f6a894235995b1">&#9670;&nbsp;</a></span>GLFW_KEY_F10</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F10&#160;&#160;&#160;299</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga0bc04b11627e7d69339151e7306b2832" name="ga0bc04b11627e7d69339151e7306b2832"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0bc04b11627e7d69339151e7306b2832">&#9670;&nbsp;</a></span>GLFW_KEY_F11</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F11&#160;&#160;&#160;300</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf5908fa9b0a906ae03fc2c61ac7aa3e2" name="gaf5908fa9b0a906ae03fc2c61ac7aa3e2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf5908fa9b0a906ae03fc2c61ac7aa3e2">&#9670;&nbsp;</a></span>GLFW_KEY_F12</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F12&#160;&#160;&#160;301</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad637f4308655e1001bd6ad942bc0fd4b" name="gad637f4308655e1001bd6ad942bc0fd4b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad637f4308655e1001bd6ad942bc0fd4b">&#9670;&nbsp;</a></span>GLFW_KEY_F13</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F13&#160;&#160;&#160;302</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf14c66cff3396e5bd46e803c035e6c1f" name="gaf14c66cff3396e5bd46e803c035e6c1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf14c66cff3396e5bd46e803c035e6c1f">&#9670;&nbsp;</a></span>GLFW_KEY_F14</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F14&#160;&#160;&#160;303</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7f70970db6e8be1794da8516a6d14058" name="ga7f70970db6e8be1794da8516a6d14058"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7f70970db6e8be1794da8516a6d14058">&#9670;&nbsp;</a></span>GLFW_KEY_F15</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F15&#160;&#160;&#160;304</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaa582dbb1d2ba2050aa1dca0838095b27" name="gaa582dbb1d2ba2050aa1dca0838095b27"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa582dbb1d2ba2050aa1dca0838095b27">&#9670;&nbsp;</a></span>GLFW_KEY_F16</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F16&#160;&#160;&#160;305</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga972ce5c365e2394b36104b0e3125c748" name="ga972ce5c365e2394b36104b0e3125c748"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga972ce5c365e2394b36104b0e3125c748">&#9670;&nbsp;</a></span>GLFW_KEY_F17</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F17&#160;&#160;&#160;306</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaebf6391058d5566601e357edc5ea737c" name="gaebf6391058d5566601e357edc5ea737c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaebf6391058d5566601e357edc5ea737c">&#9670;&nbsp;</a></span>GLFW_KEY_F18</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F18&#160;&#160;&#160;307</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaec011d9ba044058cb54529da710e9791" name="gaec011d9ba044058cb54529da710e9791"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaec011d9ba044058cb54529da710e9791">&#9670;&nbsp;</a></span>GLFW_KEY_F19</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F19&#160;&#160;&#160;308</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga82b9c721ada04cd5ca8de767da38022f" name="ga82b9c721ada04cd5ca8de767da38022f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga82b9c721ada04cd5ca8de767da38022f">&#9670;&nbsp;</a></span>GLFW_KEY_F20</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F20&#160;&#160;&#160;309</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga356afb14d3440ff2bb378f74f7ebc60f" name="ga356afb14d3440ff2bb378f74f7ebc60f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga356afb14d3440ff2bb378f74f7ebc60f">&#9670;&nbsp;</a></span>GLFW_KEY_F21</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F21&#160;&#160;&#160;310</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga90960bd2a155f2b09675324d3dff1565" name="ga90960bd2a155f2b09675324d3dff1565"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga90960bd2a155f2b09675324d3dff1565">&#9670;&nbsp;</a></span>GLFW_KEY_F22</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F22&#160;&#160;&#160;311</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga43c21099aac10952d1be909a8ddee4d5" name="ga43c21099aac10952d1be909a8ddee4d5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga43c21099aac10952d1be909a8ddee4d5">&#9670;&nbsp;</a></span>GLFW_KEY_F23</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F23&#160;&#160;&#160;312</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8150374677b5bed3043408732152dea2" name="ga8150374677b5bed3043408732152dea2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8150374677b5bed3043408732152dea2">&#9670;&nbsp;</a></span>GLFW_KEY_F24</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F24&#160;&#160;&#160;313</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaa4bbd93ed73bb4c6ae7d83df880b7199" name="gaa4bbd93ed73bb4c6ae7d83df880b7199"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa4bbd93ed73bb4c6ae7d83df880b7199">&#9670;&nbsp;</a></span>GLFW_KEY_F25</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_F25&#160;&#160;&#160;314</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga10515dafc55b71e7683f5b4fedd1c70d" name="ga10515dafc55b71e7683f5b4fedd1c70d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga10515dafc55b71e7683f5b4fedd1c70d">&#9670;&nbsp;</a></span>GLFW_KEY_KP_0</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_0&#160;&#160;&#160;320</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf3a29a334402c5eaf0b3439edf5587c3" name="gaf3a29a334402c5eaf0b3439edf5587c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf3a29a334402c5eaf0b3439edf5587c3">&#9670;&nbsp;</a></span>GLFW_KEY_KP_1</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_1&#160;&#160;&#160;321</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaf82d5a802ab8213c72653d7480c16f13" name="gaf82d5a802ab8213c72653d7480c16f13"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf82d5a802ab8213c72653d7480c16f13">&#9670;&nbsp;</a></span>GLFW_KEY_KP_2</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_2&#160;&#160;&#160;322</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7e25ff30d56cd512828c1d4ae8d54ef2" name="ga7e25ff30d56cd512828c1d4ae8d54ef2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7e25ff30d56cd512828c1d4ae8d54ef2">&#9670;&nbsp;</a></span>GLFW_KEY_KP_3</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_3&#160;&#160;&#160;323</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gada7ec86778b85e0b4de0beea72234aea" name="gada7ec86778b85e0b4de0beea72234aea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gada7ec86778b85e0b4de0beea72234aea">&#9670;&nbsp;</a></span>GLFW_KEY_KP_4</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_4&#160;&#160;&#160;324</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9a5be274434866c51738cafbb6d26b45" name="ga9a5be274434866c51738cafbb6d26b45"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9a5be274434866c51738cafbb6d26b45">&#9670;&nbsp;</a></span>GLFW_KEY_KP_5</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_5&#160;&#160;&#160;325</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafc141b0f8450519084c01092a3157faa" name="gafc141b0f8450519084c01092a3157faa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafc141b0f8450519084c01092a3157faa">&#9670;&nbsp;</a></span>GLFW_KEY_KP_6</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_6&#160;&#160;&#160;326</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8882f411f05d04ec77a9563974bbfa53" name="ga8882f411f05d04ec77a9563974bbfa53"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8882f411f05d04ec77a9563974bbfa53">&#9670;&nbsp;</a></span>GLFW_KEY_KP_7</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_7&#160;&#160;&#160;327</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab2ea2e6a12f89d315045af520ac78cec" name="gab2ea2e6a12f89d315045af520ac78cec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab2ea2e6a12f89d315045af520ac78cec">&#9670;&nbsp;</a></span>GLFW_KEY_KP_8</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_8&#160;&#160;&#160;328</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafb21426b630ed4fcc084868699ba74c1" name="gafb21426b630ed4fcc084868699ba74c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb21426b630ed4fcc084868699ba74c1">&#9670;&nbsp;</a></span>GLFW_KEY_KP_9</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_9&#160;&#160;&#160;329</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4e231d968796331a9ea0dbfb98d4005b" name="ga4e231d968796331a9ea0dbfb98d4005b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4e231d968796331a9ea0dbfb98d4005b">&#9670;&nbsp;</a></span>GLFW_KEY_KP_DECIMAL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_DECIMAL&#160;&#160;&#160;330</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gabca1733780a273d549129ad0f250d1e5" name="gabca1733780a273d549129ad0f250d1e5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabca1733780a273d549129ad0f250d1e5">&#9670;&nbsp;</a></span>GLFW_KEY_KP_DIVIDE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_DIVIDE&#160;&#160;&#160;331</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9ada267eb0e78ed2ada8701dd24a56ef" name="ga9ada267eb0e78ed2ada8701dd24a56ef"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9ada267eb0e78ed2ada8701dd24a56ef">&#9670;&nbsp;</a></span>GLFW_KEY_KP_MULTIPLY</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_MULTIPLY&#160;&#160;&#160;332</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaa3dbd60782ff93d6082a124bce1fa236" name="gaa3dbd60782ff93d6082a124bce1fa236"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa3dbd60782ff93d6082a124bce1fa236">&#9670;&nbsp;</a></span>GLFW_KEY_KP_SUBTRACT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_SUBTRACT&#160;&#160;&#160;333</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad09c7c98acc79e89aa6a0a91275becac" name="gad09c7c98acc79e89aa6a0a91275becac"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad09c7c98acc79e89aa6a0a91275becac">&#9670;&nbsp;</a></span>GLFW_KEY_KP_ADD</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_ADD&#160;&#160;&#160;334</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga4f728f8738f2986bd63eedd3d412e8cf" name="ga4f728f8738f2986bd63eedd3d412e8cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4f728f8738f2986bd63eedd3d412e8cf">&#9670;&nbsp;</a></span>GLFW_KEY_KP_ENTER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_ENTER&#160;&#160;&#160;335</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaebdc76d4a808191e6d21b7e4ad2acd97" name="gaebdc76d4a808191e6d21b7e4ad2acd97"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaebdc76d4a808191e6d21b7e4ad2acd97">&#9670;&nbsp;</a></span>GLFW_KEY_KP_EQUAL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_KP_EQUAL&#160;&#160;&#160;336</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga8a530a28a65c44ab5d00b759b756d3f6" name="ga8a530a28a65c44ab5d00b759b756d3f6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8a530a28a65c44ab5d00b759b756d3f6">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_SHIFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT_SHIFT&#160;&#160;&#160;340</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9f97b743e81460ac4b2deddecd10a464" name="ga9f97b743e81460ac4b2deddecd10a464"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9f97b743e81460ac4b2deddecd10a464">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_CONTROL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT_CONTROL&#160;&#160;&#160;341</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga7f27dabf63a7789daa31e1c96790219b" name="ga7f27dabf63a7789daa31e1c96790219b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7f27dabf63a7789daa31e1c96790219b">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_ALT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT_ALT&#160;&#160;&#160;342</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gafb1207c91997fc295afd1835fbc5641a" name="gafb1207c91997fc295afd1835fbc5641a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb1207c91997fc295afd1835fbc5641a">&#9670;&nbsp;</a></span>GLFW_KEY_LEFT_SUPER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LEFT_SUPER&#160;&#160;&#160;343</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gaffca36b99c9dce1a19cb9befbadce691" name="gaffca36b99c9dce1a19cb9befbadce691"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaffca36b99c9dce1a19cb9befbadce691">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_SHIFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT_SHIFT&#160;&#160;&#160;344</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad1ca2094b2694e7251d0ab1fd34f8519" name="gad1ca2094b2694e7251d0ab1fd34f8519"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad1ca2094b2694e7251d0ab1fd34f8519">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_CONTROL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT_CONTROL&#160;&#160;&#160;345</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga687b38009131cfdd07a8d05fff8fa446" name="ga687b38009131cfdd07a8d05fff8fa446"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga687b38009131cfdd07a8d05fff8fa446">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_ALT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT_ALT&#160;&#160;&#160;346</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gad4547a3e8e247594acb60423fe6502db" name="gad4547a3e8e247594acb60423fe6502db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad4547a3e8e247594acb60423fe6502db">&#9670;&nbsp;</a></span>GLFW_KEY_RIGHT_SUPER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_RIGHT_SUPER&#160;&#160;&#160;347</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga9845be48a745fc232045c9ec174d8820" name="ga9845be48a745fc232045c9ec174d8820"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9845be48a745fc232045c9ec174d8820">&#9670;&nbsp;</a></span>GLFW_KEY_MENU</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_MENU&#160;&#160;&#160;348</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga442cbaef7bfb9a4ba13594dd7fbf2789" name="ga442cbaef7bfb9a4ba13594dd7fbf2789"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga442cbaef7bfb9a4ba13594dd7fbf2789">&#9670;&nbsp;</a></span>GLFW_KEY_LAST</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_KEY_LAST&#160;&#160;&#160;<a class="el" href="group__keys.html#ga9845be48a745fc232045c9ec174d8820">GLFW_KEY_MENU</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__mods.html b/libs/glfw-3.3.8/docs/html/group__mods.html
new file mode 100644
index 0000000..94fc54d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__mods.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Modifier key flags</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Modifier key flags<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#input_key">key input</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga14994d3196c290aaa347248e51740274"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga14994d3196c290aaa347248e51740274">GLFW_MOD_SHIFT</a>&#160;&#160;&#160;0x0001</td></tr>
+<tr class="memdesc:ga14994d3196c290aaa347248e51740274"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Shift keys were held down. <a href="group__mods.html#ga14994d3196c290aaa347248e51740274">More...</a><br /></td></tr>
+<tr class="separator:ga14994d3196c290aaa347248e51740274"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ed94871c3208eefd85713fa929d45aa"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">GLFW_MOD_CONTROL</a>&#160;&#160;&#160;0x0002</td></tr>
+<tr class="memdesc:ga6ed94871c3208eefd85713fa929d45aa"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Control keys were held down. <a href="group__mods.html#ga6ed94871c3208eefd85713fa929d45aa">More...</a><br /></td></tr>
+<tr class="separator:ga6ed94871c3208eefd85713fa929d45aa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad2acd5633463c29e07008687ea73c0f4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">GLFW_MOD_ALT</a>&#160;&#160;&#160;0x0004</td></tr>
+<tr class="memdesc:gad2acd5633463c29e07008687ea73c0f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Alt keys were held down. <a href="group__mods.html#gad2acd5633463c29e07008687ea73c0f4">More...</a><br /></td></tr>
+<tr class="separator:gad2acd5633463c29e07008687ea73c0f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">GLFW_MOD_SUPER</a>&#160;&#160;&#160;0x0008</td></tr>
+<tr class="memdesc:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set one or more Super keys were held down. <a href="group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1">More...</a><br /></td></tr>
+<tr class="separator:ga6b64ba10ea0227cf6f42efd0a220aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaefeef8fcf825a6e43e241b337897200f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a>&#160;&#160;&#160;0x0010</td></tr>
+<tr class="memdesc:gaefeef8fcf825a6e43e241b337897200f"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Caps Lock key is enabled. <a href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">More...</a><br /></td></tr>
+<tr class="separator:gaefeef8fcf825a6e43e241b337897200f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga64e020b8a42af8376e944baf61feecbe"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a>&#160;&#160;&#160;0x0020</td></tr>
+<tr class="memdesc:ga64e020b8a42af8376e944baf61feecbe"><td class="mdescLeft">&#160;</td><td class="mdescRight">If this bit is set the Num Lock key is enabled. <a href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">More...</a><br /></td></tr>
+<tr class="separator:ga64e020b8a42af8376e944baf61feecbe"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga14994d3196c290aaa347248e51740274" name="ga14994d3196c290aaa347248e51740274"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga14994d3196c290aaa347248e51740274">&#9670;&nbsp;</a></span>GLFW_MOD_SHIFT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_SHIFT&#160;&#160;&#160;0x0001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set one or more Shift keys were held down. </p>
+
+</div>
+</div>
+<a id="ga6ed94871c3208eefd85713fa929d45aa" name="ga6ed94871c3208eefd85713fa929d45aa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6ed94871c3208eefd85713fa929d45aa">&#9670;&nbsp;</a></span>GLFW_MOD_CONTROL</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_CONTROL&#160;&#160;&#160;0x0002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set one or more Control keys were held down. </p>
+
+</div>
+</div>
+<a id="gad2acd5633463c29e07008687ea73c0f4" name="gad2acd5633463c29e07008687ea73c0f4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad2acd5633463c29e07008687ea73c0f4">&#9670;&nbsp;</a></span>GLFW_MOD_ALT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_ALT&#160;&#160;&#160;0x0004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set one or more Alt keys were held down. </p>
+
+</div>
+</div>
+<a id="ga6b64ba10ea0227cf6f42efd0a220aba1" name="ga6b64ba10ea0227cf6f42efd0a220aba1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6b64ba10ea0227cf6f42efd0a220aba1">&#9670;&nbsp;</a></span>GLFW_MOD_SUPER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_SUPER&#160;&#160;&#160;0x0008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set one or more Super keys were held down. </p>
+
+</div>
+</div>
+<a id="gaefeef8fcf825a6e43e241b337897200f" name="gaefeef8fcf825a6e43e241b337897200f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaefeef8fcf825a6e43e241b337897200f">&#9670;&nbsp;</a></span>GLFW_MOD_CAPS_LOCK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_CAPS_LOCK&#160;&#160;&#160;0x0010</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set the Caps Lock key is enabled and the <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> input mode is set. </p>
+
+</div>
+</div>
+<a id="ga64e020b8a42af8376e944baf61feecbe" name="ga64e020b8a42af8376e944baf61feecbe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga64e020b8a42af8376e944baf61feecbe">&#9670;&nbsp;</a></span>GLFW_MOD_NUM_LOCK</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MOD_NUM_LOCK&#160;&#160;&#160;0x0020</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If this bit is set the Num Lock key is enabled and the <a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a> input mode is set. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__monitor.html b/libs/glfw-3.3.8/docs/html/group__monitor.html
new file mode 100644
index 0000000..4df6209
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__monitor.html
@@ -0,0 +1,841 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Monitor reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Monitor reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for monitor related functions and types. For more task-oriented information, see the <a class="el" href="monitor_guide.html">Monitor guide</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td></tr>
+<tr class="memdesc:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque monitor object. <a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">More...</a><br /></td></tr>
+<tr class="separator:ga8d9efd1cde9426692c73fe40437d0ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaabe16caca8dea952504dfdebdf4cd249"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td></tr>
+<tr class="memdesc:gaabe16caca8dea952504dfdebdf4cd249"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for monitor configuration callbacks. <a href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">More...</a><br /></td></tr>
+<tr class="separator:gaabe16caca8dea952504dfdebdf4cd249"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga902c2816ac9b34b757282daab59b2565"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">GLFWvidmode</a></td></tr>
+<tr class="memdesc:ga902c2816ac9b34b757282daab59b2565"><td class="mdescLeft">&#160;</td><td class="mdescRight">Video mode type. <a href="group__monitor.html#ga902c2816ac9b34b757282daab59b2565">More...</a><br /></td></tr>
+<tr class="separator:ga902c2816ac9b34b757282daab59b2565"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga939cf093cb0af0498b7b54dc2e181404"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">GLFWgammaramp</a></td></tr>
+<tr class="memdesc:ga939cf093cb0af0498b7b54dc2e181404"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gamma ramp. <a href="group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404">More...</a><br /></td></tr>
+<tr class="separator:ga939cf093cb0af0498b7b54dc2e181404"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga70b1156d5d24e9928f145d6c864369d2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a> (int *count)</td></tr>
+<tr class="memdesc:ga70b1156d5d24e9928f145d6c864369d2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the currently connected monitors. <a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">More...</a><br /></td></tr>
+<tr class="separator:ga70b1156d5d24e9928f145d6c864369d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3adb24947eb709e1874028272e5dfc5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> (void)</td></tr>
+<tr class="memdesc:gac3adb24947eb709e1874028272e5dfc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the primary monitor. <a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">More...</a><br /></td></tr>
+<tr class="separator:gac3adb24947eb709e1874028272e5dfc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga102f54e7acc9149edbcf0997152df8c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos)</td></tr>
+<tr class="memdesc:ga102f54e7acc9149edbcf0997152df8c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the position of the monitor's viewport on the virtual screen. <a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">More...</a><br /></td></tr>
+<tr class="separator:ga102f54e7acc9149edbcf0997152df8c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *xpos, int *ypos, int *width, int *height)</td></tr>
+<tr class="memdesc:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the work area of the monitor. <a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">More...</a><br /></td></tr>
+<tr class="separator:ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *widthMM, int *heightMM)</td></tr>
+<tr class="memdesc:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the physical size of the monitor. <a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">More...</a><br /></td></tr>
+<tr class="separator:ga7d8bffc6c55539286a6bd20d32a8d7ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad3152e84465fa620b601265ebfcdb21b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float *xscale, float *yscale)</td></tr>
+<tr class="memdesc:gad3152e84465fa620b601265ebfcdb21b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified monitor. <a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">More...</a><br /></td></tr>
+<tr class="separator:gad3152e84465fa620b601265ebfcdb21b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7af83e13489d90379588fb331b9e4b68"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga7af83e13489d90379588fb331b9e4b68"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of the specified monitor. <a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">More...</a><br /></td></tr>
+<tr class="separator:ga7af83e13489d90379588fb331b9e4b68"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga702750e24313a686d3637297b6e85fda"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, void *pointer)</td></tr>
+<tr class="memdesc:ga702750e24313a686d3637297b6e85fda"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified monitor. <a href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">More...</a><br /></td></tr>
+<tr class="separator:ga702750e24313a686d3637297b6e85fda"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified monitor. <a href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">More...</a><br /></td></tr>
+<tr class="separator:ga1adbfbfb8cd58b23cfee82e574fbbdc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab39df645587c8518192aa746c2fb06c3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a> (<a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> callback)</td></tr>
+<tr class="memdesc:gab39df645587c8518192aa746c2fb06c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the monitor configuration callback. <a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">More...</a><br /></td></tr>
+<tr class="separator:gab39df645587c8518192aa746c2fb06c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int *count)</td></tr>
+<tr class="memdesc:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the available video modes for the specified monitor. <a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">More...</a><br /></td></tr>
+<tr class="separator:gad2e24d2843cb7d6c26202cddd530fc1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gaba376fa7e76634b4788bddc505d6c9d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current mode of the specified monitor. <a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">More...</a><br /></td></tr>
+<tr class="separator:gaba376fa7e76634b4788bddc505d6c9d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6ac582625c990220785ddd34efa3169a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, float gamma)</td></tr>
+<tr class="memdesc:ga6ac582625c990220785ddd34efa3169a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Generates a gamma ramp and sets it for the specified monitor. <a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">More...</a><br /></td></tr>
+<tr class="separator:ga6ac582625c990220785ddd34efa3169a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga76ba90debcf0062b5c4b73052b24f96f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">More...</a><br /></td></tr>
+<tr class="separator:ga76ba90debcf0062b5c4b73052b24f96f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *ramp)</td></tr>
+<tr class="memdesc:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current gamma ramp for the specified monitor. <a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">More...</a><br /></td></tr>
+<tr class="separator:ga583f0ffd0d29613d8cd172b996bbf0dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga8d9efd1cde9426692c73fe40437d0ae3" name="ga8d9efd1cde9426692c73fe40437d0ae3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8d9efd1cde9426692c73fe40437d0ae3">&#9670;&nbsp;</a></span>GLFWmonitor</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Opaque monitor object.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_object">Monitor objects</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaabe16caca8dea952504dfdebdf4cd249" name="gaabe16caca8dea952504dfdebdf4cd249"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaabe16caca8dea952504dfdebdf4cd249">&#9670;&nbsp;</a></span>GLFWmonitorfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWmonitorfun) (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int event)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for monitor configuration callbacks. A monitor callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
+<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1173</div></div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor that was connected or disconnected. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">event</td><td>One of <code>GLFW_CONNECTED</code> or <code>GLFW_DISCONNECTED</code>. Future releases may add more events.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga902c2816ac9b34b757282daab59b2565" name="ga902c2816ac9b34b757282daab59b2565"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga902c2816ac9b34b757282daab59b2565">&#9670;&nbsp;</a></span>GLFWvidmode</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This describes a single video mode.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added refresh rate member. </dd></dl>
+
+</div>
+</div>
+<a id="ga939cf093cb0af0498b7b54dc2e181404" name="ga939cf093cb0af0498b7b54dc2e181404"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga939cf093cb0af0498b7b54dc2e181404">&#9670;&nbsp;</a></span>GLFWgammaramp</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This describes the gamma ramp for a monitor.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga70b1156d5d24e9928f145d6c864369d2" name="ga70b1156d5d24e9928f145d6c864369d2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga70b1156d5d24e9928f145d6c864369d2">&#9670;&nbsp;</a></span>glfwGetMonitors()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> ** glfwGetMonitors </td>
+ <td>(</td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>count</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns an array of handles for all currently connected monitors. The primary monitor is always first in the returned array. If no monitors were found, this function returns <code>NULL</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of monitors in the returned array. This is set to zero if an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of monitor handles, or <code>NULL</code> if no monitors were found or if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a> </dd>
+<dd>
+<a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gac3adb24947eb709e1874028272e5dfc5" name="gac3adb24947eb709e1874028272e5dfc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac3adb24947eb709e1874028272e5dfc5">&#9670;&nbsp;</a></span>glfwGetPrimaryMonitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> * glfwGetPrimaryMonitor </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the primary monitor. This is usually the monitor where elements like the task bar or global menu bar are located.</p>
+<dl class="section return"><dt>Returns</dt><dd>The primary monitor, or <code>NULL</code> if no monitors were found or if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The primary monitor is always first in the array returned by <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga102f54e7acc9149edbcf0997152df8c9" name="ga102f54e7acc9149edbcf0997152df8c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga102f54e7acc9149edbcf0997152df8c9">&#9670;&nbsp;</a></span>glfwGetMonitorPos()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetMonitorPos </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>ypos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the position, in screen coordinates, of the upper-left corner of the specified monitor.</p>
+<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the monitor x-coordinate, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the monitor y-coordinate, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0" name="ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">&#9670;&nbsp;</a></span>glfwGetMonitorWorkarea()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetMonitorWorkarea </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>ypos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the position, in screen coordinates, of the upper-left corner of the work area of the specified monitor along with the work area size in screen coordinates. The work area is defined as the area of the monitor not occluded by the operating system task bar where present. If no task bar exists then the work area is the monitor resolution in screen coordinates.</p>
+<p >Any or all of the position and size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position and size arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the monitor x-coordinate, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the monitor y-coordinate, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the monitor width, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the monitor height, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_workarea">Work area</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga7d8bffc6c55539286a6bd20d32a8d7ea" name="ga7d8bffc6c55539286a6bd20d32a8d7ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7d8bffc6c55539286a6bd20d32a8d7ea">&#9670;&nbsp;</a></span>glfwGetMonitorPhysicalSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetMonitorPhysicalSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>widthMM</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>heightMM</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the size, in millimetres, of the display area of the specified monitor.</p>
+<p >Some systems do not provide accurate monitor size information, either because the monitor <a href="https://en.wikipedia.org/wiki/Extended_display_identification_data">EDID</a> data is incorrect or because the driver does not report it accurately.</p>
+<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">widthMM</td><td>Where to store the width, in millimetres, of the monitor's display area, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">heightMM</td><td>Where to store the height, in millimetres, of the monitor's display area, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Windows:</b> On Windows 8 and earlier the physical size is calculated from the current resolution and system DPI instead of querying the monitor EDID data.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gad3152e84465fa620b601265ebfcdb21b" name="gad3152e84465fa620b601265ebfcdb21b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad3152e84465fa620b601265ebfcdb21b">&#9670;&nbsp;</a></span>glfwGetMonitorContentScale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetMonitorContentScale </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>xscale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>yscale</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the content scale for the specified monitor. The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
+<p >The content scale may depend on both the monitor resolution and pixel density and on user settings. It may be very different from the raw DPI calculated from the physical size and current resolution.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xscale</td><td>Where to store the x-axis content scale, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">yscale</td><td>Where to store the y-axis content scale, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_scale">Content scale</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga7af83e13489d90379588fb331b9e4b68" name="ga7af83e13489d90379588fb331b9e4b68"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7af83e13489d90379588fb331b9e4b68">&#9670;&nbsp;</a></span>glfwGetMonitorName()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetMonitorName </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns a human-readable name, encoded as UTF-8, of the specified monitor. The name typically reflects the make and model of the monitor and is not guaranteed to be unique among the connected monitors.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded name of the monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_properties">Monitor properties</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga702750e24313a686d3637297b6e85fda" name="ga702750e24313a686d3637297b6e85fda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga702750e24313a686d3637297b6e85fda">&#9670;&nbsp;</a></span>glfwSetMonitorUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetMonitorUserPointer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>pointer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the user-defined pointer of the specified monitor. The current value is retained until the monitor is disconnected. The initial value is <code>NULL</code>.</p>
+<p >This function may be called from the monitor callback, even for a monitor that is being disconnected.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose pointer to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga1adbfbfb8cd58b23cfee82e574fbbdc5" name="ga1adbfbfb8cd58b23cfee82e574fbbdc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1adbfbfb8cd58b23cfee82e574fbbdc5">&#9670;&nbsp;</a></span>glfwGetMonitorUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void * glfwGetMonitorUserPointer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current value of the user-defined pointer of the specified monitor. The initial value is <code>NULL</code>.</p>
+<p >This function may be called from the monitor callback, even for a monitor that is being disconnected.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose pointer to return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gab39df645587c8518192aa746c2fb06c3" name="gab39df645587c8518192aa746c2fb06c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab39df645587c8518192aa746c2fb06c3">&#9670;&nbsp;</a></span>glfwSetMonitorCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a> glfwSetMonitorCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">GLFWmonitorfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the monitor configuration callback, or removes the currently set callback. This is called when a monitor is connected to or disconnected from the system.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gad2e24d2843cb7d6c26202cddd530fc1b" name="gad2e24d2843cb7d6c26202cddd530fc1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad2e24d2843cb7d6c26202cddd530fc1b">&#9670;&nbsp;</a></span>glfwGetVideoModes()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> * glfwGetVideoModes </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>count</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns an array of all video modes supported by the specified monitor. The returned array is sorted in ascending order, first by color bit depth (the sum of all channel depths), then by resolution area (the product of width and height), then resolution width and finally by refresh rate.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of video modes in the returned array. This is set to zero if an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of video modes, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Changed to return an array of modes for a specific monitor. </dd></dl>
+
+</div>
+</div>
+<a id="gaba376fa7e76634b4788bddc505d6c9d5" name="gaba376fa7e76634b4788bddc505d6c9d5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaba376fa7e76634b4788bddc505d6c9d5">&#9670;&nbsp;</a></span>glfwGetVideoMode()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> * glfwGetVideoMode </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current video mode of the specified monitor. If you have created a full screen window for that monitor, the return value will depend on whether that window is iconified.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The current mode of the monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetDesktopMode</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga6ac582625c990220785ddd34efa3169a" name="ga6ac582625c990220785ddd34efa3169a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6ac582625c990220785ddd34efa3169a">&#9670;&nbsp;</a></span>glfwSetGamma()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetGamma </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>gamma</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function generates an appropriately sized gamma ramp from the specified exponent and then calls <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> with it. The value must be a finite number greater than zero.</p>
+<p >The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.</p>
+<p >For gamma correct rendering with OpenGL or OpenGL ES, see the <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> hint.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose gamma ramp to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">gamma</td><td>The desired exponent.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga76ba90debcf0062b5c4b73052b24f96f" name="ga76ba90debcf0062b5c4b73052b24f96f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga76ba90debcf0062b5c4b73052b24f96f">&#9670;&nbsp;</a></span>glfwGetGammaRamp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> * glfwGetGammaRamp </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current gamma ramp of the specified monitor.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The current gamma ramp, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> while returning <code>NULL</code>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>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.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga583f0ffd0d29613d8cd172b996bbf0dd" name="ga583f0ffd0d29613d8cd172b996bbf0dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga583f0ffd0d29613d8cd172b996bbf0dd">&#9670;&nbsp;</a></span>glfwSetGammaRamp()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetGammaRamp </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> *&#160;</td>
+ <td class="paramname"><em>ramp</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
+<p >The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior.</p>
+<p >For gamma correct rendering with OpenGL or OpenGL ES, see the <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> hint.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor whose gamma ramp to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ramp</td><td>The gamma ramp to use.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The size of the specified gamma ramp should match the size of the current ramp for that monitor.</dd>
+<dd>
+<b>Windows:</b> The gamma ramp size must be 256.</dd>
+<dd>
+<b>Wayland:</b> Gamma handling is a privileged protocol, this function will thus never be implemented and emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified gamma ramp is copied before this function returns.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__native.html b/libs/glfw-3.3.8/docs/html/group__native.html
new file mode 100644
index 0000000..5adef3b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__native.html
@@ -0,0 +1,805 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Native access</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Native access</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p ><b>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.</b></p>
+<p >Before the inclusion of <a class="el" href="glfw3native_8h.html">glfw3native.h</a>, you may define zero or more window system API macro and zero or more context creation API macros.</p>
+<p >The chosen backends must match those the library was compiled for. Failure to do this will cause a link-time error.</p>
+<p >The available window API macros are:</p><ul>
+<li><code>GLFW_EXPOSE_NATIVE_WIN32</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_COCOA</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_X11</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_WAYLAND</code></li>
+</ul>
+<p >The available context API macros are:</p><ul>
+<li><code>GLFW_EXPOSE_NATIVE_WGL</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_NSGL</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_GLX</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_EGL</code></li>
+<li><code>GLFW_EXPOSE_NATIVE_OSMESA</code></li>
+</ul>
+<p >These macros select which of the native access functions that are declared and which platform-specific headers to include. It is then up your (by definition platform-specific) code to handle which of these should be defined.</p>
+<p >If you do not want the platform-specific headers to be included, define <code>GLFW_NATIVE_INCLUDE_NONE</code> before including the <a class="el" href="glfw3native_8h.html">glfw3native.h</a> header.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_EXPOSE_NATIVE_WIN32</span></div>
+<div class="line"><span class="preprocessor">#define GLFW_EXPOSE_NATIVE_WGL</span></div>
+<div class="line"><span class="preprocessor">#define GLFW_NATIVE_INCLUDE_NONE</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3native_8h.html">GLFW/glfw3native.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3native_8h_html"><div class="ttname"><a href="glfw3native_8h.html">glfw3native.h</a></div><div class="ttdoc">The header of the native access functions.</div></div>
+</div><!-- fragment --> <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">glfwGetWin32Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the adapter device name of the specified monitor. <a href="group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41">More...</a><br /></td></tr>
+<tr class="separator:gad4d3e9242536c0ba6be88a98f4c73a41"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">glfwGetWin32Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the display device name of the specified monitor. <a href="group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766">More...</a><br /></td></tr>
+<tr class="separator:gac845f7dbe4c1d7fdd682a3c6fdae6766"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memItemLeft" align="right" valign="top">HWND&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gafe5079aa79038b0079fc09d5f0a8e667"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HWND</code> of the specified window. <a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">More...</a><br /></td></tr>
+<tr class="separator:gafe5079aa79038b0079fc09d5f0a8e667"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadc4010d91d9cc1134d040eeb1202a143"><td class="memItemLeft" align="right" valign="top">HGLRC&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">glfwGetWGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gadc4010d91d9cc1134d040eeb1202a143"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>HGLRC</code> of the specified window. <a href="group__native.html#gadc4010d91d9cc1134d040eeb1202a143">More...</a><br /></td></tr>
+<tr class="separator:gadc4010d91d9cc1134d040eeb1202a143"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memItemLeft" align="right" valign="top">CGDirectDisplayID&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">glfwGetCocoaMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gaf22f429aec4b1aab316142d66d9be3e6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>CGDirectDisplayID</code> of the specified monitor. <a href="group__native.html#gaf22f429aec4b1aab316142d66d9be3e6">More...</a><br /></td></tr>
+<tr class="separator:gaf22f429aec4b1aab316142d66d9be3e6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">glfwGetCocoaWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gac3ed9d495d0c2bb9652de5a50c648715"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSWindow</code> of the specified window. <a href="group__native.html#gac3ed9d495d0c2bb9652de5a50c648715">More...</a><br /></td></tr>
+<tr class="separator:gac3ed9d495d0c2bb9652de5a50c648715"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga559e002e3cd63c979881770cd4dc63bc"><td class="memItemLeft" align="right" valign="top">id&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">glfwGetNSGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga559e002e3cd63c979881770cd4dc63bc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>NSOpenGLContext</code> of the specified window. <a href="group__native.html#ga559e002e3cd63c979881770cd4dc63bc">More...</a><br /></td></tr>
+<tr class="separator:ga559e002e3cd63c979881770cd4dc63bc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6e7822385cc8a1cc3b18f60352830189"><td class="memItemLeft" align="right" valign="top">Display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">glfwGetX11Display</a> (void)</td></tr>
+<tr class="memdesc:ga6e7822385cc8a1cc3b18f60352830189"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Display</code> used by GLFW. <a href="group__native.html#ga6e7822385cc8a1cc3b18f60352830189">More...</a><br /></td></tr>
+<tr class="separator:ga6e7822385cc8a1cc3b18f60352830189"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga088fbfa80f50569402b41be71ad66e40"><td class="memItemLeft" align="right" valign="top">RRCrtc&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">glfwGetX11Adapter</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga088fbfa80f50569402b41be71ad66e40"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RRCrtc</code> of the specified monitor. <a href="group__native.html#ga088fbfa80f50569402b41be71ad66e40">More...</a><br /></td></tr>
+<tr class="separator:ga088fbfa80f50569402b41be71ad66e40"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memItemLeft" align="right" valign="top">RROutput&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">glfwGetX11Monitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>RROutput</code> of the specified monitor. <a href="group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c">More...</a><br /></td></tr>
+<tr class="separator:gab2f8cc043905e9fa9b12bfdbbcfe874c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga90ca676322740842db446999a1b1f21d"><td class="memItemLeft" align="right" valign="top">Window&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga90ca676322740842db446999a1b1f21d">glfwGetX11Window</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga90ca676322740842db446999a1b1f21d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>Window</code> of the specified window. <a href="group__native.html#ga90ca676322740842db446999a1b1f21d">More...</a><br /></td></tr>
+<tr class="separator:ga90ca676322740842db446999a1b1f21d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga55f879ab02d93367f966186b6f0133f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a> (const char *string)</td></tr>
+<tr class="memdesc:ga55f879ab02d93367f966186b6f0133f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the current primary selection to the specified string. <a href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">More...</a><br /></td></tr>
+<tr class="separator:ga55f879ab02d93367f966186b6f0133f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae084ef64dc0db140b455b1427256d3f7"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> (void)</td></tr>
+<tr class="memdesc:gae084ef64dc0db140b455b1427256d3f7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the contents of the current primary selection as a string. <a href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">More...</a><br /></td></tr>
+<tr class="separator:gae084ef64dc0db140b455b1427256d3f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga62d884114b0abfcdc2930e89f20867e2"><td class="memItemLeft" align="right" valign="top">GLXContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">glfwGetGLXContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga62d884114b0abfcdc2930e89f20867e2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXContext</code> of the specified window. <a href="group__native.html#ga62d884114b0abfcdc2930e89f20867e2">More...</a><br /></td></tr>
+<tr class="separator:ga62d884114b0abfcdc2930e89f20867e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memItemLeft" align="right" valign="top">GLXWindow&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">glfwGetGLXWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1ed27b8766e859a21381e8f8ce18d049"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>GLXWindow</code> of the specified window. <a href="group__native.html#ga1ed27b8766e859a21381e8f8ce18d049">More...</a><br /></td></tr>
+<tr class="separator:ga1ed27b8766e859a21381e8f8ce18d049"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacbe11f93ce20621de82989bbba94e62a"><td class="memItemLeft" align="right" valign="top">struct wl_display *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">glfwGetWaylandDisplay</a> (void)</td></tr>
+<tr class="memdesc:gacbe11f93ce20621de82989bbba94e62a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_display*</code> used by GLFW. <a href="group__native.html#gacbe11f93ce20621de82989bbba94e62a">More...</a><br /></td></tr>
+<tr class="separator:gacbe11f93ce20621de82989bbba94e62a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memItemLeft" align="right" valign="top">struct wl_output *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">glfwGetWaylandMonitor</a> (<a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor)</td></tr>
+<tr class="memdesc:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>struct wl_output*</code> of the specified monitor. <a href="group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16">More...</a><br /></td></tr>
+<tr class="separator:ga4f16066bd4c59e2f99418adfcb43dd16"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5c597f2841229d9626f0811cca41ceb3"><td class="memItemLeft" align="right" valign="top">struct wl_surface *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">glfwGetWaylandWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga5c597f2841229d9626f0811cca41ceb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the main <code>struct wl_surface*</code> of the specified window. <a href="group__native.html#ga5c597f2841229d9626f0811cca41ceb3">More...</a><br /></td></tr>
+<tr class="separator:ga5c597f2841229d9626f0811cca41ceb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1cd8d973f47aacb5532d368147cc3138"><td class="memItemLeft" align="right" valign="top">EGLDisplay&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">glfwGetEGLDisplay</a> (void)</td></tr>
+<tr class="memdesc:ga1cd8d973f47aacb5532d368147cc3138"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLDisplay</code> used by GLFW. <a href="group__native.html#ga1cd8d973f47aacb5532d368147cc3138">More...</a><br /></td></tr>
+<tr class="separator:ga1cd8d973f47aacb5532d368147cc3138"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memItemLeft" align="right" valign="top">EGLContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">glfwGetEGLContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga671c5072becd085f4ab5771a9c8efcf1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLContext</code> of the specified window. <a href="group__native.html#ga671c5072becd085f4ab5771a9c8efcf1">More...</a><br /></td></tr>
+<tr class="separator:ga671c5072becd085f4ab5771a9c8efcf1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2199b36117a6a695fec8441d8052eee6"><td class="memItemLeft" align="right" valign="top">EGLSurface&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">glfwGetEGLSurface</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga2199b36117a6a695fec8441d8052eee6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>EGLSurface</code> of the specified window. <a href="group__native.html#ga2199b36117a6a695fec8441d8052eee6">More...</a><br /></td></tr>
+<tr class="separator:ga2199b36117a6a695fec8441d8052eee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *format, void **buffer)</td></tr>
+<tr class="memdesc:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the color buffer associated with the specified window. <a href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">More...</a><br /></td></tr>
+<tr class="separator:ga3b36e3e3dcf308b776427b6bd73cc132"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height, int *bytesPerValue, void **buffer)</td></tr>
+<tr class="memdesc:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the depth buffer associated with the specified window. <a href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">More...</a><br /></td></tr>
+<tr class="separator:ga6b64039ffc88a7a2f57f0956c0c75d53"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9e47700080094eb569cb053afaa88773"><td class="memItemLeft" align="right" valign="top">OSMesaContext&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__native.html#ga9e47700080094eb569cb053afaa88773">glfwGetOSMesaContext</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga9e47700080094eb569cb053afaa88773"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the <code>OSMesaContext</code> of the specified window. <a href="group__native.html#ga9e47700080094eb569cb053afaa88773">More...</a><br /></td></tr>
+<tr class="separator:ga9e47700080094eb569cb053afaa88773"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gad4d3e9242536c0ba6be88a98f4c73a41" name="gad4d3e9242536c0ba6be88a98f4c73a41"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad4d3e9242536c0ba6be88a98f4c73a41">&#9670;&nbsp;</a></span>glfwGetWin32Adapter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetWin32Adapter </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded adapter device name (for example <code>\\.\DISPLAY1</code>) of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gac845f7dbe4c1d7fdd682a3c6fdae6766" name="gac845f7dbe4c1d7fdd682a3c6fdae6766"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac845f7dbe4c1d7fdd682a3c6fdae6766">&#9670;&nbsp;</a></span>glfwGetWin32Monitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetWin32Monitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The UTF-8 encoded display device name (for example <code>\\.\DISPLAY1\Monitor0</code>) of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gafe5079aa79038b0079fc09d5f0a8e667" name="gafe5079aa79038b0079fc09d5f0a8e667"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafe5079aa79038b0079fc09d5f0a8e667">&#9670;&nbsp;</a></span>glfwGetWin32Window()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">HWND glfwGetWin32Window </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>HWND</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The <code>HDC</code> associated with the window can be queried with the <a href="https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc">GetDC</a> function. <div class="fragment"><div class="line">HDC dc = GetDC(<a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(window));</div>
+<div class="ttc" id="agroup__native_html_gafe5079aa79038b0079fc09d5f0a8e667"><div class="ttname"><a href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a></div><div class="ttdeci">HWND glfwGetWin32Window(GLFWwindow *window)</div><div class="ttdoc">Returns the HWND of the specified window.</div></div>
+</div><!-- fragment --> This DC is private and does not need to be released.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gadc4010d91d9cc1134d040eeb1202a143" name="gadc4010d91d9cc1134d040eeb1202a143"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadc4010d91d9cc1134d040eeb1202a143">&#9670;&nbsp;</a></span>glfwGetWGLContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">HGLRC glfwGetWGLContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>HGLRC</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The <code>HDC</code> associated with the window can be queried with the <a href="https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-getdc">GetDC</a> function. <div class="fragment"><div class="line">HDC dc = GetDC(<a class="code hl_function" href="group__native.html#gafe5079aa79038b0079fc09d5f0a8e667">glfwGetWin32Window</a>(window));</div>
+</div><!-- fragment --> This DC is private and does not need to be released.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaf22f429aec4b1aab316142d66d9be3e6" name="gaf22f429aec4b1aab316142d66d9be3e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf22f429aec4b1aab316142d66d9be3e6">&#9670;&nbsp;</a></span>glfwGetCocoaMonitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">CGDirectDisplayID glfwGetCocoaMonitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>CGDirectDisplayID</code> of the specified monitor, or <code>kCGNullDirectDisplay</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gac3ed9d495d0c2bb9652de5a50c648715" name="gac3ed9d495d0c2bb9652de5a50c648715"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac3ed9d495d0c2bb9652de5a50c648715">&#9670;&nbsp;</a></span>glfwGetCocoaWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">id glfwGetCocoaWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>NSWindow</code> of the specified window, or <code>nil</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga559e002e3cd63c979881770cd4dc63bc" name="ga559e002e3cd63c979881770cd4dc63bc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga559e002e3cd63c979881770cd4dc63bc">&#9670;&nbsp;</a></span>glfwGetNSGLContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">id glfwGetNSGLContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>NSOpenGLContext</code> of the specified window, or <code>nil</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga6e7822385cc8a1cc3b18f60352830189" name="ga6e7822385cc8a1cc3b18f60352830189"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6e7822385cc8a1cc3b18f60352830189">&#9670;&nbsp;</a></span>glfwGetX11Display()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Display * glfwGetX11Display </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>Display</code> used by GLFW, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga088fbfa80f50569402b41be71ad66e40" name="ga088fbfa80f50569402b41be71ad66e40"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga088fbfa80f50569402b41be71ad66e40">&#9670;&nbsp;</a></span>glfwGetX11Adapter()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RRCrtc glfwGetX11Adapter </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>RRCrtc</code> of the specified monitor, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gab2f8cc043905e9fa9b12bfdbbcfe874c" name="gab2f8cc043905e9fa9b12bfdbbcfe874c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab2f8cc043905e9fa9b12bfdbbcfe874c">&#9670;&nbsp;</a></span>glfwGetX11Monitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">RROutput glfwGetX11Monitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>RROutput</code> of the specified monitor, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga90ca676322740842db446999a1b1f21d" name="ga90ca676322740842db446999a1b1f21d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga90ca676322740842db446999a1b1f21d">&#9670;&nbsp;</a></span>glfwGetX11Window()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Window glfwGetX11Window </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>Window</code> of the specified window, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga55f879ab02d93367f966186b6f0133f7" name="ga55f879ab02d93367f966186b6f0133f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga55f879ab02d93367f966186b6f0133f7">&#9670;&nbsp;</a></span>glfwSetX11SelectionString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetX11SelectionString </td>
+ <td>(</td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>string</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">string</td><td>A UTF-8 encoded string.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
+<dd>
+<a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7" title="Returns the contents of the current primary selection as a string.">glfwGetX11SelectionString</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd" title="Sets the clipboard to the specified string.">glfwSetClipboardString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gae084ef64dc0db140b455b1427256d3f7" name="gae084ef64dc0db140b455b1427256d3f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae084ef64dc0db140b455b1427256d3f7">&#9670;&nbsp;</a></span>glfwGetX11SelectionString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char * glfwGetX11SelectionString </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >If the selection is empty or if its contents cannot be converted, <code>NULL</code> is returned and a <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> error is generated.</p>
+<dl class="section return"><dt>Returns</dt><dd>The contents of the selection as a UTF-8 encoded string, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned string is allocated and freed by GLFW. You should not free it yourself. It is valid until the next call to <a class="el" href="group__native.html#gae084ef64dc0db140b455b1427256d3f7">glfwGetX11SelectionString</a> or <a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7">glfwSetX11SelectionString</a>, or until the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#clipboard">Clipboard input and output</a> </dd>
+<dd>
+<a class="el" href="group__native.html#ga55f879ab02d93367f966186b6f0133f7" title="Sets the current primary selection to the specified string.">glfwSetX11SelectionString</a> </dd>
+<dd>
+<a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355" title="Returns the contents of the clipboard as a string.">glfwGetClipboardString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga62d884114b0abfcdc2930e89f20867e2" name="ga62d884114b0abfcdc2930e89f20867e2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga62d884114b0abfcdc2930e89f20867e2">&#9670;&nbsp;</a></span>glfwGetGLXContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GLXContext glfwGetGLXContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>GLXContext</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga1ed27b8766e859a21381e8f8ce18d049" name="ga1ed27b8766e859a21381e8f8ce18d049"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1ed27b8766e859a21381e8f8ce18d049">&#9670;&nbsp;</a></span>glfwGetGLXWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">GLXWindow glfwGetGLXWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>GLXWindow</code> of the specified window, or <code>None</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gacbe11f93ce20621de82989bbba94e62a" name="gacbe11f93ce20621de82989bbba94e62a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacbe11f93ce20621de82989bbba94e62a">&#9670;&nbsp;</a></span>glfwGetWaylandDisplay()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct wl_display * glfwGetWaylandDisplay </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>struct wl_display*</code> used by GLFW, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga4f16066bd4c59e2f99418adfcb43dd16" name="ga4f16066bd4c59e2f99418adfcb43dd16"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4f16066bd4c59e2f99418adfcb43dd16">&#9670;&nbsp;</a></span>glfwGetWaylandMonitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct wl_output * glfwGetWaylandMonitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>struct wl_output*</code> of the specified monitor, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga5c597f2841229d9626f0811cca41ceb3" name="ga5c597f2841229d9626f0811cca41ceb3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5c597f2841229d9626f0811cca41ceb3">&#9670;&nbsp;</a></span>glfwGetWaylandWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">struct wl_surface * glfwGetWaylandWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The main <code>struct wl_surface*</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga1cd8d973f47aacb5532d368147cc3138" name="ga1cd8d973f47aacb5532d368147cc3138"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1cd8d973f47aacb5532d368147cc3138">&#9670;&nbsp;</a></span>glfwGetEGLDisplay()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">EGLDisplay glfwGetEGLDisplay </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>EGLDisplay</code> used by GLFW, or <code>EGL_NO_DISPLAY</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>Because EGL is initialized on demand, this function will return <code>EGL_NO_DISPLAY</code> until the first context has been created via EGL.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga671c5072becd085f4ab5771a9c8efcf1" name="ga671c5072becd085f4ab5771a9c8efcf1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga671c5072becd085f4ab5771a9c8efcf1">&#9670;&nbsp;</a></span>glfwGetEGLContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">EGLContext glfwGetEGLContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>EGLContext</code> of the specified window, or <code>EGL_NO_CONTEXT</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga2199b36117a6a695fec8441d8052eee6" name="ga2199b36117a6a695fec8441d8052eee6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2199b36117a6a695fec8441d8052eee6">&#9670;&nbsp;</a></span>glfwGetEGLSurface()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">EGLSurface glfwGetEGLSurface </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>EGLSurface</code> of the specified window, or <code>EGL_NO_SURFACE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga3b36e3e3dcf308b776427b6bd73cc132" name="ga3b36e3e3dcf308b776427b6bd73cc132"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3b36e3e3dcf308b776427b6bd73cc132">&#9670;&nbsp;</a></span>glfwGetOSMesaColorBuffer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetOSMesaColorBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>format</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void **&#160;</td>
+ <td class="paramname"><em>buffer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose color buffer to retrieve. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width of the color buffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height of the color buffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">format</td><td>Where to store the OSMesa pixel format of the color buffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>Where to store the address of the color buffer, or <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga6b64039ffc88a7a2f57f0956c0c75d53" name="ga6b64039ffc88a7a2f57f0956c0c75d53"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga6b64039ffc88a7a2f57f0956c0c75d53">&#9670;&nbsp;</a></span>glfwGetOSMesaDepthBuffer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetOSMesaDepthBuffer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>bytesPerValue</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void **&#160;</td>
+ <td class="paramname"><em>buffer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose depth buffer to retrieve. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width of the depth buffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height of the depth buffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">bytesPerValue</td><td>Where to store the number of bytes per depth buffer element, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>Where to store the address of the depth buffer, or <code>NULL</code>. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if successful, or <code>GLFW_FALSE</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga9e47700080094eb569cb053afaa88773" name="ga9e47700080094eb569cb053afaa88773"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9e47700080094eb569cb053afaa88773">&#9670;&nbsp;</a></span>glfwGetOSMesaContext()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">OSMesaContext glfwGetOSMesaContext </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<dl class="section return"><dt>Returns</dt><dd>The <code>OSMesaContext</code> of the specified window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__shapes.html b/libs/glfw-3.3.8/docs/html/group__shapes.html
new file mode 100644
index 0000000..f5c1c20
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__shapes.html
@@ -0,0 +1,191 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Standard cursor shapes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> </div>
+ <div class="headertitle"><div class="title">Standard cursor shapes<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >See <a class="el" href="input_guide.html#cursor_standard">standard cursor creation</a> for how these are used. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">GLFW_ARROW_CURSOR</a>&#160;&#160;&#160;0x00036001</td></tr>
+<tr class="memdesc:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">The regular arrow cursor shape. <a href="group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a">More...</a><br /></td></tr>
+<tr class="separator:ga8ab0e717245b85506cb0eaefdea39d0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga36185f4375eaada1b04e431244774c86"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">GLFW_IBEAM_CURSOR</a>&#160;&#160;&#160;0x00036002</td></tr>
+<tr class="memdesc:ga36185f4375eaada1b04e431244774c86"><td class="mdescLeft">&#160;</td><td class="mdescRight">The text input I-beam cursor shape. <a href="group__shapes.html#ga36185f4375eaada1b04e431244774c86">More...</a><br /></td></tr>
+<tr class="separator:ga36185f4375eaada1b04e431244774c86"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">GLFW_CROSSHAIR_CURSOR</a>&#160;&#160;&#160;0x00036003</td></tr>
+<tr class="memdesc:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="mdescLeft">&#160;</td><td class="mdescRight">The crosshair shape. <a href="group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22">More...</a><br /></td></tr>
+<tr class="separator:ga8af88c0ea05ab9e8f9ac1530e8873c22"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1db35e20849e0837c82e3dc1fd797263"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">GLFW_HAND_CURSOR</a>&#160;&#160;&#160;0x00036004</td></tr>
+<tr class="memdesc:ga1db35e20849e0837c82e3dc1fd797263"><td class="mdescLeft">&#160;</td><td class="mdescRight">The hand shape. <a href="group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263">More...</a><br /></td></tr>
+<tr class="separator:ga1db35e20849e0837c82e3dc1fd797263"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabb3eb0109f11bb808fc34659177ca962"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036005</td></tr>
+<tr class="memdesc:gabb3eb0109f11bb808fc34659177ca962"><td class="mdescLeft">&#160;</td><td class="mdescRight">The horizontal resize arrow shape. <a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">More...</a><br /></td></tr>
+<tr class="separator:gabb3eb0109f11bb808fc34659177ca962"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">GLFW_VRESIZE_CURSOR</a>&#160;&#160;&#160;0x00036006</td></tr>
+<tr class="memdesc:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The vertical resize arrow shape. <a href="group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5">More...</a><br /></td></tr>
+<tr class="separator:gaf024f0e1ff8366fb2b5c260509a1fce5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga8ab0e717245b85506cb0eaefdea39d0a" name="ga8ab0e717245b85506cb0eaefdea39d0a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8ab0e717245b85506cb0eaefdea39d0a">&#9670;&nbsp;</a></span>GLFW_ARROW_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ARROW_CURSOR&#160;&#160;&#160;0x00036001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The regular arrow cursor. </p>
+
+</div>
+</div>
+<a id="ga36185f4375eaada1b04e431244774c86" name="ga36185f4375eaada1b04e431244774c86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga36185f4375eaada1b04e431244774c86">&#9670;&nbsp;</a></span>GLFW_IBEAM_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_IBEAM_CURSOR&#160;&#160;&#160;0x00036002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The text input I-beam cursor shape. </p>
+
+</div>
+</div>
+<a id="ga8af88c0ea05ab9e8f9ac1530e8873c22" name="ga8af88c0ea05ab9e8f9ac1530e8873c22"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8af88c0ea05ab9e8f9ac1530e8873c22">&#9670;&nbsp;</a></span>GLFW_CROSSHAIR_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CROSSHAIR_CURSOR&#160;&#160;&#160;0x00036003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The crosshair shape. </p>
+
+</div>
+</div>
+<a id="ga1db35e20849e0837c82e3dc1fd797263" name="ga1db35e20849e0837c82e3dc1fd797263"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1db35e20849e0837c82e3dc1fd797263">&#9670;&nbsp;</a></span>GLFW_HAND_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HAND_CURSOR&#160;&#160;&#160;0x00036004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The hand shape. </p>
+
+</div>
+</div>
+<a id="gabb3eb0109f11bb808fc34659177ca962" name="gabb3eb0109f11bb808fc34659177ca962"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabb3eb0109f11bb808fc34659177ca962">&#9670;&nbsp;</a></span>GLFW_HRESIZE_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HRESIZE_CURSOR&#160;&#160;&#160;0x00036005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The horizontal resize arrow shape. </p>
+
+</div>
+</div>
+<a id="gaf024f0e1ff8366fb2b5c260509a1fce5" name="gaf024f0e1ff8366fb2b5c260509a1fce5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf024f0e1ff8366fb2b5c260509a1fce5">&#9670;&nbsp;</a></span>GLFW_VRESIZE_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VRESIZE_CURSOR&#160;&#160;&#160;0x00036006</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The vertical resize arrow shape. </p>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__vulkan.html b/libs/glfw-3.3.8/docs/html/group__vulkan.html
new file mode 100644
index 0000000..f80f4a9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__vulkan.html
@@ -0,0 +1,352 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Vulkan support reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Vulkan support reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for Vulkan related functions and types. For more task-oriented information, see the <a class="el" href="vulkan_guide.html">Vulkan guide</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga70c01918dc9d233a4fbe0681a43018af"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>) (void)</td></tr>
+<tr class="memdesc:ga70c01918dc9d233a4fbe0681a43018af"><td class="mdescLeft">&#160;</td><td class="mdescRight">Vulkan API function pointer type. <a href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">More...</a><br /></td></tr>
+<tr class="separator:ga70c01918dc9d233a4fbe0681a43018af"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> (void)</td></tr>
+<tr class="memdesc:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the Vulkan loader and an ICD have been found. <a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">More...</a><br /></td></tr>
+<tr class="separator:ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memItemLeft" align="right" valign="top">const char **&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> (uint32_t *count)</td></tr>
+<tr class="memdesc:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the Vulkan instance extensions required by GLFW. <a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">More...</a><br /></td></tr>
+<tr class="separator:ga99ad342d82f4a3421e2864978cb6d1d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a> (VkInstance instance, const char *procname)</td></tr>
+<tr class="memdesc:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the address of the specified Vulkan instance function. <a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">More...</a><br /></td></tr>
+<tr class="separator:gadf228fac94c5fd8f12423ec9af9ff1e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> (VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</td></tr>
+<tr class="memdesc:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns whether the specified queue family can present images. <a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">More...</a><br /></td></tr>
+<tr class="separator:gaff3823355cdd7e2f3f9f4d9ea9518d92"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memItemLeft" align="right" valign="top">VkResult&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a> (VkInstance instance, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</td></tr>
+<tr class="memdesc:ga1a24536bec3f80b08ead18e28e6ae965"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a Vulkan surface for the specified window. <a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">More...</a><br /></td></tr>
+<tr class="separator:ga1a24536bec3f80b08ead18e28e6ae965"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga70c01918dc9d233a4fbe0681a43018af" name="ga70c01918dc9d233a4fbe0681a43018af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga70c01918dc9d233a4fbe0681a43018af">&#9670;&nbsp;</a></span>GLFWvkproc</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWvkproc) (void)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Generic function pointer used for returning Vulkan API function pointers without forcing a cast from a regular pointer.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_proc">Querying Vulkan function pointers</a> </dd>
+<dd>
+<a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="ga2e7f30931e02464b5bc8d0d4b6f9fe2b" name="ga2e7f30931e02464b5bc8d0d4b6f9fe2b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">&#9670;&nbsp;</a></span>glfwVulkanSupported()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwVulkanSupported </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether the Vulkan loader and any minimally functional ICD have been found.</p>
+<p >The availability of a Vulkan loader and even an ICD does not by itself guarantee that surface creation or even instance creation is possible. Call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check whether the extensions necessary for Vulkan surface creation are available and <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> to check whether a queue family of a physical device supports image presentation.</p>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if Vulkan is minimally available, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_support">Querying for Vulkan support</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga99ad342d82f4a3421e2864978cb6d1d6" name="ga99ad342d82f4a3421e2864978cb6d1d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga99ad342d82f4a3421e2864978cb6d1d6">&#9670;&nbsp;</a></span>glfwGetRequiredInstanceExtensions()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">const char ** glfwGetRequiredInstanceExtensions </td>
+ <td>(</td>
+ <td class="paramtype">uint32_t *&#160;</td>
+ <td class="paramname"><em>count</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns an array of names of Vulkan instance extensions required by GLFW for creating Vulkan surfaces for GLFW windows. If successful, the list will always contain <code>VK_KHR_surface</code>, so if you don't require any additional extensions you can pass this list directly to the <code>VkInstanceCreateInfo</code> struct.</p>
+<p >If Vulkan is not available on the machine, this function returns <code>NULL</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
+<p >If Vulkan is available but no set of extensions allowing window surface creation was found, this function returns <code>NULL</code>. You may still use Vulkan for off-screen rendering and compute work.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[out]</td><td class="paramname">count</td><td>Where to store the number of extensions in the returned array. This is set to zero if an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>An array of ASCII encoded extension names, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>Additional extensions may be required by future versions of GLFW. You should check if any extensions you wish to enable are already in the returned array, as it is an error to specify an extension more than once in the <code>VkInstanceCreateInfo</code> struct.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned array is allocated and freed by GLFW. You should not free it yourself. It is guaranteed to be valid only until the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_ext">Querying required Vulkan extensions</a> </dd>
+<dd>
+<a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gadf228fac94c5fd8f12423ec9af9ff1e9" name="gadf228fac94c5fd8f12423ec9af9ff1e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadf228fac94c5fd8f12423ec9af9ff1e9">&#9670;&nbsp;</a></span>glfwGetInstanceProcAddress()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af">GLFWvkproc</a> glfwGetInstanceProcAddress </td>
+ <td>(</td>
+ <td class="paramtype">VkInstance&#160;</td>
+ <td class="paramname"><em>instance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>procname</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the address of the specified Vulkan core or extension function for the specified instance. If instance is set to <code>NULL</code> it can return any function exported from the Vulkan loader, including at least the following functions:</p>
+<ul>
+<li><code>vkEnumerateInstanceExtensionProperties</code></li>
+<li><code>vkEnumerateInstanceLayerProperties</code></li>
+<li><code>vkCreateInstance</code></li>
+<li><code>vkGetInstanceProcAddr</code></li>
+</ul>
+<p >If Vulkan is not available on the machine, this function returns <code>NULL</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
+<p >This function is equivalent to calling <code>vkGetInstanceProcAddr</code> with a platform-specific query of the Vulkan loader as a fallback.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The Vulkan instance to query, or <code>NULL</code> to retrieve functions related to instance creation. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">procname</td><td>The ASCII encoded name of the function. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The address of the function, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The returned function pointer is valid until the library is terminated.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_proc">Querying Vulkan function pointers</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gaff3823355cdd7e2f3f9f4d9ea9518d92" name="gaff3823355cdd7e2f3f9f4d9ea9518d92"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaff3823355cdd7e2f3f9f4d9ea9518d92">&#9670;&nbsp;</a></span>glfwGetPhysicalDevicePresentationSupport()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetPhysicalDevicePresentationSupport </td>
+ <td>(</td>
+ <td class="paramtype">VkInstance&#160;</td>
+ <td class="paramname"><em>instance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">VkPhysicalDevice&#160;</td>
+ <td class="paramname"><em>device</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">uint32_t&#160;</td>
+ <td class="paramname"><em>queuefamily</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns whether the specified queue family of the specified physical device supports presentation to the platform GLFW was built for.</p>
+<p >If Vulkan or the required window surface creation instance extensions are not available on the machine, or if the specified instance was not created with the required extensions, this function returns <code>GLFW_FALSE</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available and <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check what instance extensions are required.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The instance that the physical device belongs to. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">device</td><td>The physical device that the queue family belongs to. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">queuefamily</td><td>The index of the queue family to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>GLFW_TRUE</code> if the queue family supports presentation, or <code>GLFW_FALSE</code> otherwise.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> This function currently always returns <code>GLFW_TRUE</code>, as the <code>VK_MVK_macos_surface</code> and <code>VK_EXT_metal_surface</code> extensions do not provide a <code>vkGetPhysicalDevice*PresentationSupport</code> type function.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_present">Querying for Vulkan presentation support</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga1a24536bec3f80b08ead18e28e6ae965" name="ga1a24536bec3f80b08ead18e28e6ae965"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1a24536bec3f80b08ead18e28e6ae965">&#9670;&nbsp;</a></span>glfwCreateWindowSurface()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">VkResult glfwCreateWindowSurface </td>
+ <td>(</td>
+ <td class="paramtype">VkInstance&#160;</td>
+ <td class="paramname"><em>instance</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const VkAllocationCallbacks *&#160;</td>
+ <td class="paramname"><em>allocator</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">VkSurfaceKHR *&#160;</td>
+ <td class="paramname"><em>surface</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function creates a Vulkan surface for the specified window.</p>
+<p >If the Vulkan loader or at least one minimally functional ICD were not found, this function returns <code>VK_ERROR_INITIALIZATION_FAILED</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> to check whether Vulkan is at least minimally available.</p>
+<p >If the required window surface creation instance extensions are not available or if the specified instance was not created with these extensions enabled, this function returns <code>VK_ERROR_EXTENSION_NOT_PRESENT</code> and generates a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error. Call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> to check what instance extensions are required.</p>
+<p >The window surface cannot be shared with another API so the window must have been created with the <a class="el" href="window_guide.html#GLFW_CLIENT_API_attrib">client api hint</a> set to <code>GLFW_NO_API</code> otherwise it generates a <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> error and returns <code>VK_ERROR_NATIVE_WINDOW_IN_USE_KHR</code>.</p>
+<p >The window surface must be destroyed before the specified Vulkan instance. It is the responsibility of the caller to destroy the window surface. GLFW does not destroy it for you. Call <code>vkDestroySurfaceKHR</code> to destroy the surface.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>The Vulkan instance to create the surface in. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to create the surface for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">allocator</td><td>The allocator to use, or <code>NULL</code> to use the default allocator. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">surface</td><td>Where to store the handle of the surface. This is set to <code>VK_NULL_HANDLE</code> if an error occurred. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd><code>VK_SUCCESS</code> if successful, or a Vulkan error code if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>, <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> and <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a></dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>If an error occurs before the creation call is made, GLFW returns the Vulkan error code most appropriate for the error. Appropriate use of <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a> and <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a> should eliminate almost all occurrences of these errors.</dd>
+<dd>
+<b>macOS:</b> GLFW prefers the <code>VK_EXT_metal_surface</code> extension, with the <code>VK_MVK_macos_surface</code> extension as a fallback. The name of the selected extension, if any, is included in the array returned by <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>.</dd>
+<dd>
+<b>macOS:</b> This function creates and sets a <code>CAMetalLayer</code> instance for the window content view, which is required for MoltenVK to function.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. For synchronization details of Vulkan objects, see the Vulkan specification.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="vulkan_guide.html#vulkan_surface">Creating a Vulkan window surface</a> </dd>
+<dd>
+<a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/group__window.html b/libs/glfw-3.3.8/docs/html/group__window.html
new file mode 100644
index 0000000..0a44b40
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/group__window.html
@@ -0,0 +1,3427 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Window reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="summary">
+<a href="#define-members">Macros</a> &#124;
+<a href="#typedef-members">Typedefs</a> &#124;
+<a href="#func-members">Functions</a> </div>
+ <div class="headertitle"><div class="title">Window reference</div></div>
+</div><!--header-->
+<div class="contents">
+<a name="details" id="details"></a><h2 class="groupheader">Description</h2>
+<p >This is the reference documentation for window related functions and types, including creation, deletion and event polling. For more task-oriented information, see the <a class="el" href="window_guide.html">Window guide</a>. </p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="define-members" name="define-members"></a>
+Macros</h2></td></tr>
+<tr class="memitem:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>&#160;&#160;&#160;0x00020001</td></tr>
+<tr class="memdesc:ga54ddb14825a1541a56e22afb5f832a9e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus window hint and attribute. <a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">More...</a><br /></td></tr>
+<tr class="separator:ga54ddb14825a1541a56e22afb5f832a9e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga39d44b7c056e55e581355a92d240b58a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>&#160;&#160;&#160;0x00020002</td></tr>
+<tr class="memdesc:ga39d44b7c056e55e581355a92d240b58a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window iconification window attribute. <a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">More...</a><br /></td></tr>
+<tr class="separator:ga39d44b7c056e55e581355a92d240b58a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>&#160;&#160;&#160;0x00020003</td></tr>
+<tr class="memdesc:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window resize-ability window hint and attribute. <a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">More...</a><br /></td></tr>
+<tr class="separator:gadba13c7a1b3aa40831eb2beedbd5bd1d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>&#160;&#160;&#160;0x00020004</td></tr>
+<tr class="memdesc:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window visibility window hint and attribute. <a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">More...</a><br /></td></tr>
+<tr class="separator:gafb3cdc45297e06d8f1eb13adc69ca6c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga21b854d36314c94d65aed84405b2f25e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a>&#160;&#160;&#160;0x00020005</td></tr>
+<tr class="memdesc:ga21b854d36314c94d65aed84405b2f25e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">More...</a><br /></td></tr>
+<tr class="separator:ga21b854d36314c94d65aed84405b2f25e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga9d9874fc928200136a6dcdad726aa252"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">GLFW_AUTO_ICONIFY</a>&#160;&#160;&#160;0x00020006</td></tr>
+<tr class="memdesc:ga9d9874fc928200136a6dcdad726aa252"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window auto-iconification window hint and attribute. <a href="group__window.html#ga9d9874fc928200136a6dcdad726aa252">More...</a><br /></td></tr>
+<tr class="separator:ga9d9874fc928200136a6dcdad726aa252"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a>&#160;&#160;&#160;0x00020007</td></tr>
+<tr class="memdesc:ga7fb0be51407783b41adbf5bec0b09d80"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window decoration window hint and attribute. <a href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">More...</a><br /></td></tr>
+<tr class="separator:ga7fb0be51407783b41adbf5bec0b09d80"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>&#160;&#160;&#160;0x00020008</td></tr>
+<tr class="memdesc:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window maximization window hint and attribute. <a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">More...</a><br /></td></tr>
+<tr class="separator:gad8ccb396253ad0b72c6d4c917eb38a03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a>&#160;&#160;&#160;0x00020009</td></tr>
+<tr class="memdesc:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="mdescLeft">&#160;</td><td class="mdescRight">Cursor centering window hint. <a href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">More...</a><br /></td></tr>
+<tr class="separator:ga5ac0847c0aa0b3619f2855707b8a7a77"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>&#160;&#160;&#160;0x0002000A</td></tr>
+<tr class="memdesc:ga60a0578c3b9449027d683a9c6abb9f14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window framebuffer transparency hint and attribute. <a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">More...</a><br /></td></tr>
+<tr class="separator:ga60a0578c3b9449027d683a9c6abb9f14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>&#160;&#160;&#160;0x0002000B</td></tr>
+<tr class="memdesc:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Mouse cursor hover window attribute. <a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">More...</a><br /></td></tr>
+<tr class="separator:ga8665c71c6fa3d22425c6a0e8a3f89d8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafa94b1da34bfd6488c0d709761504dfc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a>&#160;&#160;&#160;0x0002000C</td></tr>
+<tr class="memdesc:gafa94b1da34bfd6488c0d709761504dfc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Input focus on calling show window hint and attribute. <a href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">More...</a><br /></td></tr>
+<tr class="separator:gafa94b1da34bfd6488c0d709761504dfc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>&#160;&#160;&#160;0x00021001</td></tr>
+<tr class="memdesc:gaf78ed8e417dbcc1e354906cc2708c982"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">More...</a><br /></td></tr>
+<tr class="separator:gaf78ed8e417dbcc1e354906cc2708c982"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>&#160;&#160;&#160;0x00021002</td></tr>
+<tr class="memdesc:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">More...</a><br /></td></tr>
+<tr class="separator:gafba3b72638c914e5fb8a237dd4c50d4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab292ea403db6d514537b515311bf9ae3"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>&#160;&#160;&#160;0x00021003</td></tr>
+<tr class="memdesc:gab292ea403db6d514537b515311bf9ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">More...</a><br /></td></tr>
+<tr class="separator:gab292ea403db6d514537b515311bf9ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafed79a3f468997877da86c449bd43e8c"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafed79a3f468997877da86c449bd43e8c">GLFW_ALPHA_BITS</a>&#160;&#160;&#160;0x00021004</td></tr>
+<tr class="memdesc:gafed79a3f468997877da86c449bd43e8c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gafed79a3f468997877da86c449bd43e8c">More...</a><br /></td></tr>
+<tr class="separator:gafed79a3f468997877da86c449bd43e8c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga318a55eac1fee57dfe593b6d38149d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">GLFW_DEPTH_BITS</a>&#160;&#160;&#160;0x00021005</td></tr>
+<tr class="memdesc:ga318a55eac1fee57dfe593b6d38149d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga318a55eac1fee57dfe593b6d38149d07">More...</a><br /></td></tr>
+<tr class="separator:ga318a55eac1fee57dfe593b6d38149d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">GLFW_STENCIL_BITS</a>&#160;&#160;&#160;0x00021006</td></tr>
+<tr class="memdesc:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d">More...</a><br /></td></tr>
+<tr class="separator:ga5339890a45a1fb38e93cb9fcc5fd069d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">GLFW_ACCUM_RED_BITS</a>&#160;&#160;&#160;0x00021007</td></tr>
+<tr class="memdesc:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6">More...</a><br /></td></tr>
+<tr class="separator:gaead34a9a683b2bc20eecf30ba738bfc6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga65713cee1326f8e9d806fdf93187b471"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">GLFW_ACCUM_GREEN_BITS</a>&#160;&#160;&#160;0x00021008</td></tr>
+<tr class="memdesc:ga65713cee1326f8e9d806fdf93187b471"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga65713cee1326f8e9d806fdf93187b471">More...</a><br /></td></tr>
+<tr class="separator:ga65713cee1326f8e9d806fdf93187b471"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">GLFW_ACCUM_BLUE_BITS</a>&#160;&#160;&#160;0x00021009</td></tr>
+<tr class="memdesc:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce">More...</a><br /></td></tr>
+<tr class="separator:ga22bbe9104a8ce1f8b88fb4f186aa36ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae829b55591c18169a40ab4067a041b1f"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae829b55591c18169a40ab4067a041b1f">GLFW_ACCUM_ALPHA_BITS</a>&#160;&#160;&#160;0x0002100A</td></tr>
+<tr class="memdesc:gae829b55591c18169a40ab4067a041b1f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer bit depth hint. <a href="group__window.html#gae829b55591c18169a40ab4067a041b1f">More...</a><br /></td></tr>
+<tr class="separator:gae829b55591c18169a40ab4067a041b1f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab05108c5029443b371112b031d1fa174"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab05108c5029443b371112b031d1fa174">GLFW_AUX_BUFFERS</a>&#160;&#160;&#160;0x0002100B</td></tr>
+<tr class="memdesc:gab05108c5029443b371112b031d1fa174"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer auxiliary buffer hint. <a href="group__window.html#gab05108c5029443b371112b031d1fa174">More...</a><br /></td></tr>
+<tr class="separator:gab05108c5029443b371112b031d1fa174"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga83d991efca02537e2d69969135b77b03"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga83d991efca02537e2d69969135b77b03">GLFW_STEREO</a>&#160;&#160;&#160;0x0002100C</td></tr>
+<tr class="memdesc:ga83d991efca02537e2d69969135b77b03"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL stereoscopic rendering hint. <a href="group__window.html#ga83d991efca02537e2d69969135b77b03">More...</a><br /></td></tr>
+<tr class="separator:ga83d991efca02537e2d69969135b77b03"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">GLFW_SAMPLES</a>&#160;&#160;&#160;0x0002100D</td></tr>
+<tr class="memdesc:ga2cdf86fdcb7722fb8829c4e201607535"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer MSAA samples hint. <a href="group__window.html#ga2cdf86fdcb7722fb8829c4e201607535">More...</a><br /></td></tr>
+<tr class="separator:ga2cdf86fdcb7722fb8829c4e201607535"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga444a8f00414a63220591f9fdb7b5642b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">GLFW_SRGB_CAPABLE</a>&#160;&#160;&#160;0x0002100E</td></tr>
+<tr class="memdesc:ga444a8f00414a63220591f9fdb7b5642b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer sRGB hint. <a href="group__window.html#ga444a8f00414a63220591f9fdb7b5642b">More...</a><br /></td></tr>
+<tr class="separator:ga444a8f00414a63220591f9fdb7b5642b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0f20825e6e47ee8ba389024519682212"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>&#160;&#160;&#160;0x0002100F</td></tr>
+<tr class="memdesc:ga0f20825e6e47ee8ba389024519682212"><td class="mdescLeft">&#160;</td><td class="mdescRight">Monitor refresh rate hint. <a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">More...</a><br /></td></tr>
+<tr class="separator:ga0f20825e6e47ee8ba389024519682212"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga714a5d569e8a274ea58fdfa020955339"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">GLFW_DOUBLEBUFFER</a>&#160;&#160;&#160;0x00021010</td></tr>
+<tr class="memdesc:ga714a5d569e8a274ea58fdfa020955339"><td class="mdescLeft">&#160;</td><td class="mdescRight">Framebuffer double buffering hint. <a href="group__window.html#ga714a5d569e8a274ea58fdfa020955339">More...</a><br /></td></tr>
+<tr class="separator:ga714a5d569e8a274ea58fdfa020955339"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>&#160;&#160;&#160;0x00022001</td></tr>
+<tr class="memdesc:ga649309cf72a3d3de5b1348ca7936c95b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API hint and attribute. <a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">More...</a><br /></td></tr>
+<tr class="separator:ga649309cf72a3d3de5b1348ca7936c95b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>&#160;&#160;&#160;0x00022002</td></tr>
+<tr class="memdesc:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API major version hint and attribute. <a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">More...</a><br /></td></tr>
+<tr class="separator:gafe5e4922de1f9932d7e9849bb053b0c0"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>&#160;&#160;&#160;0x00022003</td></tr>
+<tr class="memdesc:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API minor version hint and attribute. <a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">More...</a><br /></td></tr>
+<tr class="separator:ga31aca791e4b538c4e4a771eb95cc2d07"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">GLFW_CONTEXT_REVISION</a>&#160;&#160;&#160;0x00022004</td></tr>
+<tr class="memdesc:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context client API revision number attribute. <a href="group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08">More...</a><br /></td></tr>
+<tr class="separator:gafb9475071aa77c6fb05ca5a5c8678a08"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gade3593916b4c507900aa2d6844810e00"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gade3593916b4c507900aa2d6844810e00">GLFW_CONTEXT_ROBUSTNESS</a>&#160;&#160;&#160;0x00022005</td></tr>
+<tr class="memdesc:gade3593916b4c507900aa2d6844810e00"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context robustness hint and attribute. <a href="group__window.html#gade3593916b4c507900aa2d6844810e00">More...</a><br /></td></tr>
+<tr class="separator:gade3593916b4c507900aa2d6844810e00"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga13d24b12465da8b28985f46c8557925b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga13d24b12465da8b28985f46c8557925b">GLFW_OPENGL_FORWARD_COMPAT</a>&#160;&#160;&#160;0x00022006</td></tr>
+<tr class="memdesc:ga13d24b12465da8b28985f46c8557925b"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL forward-compatibility hint and attribute. <a href="group__window.html#ga13d24b12465da8b28985f46c8557925b">More...</a><br /></td></tr>
+<tr class="separator:ga13d24b12465da8b28985f46c8557925b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">GLFW_OPENGL_DEBUG_CONTEXT</a>&#160;&#160;&#160;0x00022007</td></tr>
+<tr class="memdesc:ga87ec2df0b915201e950ca42d5d0831e1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Debug mode context hint and attribute. <a href="group__window.html#ga87ec2df0b915201e950ca42d5d0831e1">More...</a><br /></td></tr>
+<tr class="separator:ga87ec2df0b915201e950ca42d5d0831e1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">GLFW_OPENGL_PROFILE</a>&#160;&#160;&#160;0x00022008</td></tr>
+<tr class="memdesc:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="mdescLeft">&#160;</td><td class="mdescRight">OpenGL profile hint and attribute. <a href="group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12">More...</a><br /></td></tr>
+<tr class="separator:ga44f3a6b4261fbe351e0b950b0f372e12"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a>&#160;&#160;&#160;0x00022009</td></tr>
+<tr class="memdesc:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context flush-on-release hint and attribute. <a href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">More...</a><br /></td></tr>
+<tr class="separator:ga72b648a8378fe3310c7c7bbecc0f7be6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5a52fdfd46d8249c211f923675728082"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a>&#160;&#160;&#160;0x0002200A</td></tr>
+<tr class="memdesc:ga5a52fdfd46d8249c211f923675728082"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context error suppression hint and attribute. <a href="group__window.html#ga5a52fdfd46d8249c211f923675728082">More...</a><br /></td></tr>
+<tr class="separator:ga5a52fdfd46d8249c211f923675728082"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a>&#160;&#160;&#160;0x0002200B</td></tr>
+<tr class="memdesc:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="mdescLeft">&#160;</td><td class="mdescRight">Context creation API hint and attribute. <a href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">More...</a><br /></td></tr>
+<tr class="separator:ga5154cebfcd831c1cc63a4d5ac9bb4486"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga620bc4280c7eab81ac9f02204500ed47"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">GLFW_SCALE_TO_MONITOR</a>&#160;&#160;&#160;0x0002200C</td></tr>
+<tr class="memdesc:ga620bc4280c7eab81ac9f02204500ed47"><td class="mdescLeft">&#160;</td><td class="mdescRight">Window content area scaling window <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">window hint</a>. <a href="group__window.html#ga620bc4280c7eab81ac9f02204500ed47">More...</a><br /></td></tr>
+<tr class="separator:ga620bc4280c7eab81ac9f02204500ed47"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a>&#160;&#160;&#160;0x00023001</td></tr>
+<tr class="memdesc:gab6ef2d02eb55800d249ccf1af253c35e"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">window hint</a>. <a href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">More...</a><br /></td></tr>
+<tr class="separator:gab6ef2d02eb55800d249ccf1af253c35e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a>&#160;&#160;&#160;0x00023002</td></tr>
+<tr class="memdesc:ga70fa0fbc745de6aa824df79a580e84b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">window hint</a>. <a href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">More...</a><br /></td></tr>
+<tr class="separator:ga70fa0fbc745de6aa824df79a580e84b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a>&#160;&#160;&#160;0x00023003</td></tr>
+<tr class="memdesc:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="mdescLeft">&#160;</td><td class="mdescRight">macOS specific <a class="el" href="window_guide.html#GLFW_COCOA_GRAPHICS_SWITCHING_hint">window hint</a>. <a href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">More...</a><br /></td></tr>
+<tr class="separator:ga53c84ed2ddd94e15bbd44b1f6f7feafc"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae5a9ea2fccccd92edbd343fc56461114"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a>&#160;&#160;&#160;0x00024001</td></tr>
+<tr class="memdesc:gae5a9ea2fccccd92edbd343fc56461114"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">More...</a><br /></td></tr>
+<tr class="separator:gae5a9ea2fccccd92edbd343fc56461114"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga494c3c0d911e4b860b946530a3e389e8"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a>&#160;&#160;&#160;0x00024002</td></tr>
+<tr class="memdesc:ga494c3c0d911e4b860b946530a3e389e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">X11 specific <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">window hint</a>. <a href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">More...</a><br /></td></tr>
+<tr class="separator:ga494c3c0d911e4b860b946530a3e389e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="typedef-members" name="typedef-members"></a>
+Typedefs</h2></td></tr>
+<tr class="memitem:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td></tr>
+<tr class="memdesc:ga3c96d80d363e67d13a41b5d1821f3242"><td class="mdescLeft">&#160;</td><td class="mdescRight">Opaque window object. <a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">More...</a><br /></td></tr>
+<tr class="separator:ga3c96d80d363e67d13a41b5d1821f3242"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
+<tr class="memdesc:gabe287973a21a8f927cde4db06b8dcbe9"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window position callbacks. <a href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">More...</a><br /></td></tr>
+<tr class="separator:gabe287973a21a8f927cde4db06b8dcbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaec0282944bb810f6f3163ec02da90350"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:gaec0282944bb810f6f3163ec02da90350"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window size callbacks. <a href="group__window.html#gaec0282944bb810f6f3163ec02da90350">More...</a><br /></td></tr>
+<tr class="separator:gaec0282944bb810f6f3163ec02da90350"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabf859b936d80961b7d39013a9694cc3e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gabf859b936d80961b7d39013a9694cc3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window close callbacks. <a href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">More...</a><br /></td></tr>
+<tr class="separator:gabf859b936d80961b7d39013a9694cc3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga431663a1427d2eb3a273bc398b6737b5"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga431663a1427d2eb3a273bc398b6737b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content refresh callbacks. <a href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">More...</a><br /></td></tr>
+<tr class="separator:ga431663a1427d2eb3a273bc398b6737b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td></tr>
+<tr class="memdesc:gabc58c47e9d93f6eb1862d615c3680f46"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window focus callbacks. <a href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">More...</a><br /></td></tr>
+<tr class="separator:gabc58c47e9d93f6eb1862d615c3680f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td></tr>
+<tr class="memdesc:ga35c658cccba236f26e7adee0e25f6a4f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window iconify callbacks. <a href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">More...</a><br /></td></tr>
+<tr class="separator:ga35c658cccba236f26e7adee0e25f6a4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3017196fdaec33ac3e095765176c2a90"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td></tr>
+<tr class="memdesc:ga3017196fdaec33ac3e095765176c2a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window maximize callbacks. <a href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">More...</a><br /></td></tr>
+<tr class="separator:ga3017196fdaec33ac3e095765176c2a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae18026e294dde685ed2e5f759533144d"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:gae18026e294dde685ed2e5f759533144d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for framebuffer size callbacks. <a href="group__window.html#gae18026e294dde685ed2e5f759533144d">More...</a><br /></td></tr>
+<tr class="separator:gae18026e294dde685ed2e5f759533144d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memItemLeft" align="right" valign="top">typedef void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td></tr>
+<tr class="memdesc:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="mdescLeft">&#160;</td><td class="mdescRight">The function pointer type for window content scale callbacks. <a href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">More...</a><br /></td></tr>
+<tr class="separator:ga77f288a2d04bb3c77c7d9615d08cf70e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">GLFWimage</a></td></tr>
+<tr class="memdesc:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="mdescLeft">&#160;</td><td class="mdescRight">Image data. <a href="group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca">More...</a><br /></td></tr>
+<tr class="separator:ga7cc0a09de172fa7250872046f8c4d2ca"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="func-members" name="func-members"></a>
+Functions</h2></td></tr>
+<tr class="memitem:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a> (void)</td></tr>
+<tr class="memdesc:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Resets all window hints to their default values. <a href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">More...</a><br /></td></tr>
+<tr class="separator:gaa77c4898dfb83344a6b4f76aa16b9a4a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> (int hint, int value)</td></tr>
+<tr class="memdesc:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">More...</a><br /></td></tr>
+<tr class="separator:ga7d9c8c62384b1e2821c4dc48952d2033"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> (int hint, const char *value)</td></tr>
+<tr class="memdesc:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the specified window hint to the desired value. <a href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">More...</a><br /></td></tr>
+<tr class="separator:ga8cb2782861c9d997bcf2dea97f363e5f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3555a418df92ad53f917597fe2f64aeb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (int width, int height, const char *title, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *share)</td></tr>
+<tr class="memdesc:ga3555a418df92ad53f917597fe2f64aeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a window and its associated context. <a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">More...</a><br /></td></tr>
+<tr class="separator:ga3555a418df92ad53f917597fe2f64aeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gacdf43e51376051d2c091662e9fe3d7b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroys the specified window and its context. <a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">More...</a><br /></td></tr>
+<tr class="separator:gacdf43e51376051d2c091662e9fe3d7b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga24e02fbfefbb81fc45320989f8140ab5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Checks the close flag of the specified window. <a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">More...</a><br /></td></tr>
+<tr class="separator:ga24e02fbfefbb81fc45320989f8140ab5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int value)</td></tr>
+<tr class="memdesc:ga49c449dde2a6f87d996f4daaa09d6708"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close flag of the specified window. <a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">More...</a><br /></td></tr>
+<tr class="separator:ga49c449dde2a6f87d996f4daaa09d6708"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga5d877f09e968cef7a360b513306f17ff"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, const char *title)</td></tr>
+<tr class="memdesc:ga5d877f09e968cef7a360b513306f17ff"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the title of the specified window. <a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">More...</a><br /></td></tr>
+<tr class="separator:ga5d877f09e968cef7a360b513306f17ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int count, const <a class="el" href="structGLFWimage.html">GLFWimage</a> *images)</td></tr>
+<tr class="memdesc:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the icon for the specified window. <a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">More...</a><br /></td></tr>
+<tr class="separator:gadd7ccd39fe7a7d1f0904666ae5932dc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga73cb526c000876fd8ddf571570fdb634"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *xpos, int *ypos)</td></tr>
+<tr class="memdesc:ga73cb526c000876fd8ddf571570fdb634"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the position of the content area of the specified window. <a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">More...</a><br /></td></tr>
+<tr class="separator:ga73cb526c000876fd8ddf571570fdb634"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td></tr>
+<tr class="memdesc:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position of the content area of the specified window. <a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">More...</a><br /></td></tr>
+<tr class="separator:ga1abb6d690e8c88e0c8cd1751356dbca8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
+<tr class="memdesc:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the content area of the specified window. <a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">More...</a><br /></td></tr>
+<tr class="separator:gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac314fa6cec7d2d307be9963e2709cc90"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int minwidth, int minheight, int maxwidth, int maxheight)</td></tr>
+<tr class="memdesc:gac314fa6cec7d2d307be9963e2709cc90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size limits of the specified window. <a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">More...</a><br /></td></tr>
+<tr class="separator:gac314fa6cec7d2d307be9963e2709cc90"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int numer, int denom)</td></tr>
+<tr class="memdesc:ga72ac8cb1ee2e312a878b55153d81b937"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the aspect ratio of the specified window. <a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">More...</a><br /></td></tr>
+<tr class="separator:ga72ac8cb1ee2e312a878b55153d81b937"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga371911f12c74c504dd8d47d832d095cb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td></tr>
+<tr class="memdesc:ga371911f12c74c504dd8d47d832d095cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size of the content area of the specified window. <a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">More...</a><br /></td></tr>
+<tr class="separator:ga371911f12c74c504dd8d47d832d095cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga0e2637a4161afb283f5300c7f94785c9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *width, int *height)</td></tr>
+<tr class="memdesc:ga0e2637a4161afb283f5300c7f94785c9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the framebuffer of the specified window. <a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">More...</a><br /></td></tr>
+<tr class="separator:ga0e2637a4161afb283f5300c7f94785c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1a9fd382058c53101b21cf211898f1f1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int *left, int *top, int *right, int *bottom)</td></tr>
+<tr class="memdesc:ga1a9fd382058c53101b21cf211898f1f1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the size of the frame of the window. <a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">More...</a><br /></td></tr>
+<tr class="separator:ga1a9fd382058c53101b21cf211898f1f1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float *xscale, float *yscale)</td></tr>
+<tr class="memdesc:gaf5d31de9c19c4f994facea64d2b3106c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Retrieves the content scale for the specified window. <a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">More...</a><br /></td></tr>
+<tr class="separator:gaf5d31de9c19c4f994facea64d2b3106c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad09f0bd7a6307c4533b7061828480a84"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gad09f0bd7a6307c4533b7061828480a84"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the opacity of the whole window. <a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">More...</a><br /></td></tr>
+<tr class="separator:gad09f0bd7a6307c4533b7061828480a84"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac31caeb3d1088831b13d2c8a156802e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float opacity)</td></tr>
+<tr class="memdesc:gac31caeb3d1088831b13d2c8a156802e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the opacity of the whole window. <a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">More...</a><br /></td></tr>
+<tr class="separator:gac31caeb3d1088831b13d2c8a156802e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Iconifies the specified window. <a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">More...</a><br /></td></tr>
+<tr class="separator:ga1bb559c0ebaad63c5c05ad2a066779c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga52527a5904b47d802b6b4bb519cdebc7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restores the specified window. <a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">More...</a><br /></td></tr>
+<tr class="separator:ga52527a5904b47d802b6b4bb519cdebc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3f541387449d911274324ae7f17ec56b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga3f541387449d911274324ae7f17ec56b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Maximizes the specified window. <a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">More...</a><br /></td></tr>
+<tr class="separator:ga3f541387449d911274324ae7f17ec56b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga61be47917b72536a148300f46494fc66"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga61be47917b72536a148300f46494fc66"><td class="mdescLeft">&#160;</td><td class="mdescRight">Makes the specified window visible. <a href="group__window.html#ga61be47917b72536a148300f46494fc66">More...</a><br /></td></tr>
+<tr class="separator:ga61be47917b72536a148300f46494fc66"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga49401f82a1ba5f15db5590728314d47c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga49401f82a1ba5f15db5590728314d47c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Hides the specified window. <a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">More...</a><br /></td></tr>
+<tr class="separator:ga49401f82a1ba5f15db5590728314d47c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga873780357abd3f3a081d71a40aae45a1"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga873780357abd3f3a081d71a40aae45a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Brings the specified window to front and sets input focus. <a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">More...</a><br /></td></tr>
+<tr class="separator:ga873780357abd3f3a081d71a40aae45a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga2f8d59323fc4692c1d54ba08c863a703"><td class="mdescLeft">&#160;</td><td class="mdescRight">Requests user attention to the specified window. <a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">More...</a><br /></td></tr>
+<tr class="separator:ga2f8d59323fc4692c1d54ba08c863a703"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga4d766499ac02c60f02221a9dfab87299"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga4d766499ac02c60f02221a9dfab87299"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the monitor that the window uses for full screen mode. <a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">More...</a><br /></td></tr>
+<tr class="separator:ga4d766499ac02c60f02221a9dfab87299"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *monitor, int xpos, int ypos, int width, int height, int refreshRate)</td></tr>
+<tr class="memdesc:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the mode, monitor, video mode and placement of a window. <a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">More...</a><br /></td></tr>
+<tr class="separator:ga81c76c418af80a1cce7055bccb0ae0a7"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacccb29947ea4b16860ebef42c2cb9337"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib)</td></tr>
+<tr class="memdesc:gacccb29947ea4b16860ebef42c2cb9337"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns an attribute of the specified window. <a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">More...</a><br /></td></tr>
+<tr class="separator:gacccb29947ea4b16860ebef42c2cb9337"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gace2afda29b4116ec012e410a6819033e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int attrib, int value)</td></tr>
+<tr class="memdesc:gace2afda29b4116ec012e410a6819033e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets an attribute of the specified window. <a href="group__window.html#gace2afda29b4116ec012e410a6819033e">More...</a><br /></td></tr>
+<tr class="separator:gace2afda29b4116ec012e410a6819033e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, void *pointer)</td></tr>
+<tr class="memdesc:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the user pointer of the specified window. <a href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">More...</a><br /></td></tr>
+<tr class="separator:ga3d2fc6026e690ab31a13f78bc9fd3651"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gae77a4add0d2023ca21ff1443ced01653"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:gae77a4add0d2023ca21ff1443ced01653"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the user pointer of the specified window. <a href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">More...</a><br /></td></tr>
+<tr class="separator:gae77a4add0d2023ca21ff1443ced01653"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> callback)</td></tr>
+<tr class="memdesc:ga08bdfbba88934f9c4f92fd757979ac74"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the position callback for the specified window. <a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">More...</a><br /></td></tr>
+<tr class="separator:ga08bdfbba88934f9c4f92fd757979ac74"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gad91b8b047a0c4c6033c38853864c34f8"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> callback)</td></tr>
+<tr class="memdesc:gad91b8b047a0c4c6033c38853864c34f8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the size callback for the specified window. <a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">More...</a><br /></td></tr>
+<tr class="separator:gad91b8b047a0c4c6033c38853864c34f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gada646d775a7776a95ac000cfc1885331"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> callback)</td></tr>
+<tr class="memdesc:gada646d775a7776a95ac000cfc1885331"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the close callback for the specified window. <a href="group__window.html#gada646d775a7776a95ac000cfc1885331">More...</a><br /></td></tr>
+<tr class="separator:gada646d775a7776a95ac000cfc1885331"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> callback)</td></tr>
+<tr class="memdesc:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the refresh callback for the specified window. <a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">More...</a><br /></td></tr>
+<tr class="separator:ga1c5c7eb889c33c7f4d10dd35b327654e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac2d83c4a10f071baf841f6730528e66c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> callback)</td></tr>
+<tr class="memdesc:gac2d83c4a10f071baf841f6730528e66c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the focus callback for the specified window. <a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">More...</a><br /></td></tr>
+<tr class="separator:gac2d83c4a10f071baf841f6730528e66c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gac793e9efd255567b5fb8b445052cfd3e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> callback)</td></tr>
+<tr class="memdesc:gac793e9efd255567b5fb8b445052cfd3e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the iconify callback for the specified window. <a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">More...</a><br /></td></tr>
+<tr class="separator:gac793e9efd255567b5fb8b445052cfd3e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gacbe64c339fbd94885e62145563b6dc93"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> callback)</td></tr>
+<tr class="memdesc:gacbe64c339fbd94885e62145563b6dc93"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the maximize callback for the specified window. <a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">More...</a><br /></td></tr>
+<tr class="separator:gacbe64c339fbd94885e62145563b6dc93"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab3fb7c3366577daef18c0023e2a8591f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> callback)</td></tr>
+<tr class="memdesc:gab3fb7c3366577daef18c0023e2a8591f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the framebuffer resize callback for the specified window. <a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">More...</a><br /></td></tr>
+<tr class="separator:gab3fb7c3366577daef18c0023e2a8591f"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> callback)</td></tr>
+<tr class="memdesc:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sets the window content scale callback for the specified window. <a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">More...</a><br /></td></tr>
+<tr class="separator:gaf2832ebb5aa6c252a2d261de002c92d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> (void)</td></tr>
+<tr class="memdesc:ga37bd57223967b4211d60ca1a0bf3c832"><td class="mdescLeft">&#160;</td><td class="mdescRight">Processes all pending events. <a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">More...</a><br /></td></tr>
+<tr class="separator:ga37bd57223967b4211d60ca1a0bf3c832"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga554e37d781f0a997656c26b2c56c835e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> (void)</td></tr>
+<tr class="memdesc:ga554e37d781f0a997656c26b2c56c835e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits until events are queued and processes them. <a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">More...</a><br /></td></tr>
+<tr class="separator:ga554e37d781f0a997656c26b2c56c835e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> (double timeout)</td></tr>
+<tr class="memdesc:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="mdescLeft">&#160;</td><td class="mdescRight">Waits with timeout until events are queued and processes them. <a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">More...</a><br /></td></tr>
+<tr class="separator:ga605a178db92f1a7f1a925563ef3ea2cf"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> (void)</td></tr>
+<tr class="memdesc:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Posts an empty event to the event queue. <a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">More...</a><br /></td></tr>
+<tr class="separator:gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td></tr>
+<tr class="memdesc:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="mdescLeft">&#160;</td><td class="mdescRight">Swaps the front and back buffers of the specified window. <a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">More...</a><br /></td></tr>
+<tr class="separator:ga15a5a1ee5b3c2ca6b15ca209a12efd14"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<h2 class="groupheader">Macro Definition Documentation</h2>
+<a id="ga54ddb14825a1541a56e22afb5f832a9e" name="ga54ddb14825a1541a56e22afb5f832a9e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga54ddb14825a1541a56e22afb5f832a9e">&#9670;&nbsp;</a></span>GLFW_FOCUSED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_FOCUSED&#160;&#160;&#160;0x00020001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Input focus <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">window hint</a> or <a class="el" href="window_guide.html#GLFW_FOCUSED_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga39d44b7c056e55e581355a92d240b58a" name="ga39d44b7c056e55e581355a92d240b58a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga39d44b7c056e55e581355a92d240b58a">&#9670;&nbsp;</a></span>GLFW_ICONIFIED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ICONIFIED&#160;&#160;&#160;0x00020002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window iconification <a class="el" href="window_guide.html#GLFW_ICONIFIED_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="gadba13c7a1b3aa40831eb2beedbd5bd1d" name="gadba13c7a1b3aa40831eb2beedbd5bd1d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadba13c7a1b3aa40831eb2beedbd5bd1d">&#9670;&nbsp;</a></span>GLFW_RESIZABLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RESIZABLE&#160;&#160;&#160;0x00020003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window resize-ability <a class="el" href="window_guide.html#GLFW_RESIZABLE_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="gafb3cdc45297e06d8f1eb13adc69ca6c4" name="gafb3cdc45297e06d8f1eb13adc69ca6c4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb3cdc45297e06d8f1eb13adc69ca6c4">&#9670;&nbsp;</a></span>GLFW_VISIBLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_VISIBLE&#160;&#160;&#160;0x00020004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window visibility <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_VISIBLE_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga21b854d36314c94d65aed84405b2f25e" name="ga21b854d36314c94d65aed84405b2f25e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga21b854d36314c94d65aed84405b2f25e">&#9670;&nbsp;</a></span>GLFW_DECORATED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_DECORATED&#160;&#160;&#160;0x00020005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window decoration <a class="el" href="window_guide.html#GLFW_DECORATED_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga9d9874fc928200136a6dcdad726aa252" name="ga9d9874fc928200136a6dcdad726aa252"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga9d9874fc928200136a6dcdad726aa252">&#9670;&nbsp;</a></span>GLFW_AUTO_ICONIFY</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_AUTO_ICONIFY&#160;&#160;&#160;0x00020006</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window auto-iconification <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga7fb0be51407783b41adbf5bec0b09d80" name="ga7fb0be51407783b41adbf5bec0b09d80"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7fb0be51407783b41adbf5bec0b09d80">&#9670;&nbsp;</a></span>GLFW_FLOATING</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_FLOATING&#160;&#160;&#160;0x00020007</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window decoration <a class="el" href="window_guide.html#GLFW_FLOATING_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="gad8ccb396253ad0b72c6d4c917eb38a03" name="gad8ccb396253ad0b72c6d4c917eb38a03"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad8ccb396253ad0b72c6d4c917eb38a03">&#9670;&nbsp;</a></span>GLFW_MAXIMIZED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_MAXIMIZED&#160;&#160;&#160;0x00020008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window maximization <a class="el" href="window_guide.html#GLFW_MAXIMIZED_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_MAXIMIZED_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga5ac0847c0aa0b3619f2855707b8a7a77" name="ga5ac0847c0aa0b3619f2855707b8a7a77"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5ac0847c0aa0b3619f2855707b8a7a77">&#9670;&nbsp;</a></span>GLFW_CENTER_CURSOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CENTER_CURSOR&#160;&#160;&#160;0x00020009</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Cursor centering <a class="el" href="window_guide.html#GLFW_CENTER_CURSOR_hint">window hint</a>. </p>
+
+</div>
+</div>
+<a id="ga60a0578c3b9449027d683a9c6abb9f14" name="ga60a0578c3b9449027d683a9c6abb9f14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga60a0578c3b9449027d683a9c6abb9f14">&#9670;&nbsp;</a></span>GLFW_TRANSPARENT_FRAMEBUFFER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_TRANSPARENT_FRAMEBUFFER&#160;&#160;&#160;0x0002000A</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Window framebuffer transparency <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_hint">window hint</a> and <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga8665c71c6fa3d22425c6a0e8a3f89d8a" name="ga8665c71c6fa3d22425c6a0e8a3f89d8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8665c71c6fa3d22425c6a0e8a3f89d8a">&#9670;&nbsp;</a></span>GLFW_HOVERED</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_HOVERED&#160;&#160;&#160;0x0002000B</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Mouse cursor hover <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="gafa94b1da34bfd6488c0d709761504dfc" name="gafa94b1da34bfd6488c0d709761504dfc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafa94b1da34bfd6488c0d709761504dfc">&#9670;&nbsp;</a></span>GLFW_FOCUS_ON_SHOW</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_FOCUS_ON_SHOW&#160;&#160;&#160;0x0002000C</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Input focus <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">window hint</a> or <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">window attribute</a>. </p>
+
+</div>
+</div>
+<a id="gaf78ed8e417dbcc1e354906cc2708c982" name="gaf78ed8e417dbcc1e354906cc2708c982"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf78ed8e417dbcc1e354906cc2708c982">&#9670;&nbsp;</a></span>GLFW_RED_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_RED_BITS&#160;&#160;&#160;0x00021001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_RED_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gafba3b72638c914e5fb8a237dd4c50d4d" name="gafba3b72638c914e5fb8a237dd4c50d4d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafba3b72638c914e5fb8a237dd4c50d4d">&#9670;&nbsp;</a></span>GLFW_GREEN_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_GREEN_BITS&#160;&#160;&#160;0x00021002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_GREEN_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gab292ea403db6d514537b515311bf9ae3" name="gab292ea403db6d514537b515311bf9ae3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab292ea403db6d514537b515311bf9ae3">&#9670;&nbsp;</a></span>GLFW_BLUE_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_BLUE_BITS&#160;&#160;&#160;0x00021003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_BLUE_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gafed79a3f468997877da86c449bd43e8c" name="gafed79a3f468997877da86c449bd43e8c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafed79a3f468997877da86c449bd43e8c">&#9670;&nbsp;</a></span>GLFW_ALPHA_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ALPHA_BITS&#160;&#160;&#160;0x00021004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ALPHA_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga318a55eac1fee57dfe593b6d38149d07" name="ga318a55eac1fee57dfe593b6d38149d07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga318a55eac1fee57dfe593b6d38149d07">&#9670;&nbsp;</a></span>GLFW_DEPTH_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_DEPTH_BITS&#160;&#160;&#160;0x00021005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_DEPTH_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga5339890a45a1fb38e93cb9fcc5fd069d" name="ga5339890a45a1fb38e93cb9fcc5fd069d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5339890a45a1fb38e93cb9fcc5fd069d">&#9670;&nbsp;</a></span>GLFW_STENCIL_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_STENCIL_BITS&#160;&#160;&#160;0x00021006</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_STENCIL_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gaead34a9a683b2bc20eecf30ba738bfc6" name="gaead34a9a683b2bc20eecf30ba738bfc6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaead34a9a683b2bc20eecf30ba738bfc6">&#9670;&nbsp;</a></span>GLFW_ACCUM_RED_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ACCUM_RED_BITS&#160;&#160;&#160;0x00021007</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_RED_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga65713cee1326f8e9d806fdf93187b471" name="ga65713cee1326f8e9d806fdf93187b471"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga65713cee1326f8e9d806fdf93187b471">&#9670;&nbsp;</a></span>GLFW_ACCUM_GREEN_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ACCUM_GREEN_BITS&#160;&#160;&#160;0x00021008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_GREEN_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga22bbe9104a8ce1f8b88fb4f186aa36ce" name="ga22bbe9104a8ce1f8b88fb4f186aa36ce"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga22bbe9104a8ce1f8b88fb4f186aa36ce">&#9670;&nbsp;</a></span>GLFW_ACCUM_BLUE_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ACCUM_BLUE_BITS&#160;&#160;&#160;0x00021009</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_BLUE_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gae829b55591c18169a40ab4067a041b1f" name="gae829b55591c18169a40ab4067a041b1f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae829b55591c18169a40ab4067a041b1f">&#9670;&nbsp;</a></span>GLFW_ACCUM_ALPHA_BITS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_ACCUM_ALPHA_BITS&#160;&#160;&#160;0x0002100A</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer bit depth <a class="el" href="window_guide.html#GLFW_ACCUM_ALPHA_BITS">hint</a>. </p>
+
+</div>
+</div>
+<a id="gab05108c5029443b371112b031d1fa174" name="gab05108c5029443b371112b031d1fa174"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab05108c5029443b371112b031d1fa174">&#9670;&nbsp;</a></span>GLFW_AUX_BUFFERS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_AUX_BUFFERS&#160;&#160;&#160;0x0002100B</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer auxiliary buffer <a class="el" href="window_guide.html#GLFW_AUX_BUFFERS">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga83d991efca02537e2d69969135b77b03" name="ga83d991efca02537e2d69969135b77b03"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga83d991efca02537e2d69969135b77b03">&#9670;&nbsp;</a></span>GLFW_STEREO</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_STEREO&#160;&#160;&#160;0x0002100C</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >OpenGL stereoscopic rendering <a class="el" href="window_guide.html#GLFW_STEREO">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga2cdf86fdcb7722fb8829c4e201607535" name="ga2cdf86fdcb7722fb8829c4e201607535"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2cdf86fdcb7722fb8829c4e201607535">&#9670;&nbsp;</a></span>GLFW_SAMPLES</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_SAMPLES&#160;&#160;&#160;0x0002100D</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer MSAA samples <a class="el" href="window_guide.html#GLFW_SAMPLES">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga444a8f00414a63220591f9fdb7b5642b" name="ga444a8f00414a63220591f9fdb7b5642b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga444a8f00414a63220591f9fdb7b5642b">&#9670;&nbsp;</a></span>GLFW_SRGB_CAPABLE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_SRGB_CAPABLE&#160;&#160;&#160;0x0002100E</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer sRGB <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga0f20825e6e47ee8ba389024519682212" name="ga0f20825e6e47ee8ba389024519682212"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0f20825e6e47ee8ba389024519682212">&#9670;&nbsp;</a></span>GLFW_REFRESH_RATE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_REFRESH_RATE&#160;&#160;&#160;0x0002100F</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Monitor refresh rate <a class="el" href="window_guide.html#GLFW_REFRESH_RATE">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga714a5d569e8a274ea58fdfa020955339" name="ga714a5d569e8a274ea58fdfa020955339"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga714a5d569e8a274ea58fdfa020955339">&#9670;&nbsp;</a></span>GLFW_DOUBLEBUFFER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_DOUBLEBUFFER&#160;&#160;&#160;0x00021010</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Framebuffer double buffering <a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">hint</a>. </p>
+
+</div>
+</div>
+<a id="ga649309cf72a3d3de5b1348ca7936c95b" name="ga649309cf72a3d3de5b1348ca7936c95b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga649309cf72a3d3de5b1348ca7936c95b">&#9670;&nbsp;</a></span>GLFW_CLIENT_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CLIENT_API&#160;&#160;&#160;0x00022001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context client API <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CLIENT_API_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="gafe5e4922de1f9932d7e9849bb053b0c0" name="gafe5e4922de1f9932d7e9849bb053b0c0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafe5e4922de1f9932d7e9849bb053b0c0">&#9670;&nbsp;</a></span>GLFW_CONTEXT_VERSION_MAJOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_VERSION_MAJOR&#160;&#160;&#160;0x00022002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context client API major version <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MAJOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MAJOR_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga31aca791e4b538c4e4a771eb95cc2d07" name="ga31aca791e4b538c4e4a771eb95cc2d07"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga31aca791e4b538c4e4a771eb95cc2d07">&#9670;&nbsp;</a></span>GLFW_CONTEXT_VERSION_MINOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_VERSION_MINOR&#160;&#160;&#160;0x00022003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context client API minor version <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MINOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_VERSION_MINOR_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="gafb9475071aa77c6fb05ca5a5c8678a08" name="gafb9475071aa77c6fb05ca5a5c8678a08"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gafb9475071aa77c6fb05ca5a5c8678a08">&#9670;&nbsp;</a></span>GLFW_CONTEXT_REVISION</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_REVISION&#160;&#160;&#160;0x00022004</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context client API revision number <a class="el" href="window_guide.html#GLFW_CONTEXT_REVISION_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="gade3593916b4c507900aa2d6844810e00" name="gade3593916b4c507900aa2d6844810e00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gade3593916b4c507900aa2d6844810e00">&#9670;&nbsp;</a></span>GLFW_CONTEXT_ROBUSTNESS</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_ROBUSTNESS&#160;&#160;&#160;0x00022005</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context client API revision number <a class="el" href="window_guide.html#GLFW_CONTEXT_ROBUSTNESS_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_ROBUSTNESS_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga13d24b12465da8b28985f46c8557925b" name="ga13d24b12465da8b28985f46c8557925b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga13d24b12465da8b28985f46c8557925b">&#9670;&nbsp;</a></span>GLFW_OPENGL_FORWARD_COMPAT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_FORWARD_COMPAT&#160;&#160;&#160;0x00022006</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >OpenGL forward-compatibility <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga87ec2df0b915201e950ca42d5d0831e1" name="ga87ec2df0b915201e950ca42d5d0831e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga87ec2df0b915201e950ca42d5d0831e1">&#9670;&nbsp;</a></span>GLFW_OPENGL_DEBUG_CONTEXT</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_DEBUG_CONTEXT&#160;&#160;&#160;0x00022007</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Debug mode context <a class="el" href="window_guide.html#GLFW_OPENGL_DEBUG_CONTEXT_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_DEBUG_CONTEXT_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga44f3a6b4261fbe351e0b950b0f372e12" name="ga44f3a6b4261fbe351e0b950b0f372e12"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga44f3a6b4261fbe351e0b950b0f372e12">&#9670;&nbsp;</a></span>GLFW_OPENGL_PROFILE</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_OPENGL_PROFILE&#160;&#160;&#160;0x00022008</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >OpenGL profile <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga72b648a8378fe3310c7c7bbecc0f7be6" name="ga72b648a8378fe3310c7c7bbecc0f7be6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga72b648a8378fe3310c7c7bbecc0f7be6">&#9670;&nbsp;</a></span>GLFW_CONTEXT_RELEASE_BEHAVIOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_RELEASE_BEHAVIOR&#160;&#160;&#160;0x00022009</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context flush-on-release <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga5a52fdfd46d8249c211f923675728082" name="ga5a52fdfd46d8249c211f923675728082"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5a52fdfd46d8249c211f923675728082">&#9670;&nbsp;</a></span>GLFW_CONTEXT_NO_ERROR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_NO_ERROR&#160;&#160;&#160;0x0002200A</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context error suppression <a class="el" href="window_guide.html#GLFW_CONTEXT_NO_ERROR_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_NO_ERROR_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga5154cebfcd831c1cc63a4d5ac9bb4486" name="ga5154cebfcd831c1cc63a4d5ac9bb4486"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5154cebfcd831c1cc63a4d5ac9bb4486">&#9670;&nbsp;</a></span>GLFW_CONTEXT_CREATION_API</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_CONTEXT_CREATION_API&#160;&#160;&#160;0x0002200B</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Context creation API <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">hint</a> and <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_attrib">attribute</a>. </p>
+
+</div>
+</div>
+<a id="ga620bc4280c7eab81ac9f02204500ed47" name="ga620bc4280c7eab81ac9f02204500ed47"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga620bc4280c7eab81ac9f02204500ed47">&#9670;&nbsp;</a></span>GLFW_SCALE_TO_MONITOR</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_SCALE_TO_MONITOR&#160;&#160;&#160;0x0002200C</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gab6ef2d02eb55800d249ccf1af253c35e" name="gab6ef2d02eb55800d249ccf1af253c35e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab6ef2d02eb55800d249ccf1af253c35e">&#9670;&nbsp;</a></span>GLFW_COCOA_RETINA_FRAMEBUFFER</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_COCOA_RETINA_FRAMEBUFFER&#160;&#160;&#160;0x00023001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga70fa0fbc745de6aa824df79a580e84b5" name="ga70fa0fbc745de6aa824df79a580e84b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga70fa0fbc745de6aa824df79a580e84b5">&#9670;&nbsp;</a></span>GLFW_COCOA_FRAME_NAME</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_COCOA_FRAME_NAME&#160;&#160;&#160;0x00023002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga53c84ed2ddd94e15bbd44b1f6f7feafc" name="ga53c84ed2ddd94e15bbd44b1f6f7feafc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga53c84ed2ddd94e15bbd44b1f6f7feafc">&#9670;&nbsp;</a></span>GLFW_COCOA_GRAPHICS_SWITCHING</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_COCOA_GRAPHICS_SWITCHING&#160;&#160;&#160;0x00023003</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="gae5a9ea2fccccd92edbd343fc56461114" name="gae5a9ea2fccccd92edbd343fc56461114"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae5a9ea2fccccd92edbd343fc56461114">&#9670;&nbsp;</a></span>GLFW_X11_CLASS_NAME</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_X11_CLASS_NAME&#160;&#160;&#160;0x00024001</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<a id="ga494c3c0d911e4b860b946530a3e389e8" name="ga494c3c0d911e4b860b946530a3e389e8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga494c3c0d911e4b860b946530a3e389e8">&#9670;&nbsp;</a></span>GLFW_X11_INSTANCE_NAME</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define GLFW_X11_INSTANCE_NAME&#160;&#160;&#160;0x00024002</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+
+</div>
+</div>
+<h2 class="groupheader">Typedef Documentation</h2>
+<a id="ga3c96d80d363e67d13a41b5d1821f3242" name="ga3c96d80d363e67d13a41b5d1821f3242"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3c96d80d363e67d13a41b5d1821f3242">&#9670;&nbsp;</a></span>GLFWwindow</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >Opaque window object.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_object">Window objects</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gabe287973a21a8f927cde4db06b8dcbe9" name="gabe287973a21a8f927cde4db06b8dcbe9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabe287973a21a8f927cde4db06b8dcbe9">&#9670;&nbsp;</a></span>GLFWwindowposfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowposfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int xpos, int ypos)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window position callbacks. A window position callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was moved. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The new x-coordinate, in screen coordinates, of the upper-left corner of the content area of the window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The new y-coordinate, in screen coordinates, of the upper-left corner of the content area of the window.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaec0282944bb810f6f3163ec02da90350" name="gaec0282944bb810f6f3163ec02da90350"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaec0282944bb810f6f3163ec02da90350">&#9670;&nbsp;</a></span>GLFWwindowsizefun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowsizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window size callbacks. A window size callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was resized. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The new width, in screen coordinates, of the window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The new height, in screen coordinates, of the window.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gabf859b936d80961b7d39013a9694cc3e" name="gabf859b936d80961b7d39013a9694cc3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabf859b936d80961b7d39013a9694cc3e">&#9670;&nbsp;</a></span>GLFWwindowclosefun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowclosefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window close callbacks. A window close callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that the user attempted to close.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga431663a1427d2eb3a273bc398b6737b5" name="ga431663a1427d2eb3a273bc398b6737b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga431663a1427d2eb3a273bc398b6737b5">&#9670;&nbsp;</a></span>GLFWwindowrefreshfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowrefreshfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window content refresh callbacks. A window content refresh callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose content needs to be refreshed.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_refresh">Window damage and refresh</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gabc58c47e9d93f6eb1862d615c3680f46" name="gabc58c47e9d93f6eb1862d615c3680f46"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gabc58c47e9d93f6eb1862d615c3680f46">&#9670;&nbsp;</a></span>GLFWwindowfocusfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowfocusfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int focused)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window focus callbacks. A window focus callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that gained or lost input focus. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">focused</td><td><code>GLFW_TRUE</code> if the window was given input focus, or <code>GLFW_FALSE</code> if it lost it.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga35c658cccba236f26e7adee0e25f6a4f" name="ga35c658cccba236f26e7adee0e25f6a4f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga35c658cccba236f26e7adee0e25f6a4f">&#9670;&nbsp;</a></span>GLFWwindowiconifyfun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowiconifyfun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int iconified)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window iconify callbacks. A window iconify callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was iconified or restored. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">iconified</td><td><code>GLFW_TRUE</code> if the window was iconified, or <code>GLFW_FALSE</code> if it was restored.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga3017196fdaec33ac3e095765176c2a90" name="ga3017196fdaec33ac3e095765176c2a90"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3017196fdaec33ac3e095765176c2a90">&#9670;&nbsp;</a></span>GLFWwindowmaximizefun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowmaximizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int maximized)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window maximize callbacks. A window maximize callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window that was maximized or restored. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maximized</td><td><code>GLFW_TRUE</code> if the window was maximized, or <code>GLFW_FALSE</code> if it was restored.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_maximize">Window maximization</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93" title="Sets the maximize callback for the specified window.">glfwSetWindowMaximizeCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gae18026e294dde685ed2e5f759533144d" name="gae18026e294dde685ed2e5f759533144d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae18026e294dde685ed2e5f759533144d">&#9670;&nbsp;</a></span>GLFWframebuffersizefun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWframebuffersizefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, int width, int height)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for framebuffer size callbacks. A framebuffer size callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose framebuffer was resized. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The new width, in pixels, of the framebuffer. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The new height, in pixels, of the framebuffer.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga77f288a2d04bb3c77c7d9615d08cf70e" name="ga77f288a2d04bb3c77c7d9615d08cf70e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga77f288a2d04bb3c77c7d9615d08cf70e">&#9670;&nbsp;</a></span>GLFWwindowcontentscalefun</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef void(* GLFWwindowcontentscalefun) (<a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *window, float xscale, float yscale)</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This is the function pointer type for window content scale callbacks. A window content scale callback function has the following signature: </p><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
+</div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose content scale changed. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xscale</td><td>The new x-axis content scale of the window. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">yscale</td><td>The new y-axis content scale of the window.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga7cc0a09de172fa7250872046f8c4d2ca" name="ga7cc0a09de172fa7250872046f8c4d2ca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7cc0a09de172fa7250872046f8c4d2ca">&#9670;&nbsp;</a></span>GLFWimage</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">typedef struct <a class="el" href="structGLFWimage.html">GLFWimage</a> <a class="el" href="structGLFWimage.html">GLFWimage</a></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This describes a single 2D image. See the documentation for each related function what the expected pixel format is.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_custom">Custom cursor creation</a> </dd>
+<dd>
+<a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Removed format and bytes-per-pixel members. </dd></dl>
+
+</div>
+</div>
+<h2 class="groupheader">Function Documentation</h2>
+<a id="gaa77c4898dfb83344a6b4f76aa16b9a4a" name="gaa77c4898dfb83344a6b4f76aa16b9a4a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaa77c4898dfb83344a6b4f76aa16b9a4a">&#9670;&nbsp;</a></span>glfwDefaultWindowHints()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwDefaultWindowHints </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function resets all window hints to their <a class="el" href="window_guide.html#window_hints_values">default values</a>.</p>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga7d9c8c62384b1e2821c4dc48952d2033" name="ga7d9c8c62384b1e2821c4dc48952d2033"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga7d9c8c62384b1e2821c4dc48952d2033">&#9670;&nbsp;</a></span>glfwWindowHint()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwWindowHint </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets hints for the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. The hints, once set, retain their values until changed by a call to this function or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated.</p>
+<p >Only integer value hints can be set with this function. String value hints are set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
+<p >This function does not check whether the specified hint values are valid. If you set hints to invalid values this will instead be reported by the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
+<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="window_guide.html#window_hints">window hint</a> to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the window hint.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwOpenWindowHint</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga8cb2782861c9d997bcf2dea97f363e5f" name="ga8cb2782861c9d997bcf2dea97f363e5f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga8cb2782861c9d997bcf2dea97f363e5f">&#9670;&nbsp;</a></span>glfwWindowHintString()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwWindowHintString </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>hint</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets hints for the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. The hints, once set, retain their values until changed by a call to this function or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated.</p>
+<p >Only string type hints can be set with this function. Integer value hints are set with <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>.</p>
+<p >This function does not check whether the specified hint values are valid. If you set hints to invalid values this will instead be reported by the next call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
+<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">hint</td><td>The <a class="el" href="window_guide.html#window_hints">window hint</a> to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value of the window hint.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified string is copied before this function returns.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hints">Window creation hints</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga3555a418df92ad53f917597fe2f64aeb" name="ga3555a418df92ad53f917597fe2f64aeb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3555a418df92ad53f917597fe2f64aeb">&#9670;&nbsp;</a></span>glfwCreateWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> * glfwCreateWindow </td>
+ <td>(</td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>title</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>share</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="window_guide.html#window_hints">window hints</a>.</p>
+<p >Successful creation does not change which context is current. Before you can use the newly created context, you need to <a class="el" href="context_guide.html#context_current">make it current</a>. For information about the <code>share</code> parameter, see <a class="el" href="context_guide.html#context_sharing">Context object sharing</a>.</p>
+<p >The created window, framebuffer and context may differ from what you requested, as not all parameters and hints are <a class="el" href="window_guide.html#window_hints_hard">hard constraints</a>. This includes the size of the window, especially for full screen windows. To query the actual attributes of the created window, framebuffer and context, see <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>, <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> and <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>.</p>
+<p >To create a full screen window, you need to specify the monitor the window will cover. If no monitor is specified, the window will be windowed mode. Unless you have a way for the user to choose a specific monitor, it is recommended that you pick the primary monitor. For more information on how to query connected monitors, see <a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a>.</p>
+<p >For full screen windows, the specified size becomes the resolution of the window's <em>desired video mode</em>. As long as a full screen window is not iconified, the supported video mode most closely matching the desired video mode is set for the specified monitor. For more information about full screen windows, including the creation of so called <em>windowed full screen</em> or <em>borderless full screen</em> windows, see <a class="el" href="window_guide.html#window_windowed_full_screen">"Windowed full screen" windows</a>.</p>
+<p >Once you have created the window, you can switch it between windowed and full screen mode with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. This will not affect its OpenGL or OpenGL ES context.</p>
+<p >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 <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint, set its <a class="el" href="window_guide.html#window_pos">position</a> and then <a class="el" href="window_guide.html#window_hide">show</a> it.</p>
+<p >As long as at least one full screen window is not iconified, the screensaver is prohibited from starting.</p>
+<p >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 <a class="el" href="window_guide.html#window_size">size</a> after creation.</p>
+<p >The <a class="el" href="window_guide.html#buffer_swap">swap interval</a> is not set during window creation and the initial value may vary depending on driver settings and defaults.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired width, in screen coordinates, of the window. This must be greater than zero. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the window. This must be greater than zero. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">title</td><td>The initial, UTF-8 encoded window title. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The monitor to use for full screen mode, or <code>NULL</code> for windowed mode. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">share</td><td>The window whose context to share resources with, or <code>NULL</code> to not share resources. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The handle of the created window, or <code>NULL</code> if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a>, <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a>, <a class="el" href="group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462">GLFW_VERSION_UNAVAILABLE</a>, <a class="el" href="group__errors.html#ga196e125ef261d94184e2b55c05762f14">GLFW_FORMAT_UNAVAILABLE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Windows:</b> Window creation will fail if the Microsoft GDI software OpenGL implementation is the only one available.</dd>
+<dd>
+<b>Windows:</b> If the executable has an icon resource named <code>GLFW_ICON,</code> it will be set as the initial icon for the window. If no such icon is present, the <code>IDI_APPLICATION</code> icon will be used instead. To set a different icon, see <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</dd>
+<dd>
+<b>Windows:</b> The context to share resources with must not be current on any other thread.</dd>
+<dd>
+<b>macOS:</b> The OS only supports forward-compatible core profile contexts for OpenGL versions 3.2 and later. Before creating an OpenGL context of version 3.2 or later you must set the <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a> hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.</dd>
+<dd>
+<b>macOS:</b> 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. For more information on bundles, see the <a href="https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/">Bundle Programming Guide</a> in the Mac Developer Library.</dd>
+<dd>
+<b>macOS:</b> The first time a window is created the menu bar is created. If GLFW finds a <code>MainMenu.nib</code> it is loaded and assumed to contain a menu bar. Otherwise a minimal menu bar is created manually with common commands like Hide, Quit and About. The About entry opens a minimal about dialog with information from the application's bundle. Menu bar creation can be disabled entirely with the <a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> init hint.</dd>
+<dd>
+<b>macOS:</b> On OS X 10.10 and later the window frame will not be rendered at full resolution on Retina displays unless the <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a> hint is <code>GLFW_TRUE</code> and the <code>NSHighResolutionCapable</code> key is enabled in the application bundle's <code>Info.plist</code>. For more information, see <a href="https://developer.apple.com/library/mac/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html">High Resolution Guidelines for OS X</a> in the Mac Developer Library. The GLFW test and example programs use a custom <code>Info.plist</code> template for this, which can be found as <code>CMake/MacOSXBundleInfo.plist.in</code> in the source tree.</dd>
+<dd>
+<b>macOS:</b> When activating frame autosaving with <a class="el" href="window_guide.html#GLFW_COCOA_FRAME_NAME_hint">GLFW_COCOA_FRAME_NAME</a>, the specified window size and position may be overridden by previously saved values.</dd>
+<dd>
+<b>X11:</b> Some window managers will not respect the placement of initially hidden windows.</dd>
+<dd>
+<b>X11:</b> Due to the asynchronous nature of X11, it may take a moment for a window to reach its requested state. This means you may not be able to query the final size, position or other attributes directly after window creation.</dd>
+<dd>
+<b>X11:</b> The class part of the <code>WM_CLASS</code> window property will by default be set to the window title passed to this function. The instance part will use the contents of the <code>RESOURCE_NAME</code> environment variable, if present and not empty, or fall back to the window title. Set the <a class="el" href="window_guide.html#GLFW_X11_CLASS_NAME_hint">GLFW_X11_CLASS_NAME</a> and <a class="el" href="window_guide.html#GLFW_X11_INSTANCE_NAME_hint">GLFW_X11_INSTANCE_NAME</a> window hints to override this.</dd>
+<dd>
+<b>Wayland:</b> Compositors should implement the xdg-decoration protocol for GLFW to decorate the window properly. If this protocol isn't supported, or if the compositor prefers client-side decorations, a very simple fallback frame will be drawn using the wp_viewporter protocol. A compositor can still emit close, maximize or fullscreen events, using for instance a keybind mechanism. If neither of these protocols is supported, the window won't be decorated.</dd>
+<dd>
+<b>Wayland:</b> A full screen window will not attempt to change the mode, no matter what the requested size or refresh rate.</dd>
+<dd>
+<b>Wayland:</b> Screensaver inhibition requires the idle-inhibit protocol to be implemented in the user's compositor.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_creation">Window creation</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwOpenWindow</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gacdf43e51376051d2c091662e9fe3d7b2" name="gacdf43e51376051d2c091662e9fe3d7b2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacdf43e51376051d2c091662e9fe3d7b2">&#9670;&nbsp;</a></span>glfwDestroyWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwDestroyWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function destroys the specified window and its context. On calling this function, no further callbacks will be called for that window.</p>
+<p >If the context of the specified window is current on the main thread, it is detached before being destroyed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to destroy.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section note"><dt>Note</dt><dd>The context of the specified window must not be current on any other thread when this function is called.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_creation">Window creation</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwCloseWindow</code>. </dd></dl>
+
+</div>
+</div>
+<a id="ga24e02fbfefbb81fc45320989f8140ab5" name="ga24e02fbfefbb81fc45320989f8140ab5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga24e02fbfefbb81fc45320989f8140ab5">&#9670;&nbsp;</a></span>glfwWindowShouldClose()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwWindowShouldClose </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the value of the close flag of the specified window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The value of the close flag.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga49c449dde2a6f87d996f4daaa09d6708" name="ga49c449dde2a6f87d996f4daaa09d6708"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga49c449dde2a6f87d996f4daaa09d6708">&#9670;&nbsp;</a></span>glfwSetWindowShouldClose()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowShouldClose </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the value of the close flag of the specified window. This can be used to override the user's attempt to close the window, or to signal that it should be closed.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose flag to change. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The new value.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga5d877f09e968cef7a360b513306f17ff" name="ga5d877f09e968cef7a360b513306f17ff"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga5d877f09e968cef7a360b513306f17ff">&#9670;&nbsp;</a></span>glfwSetWindowTitle()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowTitle </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const char *&#160;</td>
+ <td class="paramname"><em>title</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the window title, encoded as UTF-8, of the specified window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose title to change. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">title</td><td>The UTF-8 encoded window title.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> The window title will not be updated until the next time you process events.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_title">Window title</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gadd7ccd39fe7a7d1f0904666ae5932dc5" name="gadd7ccd39fe7a7d1f0904666ae5932dc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gadd7ccd39fe7a7d1f0904666ae5932dc5">&#9670;&nbsp;</a></span>glfwSetWindowIcon()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowIcon </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>count</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">const <a class="el" href="structGLFWimage.html">GLFWimage</a> *&#160;</td>
+ <td class="paramname"><em>images</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the icon of the specified window. If passed an array of candidate images, those of or closest to the sizes desired by the system are selected. If no images are specified, the window reverts to its default icon.</p>
+<p >The pixels are 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. They are arranged canonically as packed sequential rows, starting from the top-left corner.</p>
+<p >The desired image sizes varies depending on platform and system settings. The selected images will be rescaled as needed. Good sizes include 16x16, 32x32 and 48x48.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose icon to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">count</td><td>The number of images in the specified array, or zero to revert to the default window icon. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">images</td><td>The images to create the icon from. This is ignored if count is zero.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Pointer lifetime</dt><dd>The specified image data is copied before this function returns.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> The GLFW window has no icon, as it is not a document window, so this function does nothing. The dock icon will be the same as the application bundle's icon. For more information on bundles, see the <a href="https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/">Bundle Programming Guide</a> in the Mac Developer Library.</dd>
+<dd>
+<b>Wayland:</b> There is no existing protocol to change an icon, the window will thus inherit the one defined in the application's desktop file. This function always emits <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga73cb526c000876fd8ddf571570fdb634" name="ga73cb526c000876fd8ddf571570fdb634"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga73cb526c000876fd8ddf571570fdb634">&#9670;&nbsp;</a></span>glfwGetWindowPos()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetWindowPos </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>ypos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the position, in screen coordinates, of the upper-left corner of the content area of the specified window.</p>
+<p >Any or all of the position arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> position arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xpos</td><td>Where to store the x-coordinate of the upper-left corner of the content area, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">ypos</td><td>Where to store the y-coordinate of the upper-left corner of the content area, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> There is no way for an application to retrieve the global position of its windows, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga1abb6d690e8c88e0c8cd1751356dbca8" name="ga1abb6d690e8c88e0c8cd1751356dbca8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1abb6d690e8c88e0c8cd1751356dbca8">&#9670;&nbsp;</a></span>glfwSetWindowPos()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowPos </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ypos</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the position, in screen coordinates, of the upper-left corner of the content area of the specified windowed mode window. If the window is a full screen window, this function does nothing.</p>
+<p ><b>Do not use this function</b> to move an already visible window unless you have very good reasons for doing so, as it will confuse and annoy the user.</p>
+<p >The window manager may put limits on what positions are allowed. GLFW cannot and should not override these limits.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The x-coordinate of the upper-left corner of the content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The y-coordinate of the upper-left corner of the content area.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> There is no way for an application to set the global position of its windows, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gaeea7cbc03373a41fb51cfbf9f2a5d4c6" name="gaeea7cbc03373a41fb51cfbf9f2a5d4c6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">&#9670;&nbsp;</a></span>glfwGetWindowSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetWindowSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the size, in screen coordinates, of the content area of the specified window. If you wish to retrieve the size of the framebuffer of the window in pixels, see <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>.</p>
+<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose size to retrieve. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width, in screen coordinates, of the content area, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height, in screen coordinates, of the content area, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="gac314fa6cec7d2d307be9963e2709cc90" name="gac314fa6cec7d2d307be9963e2709cc90"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac314fa6cec7d2d307be9963e2709cc90">&#9670;&nbsp;</a></span>glfwSetWindowSizeLimits()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowSizeLimits </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>minwidth</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>minheight</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxwidth</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>maxheight</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the size limits of the content area of the specified window. If the window is full screen, the size limits only take effect once it is made windowed. If the window is not resizable, this function does nothing.</p>
+<p >The size limits are applied immediately to a windowed mode window and may cause it to be resized.</p>
+<p >The maximum dimensions must be greater than or equal to the minimum dimensions and all must be greater than or equal to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set limits for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">minwidth</td><td>The minimum width, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">minheight</td><td>The minimum height, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxwidth</td><td>The maximum width, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">maxheight</td><td>The maximum height, in screen coordinates, of the content area, or <code>GLFW_DONT_CARE</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>If you set size limits and an aspect ratio that conflict, the results are undefined.</dd>
+<dd>
+<b>Wayland:</b> The size limits will not be applied until the window is actually resized, either by the user or by the compositor.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_sizelimits">Window size limits</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga72ac8cb1ee2e312a878b55153d81b937" name="ga72ac8cb1ee2e312a878b55153d81b937"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga72ac8cb1ee2e312a878b55153d81b937">&#9670;&nbsp;</a></span>glfwSetWindowAspectRatio()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowAspectRatio </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>numer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>denom</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the required aspect ratio of the content area of the specified window. If the window is full screen, the aspect ratio only takes effect once it is made windowed. If the window is not resizable, this function does nothing.</p>
+<p >The aspect ratio is specified as a numerator and a denominator and both values must be greater than zero. For example, the common 16:9 aspect ratio is specified as 16 and 9, respectively.</p>
+<p >If the numerator and denominator is set to <code>GLFW_DONT_CARE</code> then the aspect ratio limit is disabled.</p>
+<p >The aspect ratio is applied immediately to a windowed mode window and may cause it to be resized.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set limits for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">numer</td><td>The numerator of the desired aspect ratio, or <code>GLFW_DONT_CARE</code>. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">denom</td><td>The denominator of the desired aspect ratio, or <code>GLFW_DONT_CARE</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>If you set size limits and an aspect ratio that conflict, the results are undefined.</dd>
+<dd>
+<b>Wayland:</b> The aspect ratio will not be applied until the window is actually resized, either by the user or by the compositor.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_sizelimits">Window size limits</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga371911f12c74c504dd8d47d832d095cb" name="ga371911f12c74c504dd8d47d832d095cb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga371911f12c74c504dd8d47d832d095cb">&#9670;&nbsp;</a></span>glfwSetWindowSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the size, in screen coordinates, of the content area of the specified window.</p>
+<p >For full screen windows, this function updates the resolution of its desired video mode and switches to the video mode closest to it, without affecting the window's context. As the context is unaffected, the bit depths of the framebuffer remain unchanged.</p>
+<p >If you wish to update the refresh rate of the desired video mode in addition to its resolution, see <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>.</p>
+<p >The window manager may put limits on what sizes are allowed. GLFW cannot and should not override these limits.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to resize. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired width, in screen coordinates, of the window content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the window content area.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> A full screen window will not attempt to change the mode, no matter what the requested size.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga0e2637a4161afb283f5300c7f94785c9" name="ga0e2637a4161afb283f5300c7f94785c9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga0e2637a4161afb283f5300c7f94785c9">&#9670;&nbsp;</a></span>glfwGetFramebufferSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetFramebufferSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>height</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the size, in pixels, of the framebuffer of the specified window. If you wish to retrieve the size of the window in screen coordinates, see <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>.</p>
+<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose framebuffer to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">width</td><td>Where to store the width, in pixels, of the framebuffer, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">height</td><td>Where to store the height, in pixels, of the framebuffer, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga1a9fd382058c53101b21cf211898f1f1" name="ga1a9fd382058c53101b21cf211898f1f1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1a9fd382058c53101b21cf211898f1f1">&#9670;&nbsp;</a></span>glfwGetWindowFrameSize()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetWindowFrameSize </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>left</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>top</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>right</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&#160;</td>
+ <td class="paramname"><em>bottom</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="window_guide.html#window_hints_wnd">window-related hints</a> used to create it.</p>
+<p >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.</p>
+<p >Any or all of the size arguments may be <code>NULL</code>. If an error occurs, all non-<code>NULL</code> size arguments will be set to zero.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose frame size to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">left</td><td>Where to store the size, in screen coordinates, of the left edge of the window frame, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">top</td><td>Where to store the size, in screen coordinates, of the top edge of the window frame, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">right</td><td>Where to store the size, in screen coordinates, of the right edge of the window frame, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">bottom</td><td>Where to store the size, in screen coordinates, of the bottom edge of the window frame, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="gaf5d31de9c19c4f994facea64d2b3106c" name="gaf5d31de9c19c4f994facea64d2b3106c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf5d31de9c19c4f994facea64d2b3106c">&#9670;&nbsp;</a></span>glfwGetWindowContentScale()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwGetWindowContentScale </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>xscale</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float *&#160;</td>
+ <td class="paramname"><em>yscale</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function retrieves the content scale for the specified window. The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
+<p >On systems where each monitors can have its own content scale, the window content scale will depend on which monitor the system considers the window to be on.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">xscale</td><td>Where to store the x-axis content scale, or <code>NULL</code>. </td></tr>
+ <tr><td class="paramdir">[out]</td><td class="paramname">yscale</td><td>Where to store the y-axis content scale, or <code>NULL</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gad09f0bd7a6307c4533b7061828480a84" name="gad09f0bd7a6307c4533b7061828480a84"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad09f0bd7a6307c4533b7061828480a84">&#9670;&nbsp;</a></span>glfwGetWindowOpacity()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float glfwGetWindowOpacity </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the opacity of the window, including any decorations.</p>
+<p >The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque. If the system does not support whole window transparency, this function always returns one.</p>
+<p >The initial opacity value for newly created windows is one.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The opacity value of the specified window.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_transparency">Window transparency</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gac31caeb3d1088831b13d2c8a156802e9" name="gac31caeb3d1088831b13d2c8a156802e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac31caeb3d1088831b13d2c8a156802e9">&#9670;&nbsp;</a></span>glfwSetWindowOpacity()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowOpacity </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">float&#160;</td>
+ <td class="paramname"><em>opacity</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the opacity of the window, including any decorations.</p>
+<p >The opacity (or alpha) value is a positive finite number between zero and one, where zero is fully transparent and one is fully opaque.</p>
+<p >The initial opacity value for newly created windows is one.</p>
+<p >A window created with framebuffer transparency may not use whole window transparency. The results of doing this are undefined.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the opacity for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">opacity</td><td>The desired opacity of the specified window.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_transparency">Window transparency</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga1bb559c0ebaad63c5c05ad2a066779c4" name="ga1bb559c0ebaad63c5c05ad2a066779c4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1bb559c0ebaad63c5c05ad2a066779c4">&#9670;&nbsp;</a></span>glfwIconifyWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwIconifyWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function iconifies (minimizes) the specified window if it was previously restored. If the window is already iconified, this function does nothing.</p>
+<p >If the specified window is a full screen window, GLFW restores the original video mode of the monitor. The window's desired video mode is set again when the window is restored.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to iconify.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga52527a5904b47d802b6b4bb519cdebc7" name="ga52527a5904b47d802b6b4bb519cdebc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga52527a5904b47d802b6b4bb519cdebc7">&#9670;&nbsp;</a></span>glfwRestoreWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwRestoreWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function restores the specified window if it was previously iconified (minimized) or maximized. If the window is already restored, this function does nothing.</p>
+<p >If the specified window is an iconified full screen window, its desired video mode is set again for its monitor when the window is restored.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to restore.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+<a id="ga3f541387449d911274324ae7f17ec56b" name="ga3f541387449d911274324ae7f17ec56b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3f541387449d911274324ae7f17ec56b">&#9670;&nbsp;</a></span>glfwMaximizeWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwMaximizeWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function maximizes the specified window if it was previously not maximized. If the window is already maximized, this function does nothing.</p>
+<p >If the specified window is a full screen window, this function does nothing.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to maximize.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread Safety</dt><dd>This function may only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in GLFW 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga61be47917b72536a148300f46494fc66" name="ga61be47917b72536a148300f46494fc66"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga61be47917b72536a148300f46494fc66">&#9670;&nbsp;</a></span>glfwShowWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwShowWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >By default, windowed mode windows are focused when shown Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint to change this behavior for all newly created windows, or change the behavior for an existing window with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to make visible.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> Because Wayland wants every frame of the desktop to be complete, this function does not immediately make the window visible. Instead it will become visible the next time the window framebuffer is updated after this call.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hide">Window visibility</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga49401f82a1ba5f15db5590728314d47c" name="ga49401f82a1ba5f15db5590728314d47c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga49401f82a1ba5f15db5590728314d47c">&#9670;&nbsp;</a></span>glfwHideWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwHideWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to hide.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_hide">Window visibility</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga873780357abd3f3a081d71a40aae45a1" name="ga873780357abd3f3a081d71a40aae45a1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga873780357abd3f3a081d71a40aae45a1">&#9670;&nbsp;</a></span>glfwFocusWindow()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwFocusWindow </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function brings the specified window to front and sets input focus. The window should already be visible and not iconified.</p>
+<p >By default, both windowed and full screen mode windows are focused when initially created. Set the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> to disable this behavior.</p>
+<p >Also by default, windowed mode windows are focused when shown with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>. Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> to disable this behavior.</p>
+<p ><b>Do not use this function</b> to steal focus from other applications unless you are certain that is what the user wants. Focus stealing can be extremely disruptive.</p>
+<p >For a less disruptive way of getting the user's attention, see <a class="el" href="window_guide.html#window_attention">attention requests</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to give input focus.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> It is not possible for an application to bring its windows to front, this function will always emit <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a> </dd>
+<dd>
+<a class="el" href="window_guide.html#window_attention">Window attention request</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="ga2f8d59323fc4692c1d54ba08c863a703" name="ga2f8d59323fc4692c1d54ba08c863a703"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga2f8d59323fc4692c1d54ba08c863a703">&#9670;&nbsp;</a></span>glfwRequestWindowAttention()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwRequestWindowAttention </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function requests user attention to the specified window. On platforms where this is not supported, attention is requested to the application as a whole.</p>
+<p >Once the user has given attention, usually by focusing the window or application, the system will end the request automatically.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to request attention to.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> Attention is requested to the application as a whole, not the specific window.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attention">Window attention request</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga4d766499ac02c60f02221a9dfab87299" name="ga4d766499ac02c60f02221a9dfab87299"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga4d766499ac02c60f02221a9dfab87299">&#9670;&nbsp;</a></span>glfwGetWindowMonitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> * glfwGetWindowMonitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the handle of the monitor that the specified window is in full screen on.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The monitor, or <code>NULL</code> if the window is in windowed mode or an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_monitor">Window monitor</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga81c76c418af80a1cce7055bccb0ae0a7" name="ga81c76c418af80a1cce7055bccb0ae0a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga81c76c418af80a1cce7055bccb0ae0a7">&#9670;&nbsp;</a></span>glfwSetWindowMonitor()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowMonitor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a> *&#160;</td>
+ <td class="paramname"><em>monitor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>xpos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>ypos</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>width</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>height</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>refreshRate</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the monitor that the window uses for full screen mode or, if the monitor is <code>NULL</code>, makes it windowed mode.</p>
+<p >When setting a monitor, this function updates the width, height and refresh rate of the desired video mode and switches to the video mode closest to it. The window position is ignored when setting a monitor.</p>
+<p >When the monitor is <code>NULL</code>, the position, width and height are used to place the window content area. The refresh rate is ignored when no monitor is specified.</p>
+<p >If you only wish to update the resolution of a full screen window or the size of a windowed mode window, see <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>.</p>
+<p >When a window transitions from full screen to windowed mode, this function restores any previous window settings such as whether it is decorated, floating, resizable, has size or aspect ratio limits, etc.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose monitor, size or video mode to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">monitor</td><td>The desired monitor, or <code>NULL</code> to set windowed mode. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">xpos</td><td>The desired x-coordinate of the upper-left corner of the content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">ypos</td><td>The desired y-coordinate of the upper-left corner of the content area. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">width</td><td>The desired with, in screen coordinates, of the content area or video mode. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">height</td><td>The desired height, in screen coordinates, of the content area or video mode. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">refreshRate</td><td>The desired refresh rate, in Hz, of the video mode, or <code>GLFW_DONT_CARE</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>The OpenGL or OpenGL ES context will not be destroyed or otherwise affected by any resizing or mode switching, although you may need to update your viewport if the framebuffer size has changed.</dd>
+<dd>
+<b>Wayland:</b> The desired window position is ignored, as there is no way for an application to set this property.</dd>
+<dd>
+<b>Wayland:</b> Setting the window to full screen will not attempt to change the mode, no matter what the requested size or refresh rate.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_monitor">Window monitor</a> </dd>
+<dd>
+<a class="el" href="window_guide.html#window_full_screen">Full screen windows</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gacccb29947ea4b16860ebef42c2cb9337" name="gacccb29947ea4b16860ebef42c2cb9337"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacccb29947ea4b16860ebef42c2cb9337">&#9670;&nbsp;</a></span>glfwGetWindowAttrib()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int glfwGetWindowAttrib </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>attrib</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the value of an attribute of the specified window or its OpenGL or OpenGL ES context.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to query. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">attrib</td><td>The <a class="el" href="window_guide.html#window_attribs">window attribute</a> whose value to return. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The value of the attribute, or zero if an <a class="el" href="intro_guide.html#error_handling">error</a> occurred.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>Framebuffer related hints are not window attributes. See <a class="el" href="window_guide.html#window_attribs_fb">Framebuffer related attributes</a> for more information.</dd>
+<dd>
+Zero is a valid value for many window and context related attributes so you cannot use a return value of zero as an indication of errors. However, this function should not fail as long as it is passed valid arguments and the library has been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd>
+<dd>
+<b>Wayland:</b> The Wayland protocol provides no way to check whether a window is iconfied, so <a class="el" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a> always returns <code>GLFW_FALSE</code>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attribs">Window attributes</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. Replaces <code>glfwGetWindowParam</code> and <code>glfwGetGLVersion</code>. </dd></dl>
+
+</div>
+</div>
+<a id="gace2afda29b4116ec012e410a6819033e" name="gace2afda29b4116ec012e410a6819033e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gace2afda29b4116ec012e410a6819033e">&#9670;&nbsp;</a></span>glfwSetWindowAttrib()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowAttrib </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>attrib</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&#160;</td>
+ <td class="paramname"><em>value</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the value of an attribute of the specified window.</p>
+<p >The supported attributes are <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a>.</p>
+<p >Some of these attributes are ignored for full screen windows. The new value will take effect if the window is later made windowed.</p>
+<p >Some of these attributes are ignored for windowed mode windows. The new value will take effect if the window is later made full screen.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window to set the attribute for. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">attrib</td><td>A supported window attribute. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code>.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#ga76f6bb9c4eea73db675f096b404593ce">GLFW_INVALID_ENUM</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd>Calling <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> will always return the latest value, even if that value is ignored by the current mode of the window.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_attribs">Window attributes</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga3d2fc6026e690ab31a13f78bc9fd3651" name="ga3d2fc6026e690ab31a13f78bc9fd3651"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga3d2fc6026e690ab31a13f78bc9fd3651">&#9670;&nbsp;</a></span>glfwSetWindowUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSetWindowUserPointer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&#160;</td>
+ <td class="paramname"><em>pointer</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the user-defined pointer of the specified window. The current value is retained until the window is destroyed. The initial value is <code>NULL</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose pointer to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">pointer</td><td>The new value.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_userptr">User pointer</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gae77a4add0d2023ca21ff1443ced01653" name="gae77a4add0d2023ca21ff1443ced01653"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gae77a4add0d2023ca21ff1443ced01653">&#9670;&nbsp;</a></span>glfwGetWindowUserPointer()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void * glfwGetWindowUserPointer </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function returns the current value of the user-defined pointer of the specified window. The initial value is <code>NULL</code>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose pointer to return.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread. Access is not synchronized.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_userptr">User pointer</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga08bdfbba88934f9c4f92fd757979ac74" name="ga08bdfbba88934f9c4f92fd757979ac74"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga08bdfbba88934f9c4f92fd757979ac74">&#9670;&nbsp;</a></span>glfwSetWindowPosCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a> glfwSetWindowPosCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">GLFWwindowposfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the position callback of the specified window, which is called when the window is moved. The callback is provided with the position, in screen coordinates, of the upper-left corner of the content area of the window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabe287973a21a8f927cde4db06b8dcbe9">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> This callback will never be called, as there is no way for an application to know its global position.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_pos">Window position</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gad91b8b047a0c4c6033c38853864c34f8" name="gad91b8b047a0c4c6033c38853864c34f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gad91b8b047a0c4c6033c38853864c34f8">&#9670;&nbsp;</a></span>glfwSetWindowSizeCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a> glfwSetWindowSizeCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">GLFWwindowsizefun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the size callback of the specified window, which is called when the window is resized. The callback is provided with the size, in screen coordinates, of the content area of the window.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gaec0282944bb810f6f3163ec02da90350">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="gada646d775a7776a95ac000cfc1885331" name="gada646d775a7776a95ac000cfc1885331"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gada646d775a7776a95ac000cfc1885331">&#9670;&nbsp;</a></span>glfwSetWindowCloseCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a> glfwSetWindowCloseCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">GLFWwindowclosefun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the close callback of the specified window, which is called when the user attempts to close the window, for example by clicking the close widget in the title bar.</p>
+<p >The close flag is set before this callback is called, but you can modify it at any time with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>.</p>
+<p >The close callback is not triggered by <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabf859b936d80961b7d39013a9694cc3e">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>macOS:</b> Selecting Quit from the application menu will trigger the close callback for all windows.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_close">Window closing and close flag</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="ga1c5c7eb889c33c7f4d10dd35b327654e" name="ga1c5c7eb889c33c7f4d10dd35b327654e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga1c5c7eb889c33c7f4d10dd35b327654e">&#9670;&nbsp;</a></span>glfwSetWindowRefreshCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a> glfwSetWindowRefreshCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">GLFWwindowrefreshfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the refresh callback of the specified window, which is called when the content area of the window needs to be redrawn, for example if the window has been exposed after having been covered by another window.</p>
+<p >On compositing window systems such as Aero, Compiz, Aqua or Wayland, where the window contents are saved off-screen, this callback may be called only very infrequently or never at all.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga431663a1427d2eb3a273bc398b6737b5">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_refresh">Window damage and refresh</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. <b>GLFW 3:</b> Added window handle parameter and return value. </dd></dl>
+
+</div>
+</div>
+<a id="gac2d83c4a10f071baf841f6730528e66c" name="gac2d83c4a10f071baf841f6730528e66c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac2d83c4a10f071baf841f6730528e66c">&#9670;&nbsp;</a></span>glfwSetWindowFocusCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a> glfwSetWindowFocusCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">GLFWwindowfocusfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the focus callback of the specified window, which is called when the window gains or loses input focus.</p>
+<p >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 <a class="el" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a> and <a class="el" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gabc58c47e9d93f6eb1862d615c3680f46">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_focus">Window input focus</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gac793e9efd255567b5fb8b445052cfd3e" name="gac793e9efd255567b5fb8b445052cfd3e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gac793e9efd255567b5fb8b445052cfd3e">&#9670;&nbsp;</a></span>glfwSetWindowIconifyCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a> glfwSetWindowIconifyCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">GLFWwindowiconifyfun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the iconification callback of the specified window, which is called when the window is iconified or restored.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga35c658cccba236f26e7adee0e25f6a4f">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>Wayland:</b> The XDG-shell protocol has no event for iconification, so this callback will never be called.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_iconify">Window iconification</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gacbe64c339fbd94885e62145563b6dc93" name="gacbe64c339fbd94885e62145563b6dc93"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gacbe64c339fbd94885e62145563b6dc93">&#9670;&nbsp;</a></span>glfwSetWindowMaximizeCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a> glfwSetWindowMaximizeCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the maximization callback of the specified window, which is called when the window is maximized or restored.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_maximize">Window maximization</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="gab3fb7c3366577daef18c0023e2a8591f" name="gab3fb7c3366577daef18c0023e2a8591f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab3fb7c3366577daef18c0023e2a8591f">&#9670;&nbsp;</a></span>glfwSetFramebufferSizeCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a> glfwSetFramebufferSizeCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">GLFWframebuffersizefun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the framebuffer resize callback of the specified window, which is called when the framebuffer of the specified window is resized.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#gae18026e294dde685ed2e5f759533144d">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_fbsize">Framebuffer size</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+
+</div>
+</div>
+<a id="gaf2832ebb5aa6c252a2d261de002c92d6" name="gaf2832ebb5aa6c252a2d261de002c92d6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gaf2832ebb5aa6c252a2d261de002c92d6">&#9670;&nbsp;</a></span>glfwSetWindowContentScaleCallback()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a> glfwSetWindowContentScaleCallback </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a>&#160;</td>
+ <td class="paramname"><em>callback</em>&#160;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function sets the window content scale callback of the specified window, which is called when the content scale of the specified window changes.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose callback to set. </td></tr>
+ <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>The new callback, or <code>NULL</code> to remove the currently set callback. </td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd>The previously set callback, or <code>NULL</code> if no callback was set or the library had not been <a class="el" href="intro_guide.html#intro_init">initialized</a>.</dd></dl>
+<dl class="section user"><dt>Callback signature</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> function_name(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
+</div><!-- fragment --> For more information about the callback parameters, see the <a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">function pointer type</a>.</dd></dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_scale">Window content scale</a> </dd>
+<dd>
+<a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+
+</div>
+</div>
+<a id="ga37bd57223967b4211d60ca1a0bf3c832" name="ga37bd57223967b4211d60ca1a0bf3c832"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga37bd57223967b4211d60ca1a0bf3c832">&#9670;&nbsp;</a></span>glfwPollEvents()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwPollEvents </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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.</p>
+<p >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 <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
+<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
+<p >Event processing is not required for joystick input to work.</p>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. </dd></dl>
+
+</div>
+</div>
+<a id="ga554e37d781f0a997656c26b2c56c835e" name="ga554e37d781f0a997656c26b2c56c835e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga554e37d781f0a997656c26b2c56c835e">&#9670;&nbsp;</a></span>glfwWaitEvents()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwWaitEvents </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >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 <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, 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.</p>
+<p >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.</p>
+<p >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 <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
+<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
+<p >Event processing is not required for joystick input to work.</p>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.5. </dd></dl>
+
+</div>
+</div>
+<a id="ga605a178db92f1a7f1a925563ef3ea2cf" name="ga605a178db92f1a7f1a925563ef3ea2cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga605a178db92f1a7f1a925563ef3ea2cf">&#9670;&nbsp;</a></span>glfwWaitEventsTimeout()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwWaitEventsTimeout </td>
+ <td>(</td>
+ <td class="paramtype">double&#160;</td>
+ <td class="paramname"><em>timeout</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function puts the calling thread to sleep until at least one event is available in the event queue, or until the specified timeout is reached. If one or more events are available, it behaves exactly like <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, 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.</p>
+<p >The timeout value must be a positive finite number.</p>
+<p >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.</p>
+<p >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 <a class="el" href="window_guide.html#window_refresh">window refresh callback</a> to redraw the contents of your window when necessary during such operations.</p>
+<p >Do not assume that callbacks you set will <em>only</em> be called in response to event processing functions like this one. While it is necessary to poll for events, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
+<p >Event processing is not required for joystick input to work.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">timeout</td><td>The maximum amount of time, in seconds, to wait.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687">GLFW_INVALID_VALUE</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Reentrancy</dt><dd>This function must not be called from a callback.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function must only be called from the main thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.2. </dd></dl>
+
+</div>
+</div>
+<a id="gab5997a25187e9fd5c6f2ecbbc8dfd7e9" name="gab5997a25187e9fd5c6f2ecbbc8dfd7e9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">&#9670;&nbsp;</a></span>glfwPostEmptyEvent()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwPostEmptyEvent </td>
+ <td>(</td>
+ <td class="paramtype">void&#160;</td>
+ <td class="paramname"></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function posts an empty event from the current thread to the event queue, causing <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> or <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> to return.</p>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> </dd>
+<dd>
+<a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.1. </dd></dl>
+
+</div>
+</div>
+<a id="ga15a5a1ee5b3c2ca6b15ca209a12efd14" name="ga15a5a1ee5b3c2ca6b15ca209a12efd14"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ga15a5a1ee5b3c2ca6b15ca209a12efd14">&#9670;&nbsp;</a></span>glfwSwapBuffers()</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void glfwSwapBuffers </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> *&#160;</td>
+ <td class="paramname"><em>window</em></td><td>)</td>
+ <td></td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >This function swaps the front and back buffers of the specified window when rendering with OpenGL or OpenGL ES. If the swap interval is greater than zero, the GPU driver waits the specified number of screen updates before swapping the buffers.</p>
+<p >The specified window must have an OpenGL or OpenGL ES context. Specifying a window without a context will generate a <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> error.</p>
+<p >This function does not apply to Vulkan. If you are rendering with Vulkan, see <code>vkQueuePresentKHR</code> instead.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+ <table class="params">
+ <tr><td class="paramdir">[in]</td><td class="paramname">window</td><td>The window whose buffers to swap.</td></tr>
+ </table>
+ </dd>
+</dl>
+<dl class="section user"><dt>Errors</dt><dd>Possible errors include <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a>, <a class="el" href="group__errors.html#gacff24d2757da752ae4c80bf452356487">GLFW_NO_WINDOW_CONTEXT</a> and <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a>.</dd></dl>
+<dl class="section remark"><dt>Remarks</dt><dd><b>EGL:</b> The context of the specified window must be current on the calling thread.</dd></dl>
+<dl class="section user"><dt>Thread safety</dt><dd>This function may be called from any thread.</dd></dl>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#buffer_swap">Buffer swapping</a> </dd>
+<dd>
+<a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added window handle parameter. </dd></dl>
+
+</div>
+</div>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/index.html b/libs/glfw-3.3.8/docs/html/index.html
new file mode 100644
index 0000000..072fcc5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/index.html
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Main Page</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div><div class="contents">
+<div class="textblock"><h1><a class="anchor" id="main_intro"></a>
+Introduction</h1>
+<p >GLFW is a free, Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc.</p>
+<p ><a class="el" href="news.html#news_33">Release notes for version 3.3</a> list new features, caveats and deprecations.</p>
+<p ><a class="el" href="quick_guide.html">Getting started</a> is a guide for users new to GLFW. It takes you through how to write a small but complete program.</p>
+<p >There are guides for each section of the API:</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a> – initialization, error handling and high-level design</li>
+<li><a class="el" href="window_guide.html">Window guide</a> – creating and working with windows and framebuffers</li>
+<li><a class="el" href="context_guide.html">Context guide</a> – working with OpenGL and OpenGL ES contexts</li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a> - working with Vulkan objects and extensions</li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a> – enumerating and working with monitors and video modes</li>
+<li><a class="el" href="input_guide.html">Input guide</a> – receiving events, polling and processing input</li>
+</ul>
+<p >Once you have written a program, see <a class="el" href="compile_guide.html">Compiling GLFW</a> and <a class="el" href="build_guide.html">Building applications</a>.</p>
+<p >The <a href="modules.html">reference documentation</a> provides more detailed information about specific functions.</p>
+<p ><a class="el" href="moving_guide.html">Moving from GLFW 2 to 3</a> explains what has changed and how to update existing code to use the new API.</p>
+<p >There is a section on <a class="el" href="intro_guide.html#guarantees_limitations">Guarantees and limitations</a> for pointer lifetimes, reentrancy, thread safety, event order and backward and forward compatibility.</p>
+<p >The <a href="https://www.glfw.org/faq.html">FAQ</a> answers many common questions about the design, implementation and use of GLFW.</p>
+<p >Finally, <a class="el" href="compat_guide.html">Standards conformance</a> explains what APIs, standards and protocols GLFW uses and what happens when they are not present on a given machine.</p>
+<p >This documentation was generated with Doxygen. The sources for it are available in both the <a href="https://www.glfw.org/download.html">source distribution</a> and <a href="https://github.com/glfw/glfw">GitHub repository</a>. </p>
+</div></div><!-- PageDoc -->
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/input_8dox.html b/libs/glfw-3.3.8/docs/html/input_8dox.html
new file mode 100644
index 0000000..3765672
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/input_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: input.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">input.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/input_guide.html b/libs/glfw-3.3.8/docs/html/input_guide.html
new file mode 100644
index 0000000..9c8c25f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/input_guide.html
@@ -0,0 +1,562 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Input guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Input guide </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#events">Event processing</a></li>
+<li class="level1"><a href="#input_keyboard">Keyboard input</a><ul><li class="level2"><a href="#input_key">Key input</a></li>
+<li class="level2"><a href="#input_char">Text input</a></li>
+<li class="level2"><a href="#input_key_name">Key names</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#input_mouse">Mouse input</a><ul><li class="level2"><a href="#cursor_pos">Cursor position</a></li>
+<li class="level2"><a href="#cursor_mode">Cursor mode</a></li>
+<li class="level2"><a href="#raw_mouse_motion">Raw mouse motion</a></li>
+<li class="level2"><a href="#cursor_object">Cursor objects</a><ul><li class="level3"><a href="#cursor_custom">Custom cursor creation</a></li>
+<li class="level3"><a href="#cursor_standard">Standard cursor creation</a></li>
+<li class="level3"><a href="#cursor_destruction">Cursor destruction</a></li>
+<li class="level3"><a href="#cursor_set">Cursor setting</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#cursor_enter">Cursor enter/leave events</a></li>
+<li class="level2"><a href="#input_mouse_button">Mouse button input</a></li>
+<li class="level2"><a href="#scrolling">Scroll input</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#joystick">Joystick input</a><ul><li class="level2"><a href="#joystick_axis">Joystick axis states</a></li>
+<li class="level2"><a href="#joystick_button">Joystick button states</a></li>
+<li class="level2"><a href="#joystick_hat">Joystick hat states</a></li>
+<li class="level2"><a href="#joystick_name">Joystick name</a></li>
+<li class="level2"><a href="#joystick_userptr">Joystick user pointer</a></li>
+<li class="level2"><a href="#joystick_event">Joystick configuration changes</a></li>
+<li class="level2"><a href="#gamepad">Gamepad input</a></li>
+<li class="level2"><a href="#gamepad_mapping">Gamepad mappings</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#time">Time input</a></li>
+<li class="level1"><a href="#clipboard">Clipboard input and output</a></li>
+<li class="level1"><a href="#path_drop">Path drop input</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This guide introduces the input related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__input.html">Input reference</a>. There are also guides for the other areas of GLFW.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+</ul>
+<p >GLFW provides many kinds of input. While some can only be polled, like time, or only received via callbacks, like scrolling, many provide both callbacks and polling. Callbacks are more work to use than polling but is less CPU intensive and guarantees that you do not miss state changes.</p>
+<p >All input callbacks receive a window handle. By using the <a class="el" href="window_guide.html#window_userptr">window user pointer</a>, you can access non-global structures or objects from your callbacks.</p>
+<p >To get a better feel for how the various events callbacks behave, run the <code>events</code> test program. It register every callback supported by GLFW and prints out all arguments provided for every event, along with time and sequence information.</p>
+<h1><a class="anchor" id="events"></a>
+Event processing</h1>
+<p >GLFW needs to poll the window system for events both to provide input to the application and to prove to the window system that the application hasn't locked up. Event processing is normally done each frame after <a class="el" href="window_guide.html#buffer_swap">buffer swapping</a>. Even when you have no windows, event polling needs to be done in order to receive monitor and joystick connection events.</p>
+<p >There are three functions for processing pending events. <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>, processes only those events that have already been received and then returns immediately.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
+<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
+</div><!-- fragment --><p >This is the best choice when rendering continuously, like most games do.</p>
+<p >If you only need to update the contents of the window when you receive new input, <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> is a better choice.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>();</div>
+<div class="ttc" id="agroup__window_html_ga554e37d781f0a997656c26b2c56c835e"><div class="ttname"><a href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></div><div class="ttdeci">void glfwWaitEvents(void)</div><div class="ttdoc">Waits until events are queued and processes them.</div></div>
+</div><!-- fragment --><p >It puts the thread to sleep until at least one event has been received and then processes all received events. This saves a great deal of CPU cycles and is useful for, for example, editing tools.</p>
+<p >If you want to wait for events but have UI elements or other tasks that need periodic updates, <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> lets you specify a timeout.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>(0.7);</div>
+<div class="ttc" id="agroup__window_html_ga605a178db92f1a7f1a925563ef3ea2cf"><div class="ttname"><a href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></div><div class="ttdeci">void glfwWaitEventsTimeout(double timeout)</div><div class="ttdoc">Waits with timeout until events are queued and processes them.</div></div>
+</div><!-- fragment --><p >It puts the thread to sleep until at least one event has been received, or until the specified number of seconds have elapsed. It then processes any received events.</p>
+<p >If the main thread is sleeping in <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a>, you can wake it from another thread by posting an empty event to the event queue with <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a>();</div>
+<div class="ttc" id="agroup__window_html_gab5997a25187e9fd5c6f2ecbbc8dfd7e9"><div class="ttname"><a href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></div><div class="ttdeci">void glfwPostEmptyEvent(void)</div><div class="ttdoc">Posts an empty event to the event queue.</div></div>
+</div><!-- fragment --><p >Do not assume that callbacks will <em>only</em> be called in response to the above functions. While it is necessary to process events in one or more of the ways above, window systems that require GLFW to register callbacks of its own can pass events to GLFW in response to many window system function calls. GLFW will pass those events on to the application callbacks before returning.</p>
+<p >For example, on Windows the system function that <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> is implemented with will send window size events directly to the event callback that every window has and that GLFW implements for its windows. If you have set a <a class="el" href="window_guide.html#window_size">window size callback</a> GLFW will call it in turn with the new size before everything returns back out of the <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> call.</p>
+<h1><a class="anchor" id="input_keyboard"></a>
+Keyboard input</h1>
+<p >GLFW divides keyboard input into two categories; key events and character events. Key events relate to actual physical keyboard keys, whereas character events relate to the Unicode code points generated by pressing some of them.</p>
+<p >Keys and characters do not map 1:1. A single key press may produce several characters, and a single character may require several keys to produce. This may not be the case on your machine, but your users are likely not all using the same keyboard layout, input method or even operating system as you.</p>
+<h2><a class="anchor" id="input_key"></a>
+Key input</h2>
+<p >If you wish to be notified when a physical key is pressed or released or when it repeats, set a key callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
+<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
+</div><!-- fragment --><p >The callback function receives the <a class="el" href="group__keys.html">keyboard key</a>, platform-specific scancode, key action and <a class="el" href="group__mods.html">modifier bits</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line"> activate_airship();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__input_html_ga2485743d0b59df3791c45951c4195265"><div class="ttname"><a href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a></div><div class="ttdeci">#define GLFW_PRESS</div><div class="ttdoc">The key or mouse button was pressed.</div><div class="ttdef"><b>Definition:</b> glfw3.h:338</div></div>
+<div class="ttc" id="agroup__keys_html_gabf48fcc3afbe69349df432b470c96ef2"><div class="ttname"><a href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a></div><div class="ttdeci">#define GLFW_KEY_E</div><div class="ttdef"><b>Definition:</b> glfw3.h:416</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><p >The action is one of <code>GLFW_PRESS</code>, <code>GLFW_REPEAT</code> or <code>GLFW_RELEASE</code>. Events with <code>GLFW_PRESS</code> and <code>GLFW_RELEASE</code> actions are emitted for every key press. Most keys will also emit events with <code>GLFW_REPEAT</code> actions while a key is held down.</p>
+<p >Key events with <code>GLFW_REPEAT</code> actions are intended for text input. They are emitted at the rate set in the user's keyboard settings. At most one key is repeated even if several keys are held down. <code>GLFW_REPEAT</code> actions should not be relied on to know which keys are being held down or to drive animation. Instead you should either save the state of relevant keys based on <code>GLFW_PRESS</code> and <code>GLFW_RELEASE</code> actions, or call <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>, which provides basic cached key state.</p>
+<p >The key will be one of the existing <a class="el" href="group__keys.html">key tokens</a>, or <code>GLFW_KEY_UNKNOWN</code> if GLFW lacks a token for it, for example <em>E-mail</em> and <em>Play</em> keys.</p>
+<p >The scancode is unique for every key, regardless of whether it has a key token. Scancodes are platform-specific but consistent over time, so keys will have different scancodes depending on the platform but they are safe to save to disk. You can query the scancode for any <a class="el" href="group__keys.html">named key</a> on the current platform with <a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">int</span> scancode = <a class="code hl_function" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>(<a class="code hl_define" href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a>);</div>
+<div class="line">set_key_mapping(scancode, swap_weapons);</div>
+<div class="ttc" id="agroup__input_html_ga67ddd1b7dcbbaff03e4a76c0ea67103a"><div class="ttname"><a href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></div><div class="ttdeci">int glfwGetKeyScancode(int key)</div><div class="ttdoc">Returns the platform-specific scancode of the specified key.</div></div>
+<div class="ttc" id="agroup__keys_html_gac1c42c0bf4192cea713c55598b06b744"><div class="ttname"><a href="group__keys.html#gac1c42c0bf4192cea713c55598b06b744">GLFW_KEY_X</a></div><div class="ttdeci">#define GLFW_KEY_X</div><div class="ttdef"><b>Definition:</b> glfw3.h:435</div></div>
+</div><!-- fragment --><p >The last reported state for every <a class="el" href="group__keys.html">named key</a> is also saved in per-window state arrays that can be polled with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> state = <a class="code hl_function" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>(window, <a class="code hl_define" href="group__keys.html#gabf48fcc3afbe69349df432b470c96ef2">GLFW_KEY_E</a>);</div>
+<div class="line"><span class="keywordflow">if</span> (state == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line">{</div>
+<div class="line"> activate_airship();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__input_html_gadd341da06bc8d418b4dc3a3518af9ad2"><div class="ttname"><a href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a></div><div class="ttdeci">int glfwGetKey(GLFWwindow *window, int key)</div><div class="ttdoc">Returns the last reported state of a keyboard key for the specified window.</div></div>
+</div><!-- fragment --><p >The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >This function only returns cached key event state. It does not poll the system for the current physical state of the key.</p>
+<p ><a class="anchor" id="GLFW_STICKY_KEYS"></a>Whenever you poll state, you risk missing the state change you are looking for. If a pressed key is released again before you poll its state, you will have missed the key press. The recommended solution for this is to use a key callback, but there is also the <code>GLFW_STICKY_KEYS</code> input mode.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_ae3bbe2315b7691ab088159eb6c9110fc"><div class="ttname"><a href="glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc">GLFW_STICKY_KEYS</a></div><div class="ttdeci">#define GLFW_STICKY_KEYS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1049</div></div>
+<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:312</div></div>
+<div class="ttc" id="agroup__input_html_gaa92336e173da9c8834558b54ee80563b"><div class="ttname"><a href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a></div><div class="ttdeci">void glfwSetInputMode(GLFWwindow *window, int mode, int value)</div><div class="ttdoc">Sets an input option for the specified window.</div></div>
+</div><!-- fragment --><p >When sticky keys mode is enabled, the pollable state of a key will remain <code>GLFW_PRESS</code> until the state of that key is polled with <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a>. Once it has been polled, if a key release event had been processed in the meantime, the state will reset to <code>GLFW_RELEASE</code>, otherwise it will remain <code>GLFW_PRESS</code>.</p>
+<p ><a class="anchor" id="GLFW_LOCK_KEY_MODS"></a>If you wish to know what the state of the Caps Lock and Num Lock keys was when input events were generated, set the <code>GLFW_LOCK_KEY_MODS</code> input mode.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_a07b84de0b52143e1958f88a7d9105947"><div class="ttname"><a href="glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947">GLFW_LOCK_KEY_MODS</a></div><div class="ttdeci">#define GLFW_LOCK_KEY_MODS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1051</div></div>
+</div><!-- fragment --><p >When this input mode is enabled, any callback that receives <a class="el" href="group__mods.html">modifier bits</a> will have the <a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a> bit set if Caps Lock was on when the event occurred and the <a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a> bit set if Num Lock was on.</p>
+<p >The <code>GLFW_KEY_LAST</code> constant holds the highest value of any <a class="el" href="group__keys.html">named key</a>.</p>
+<h2><a class="anchor" id="input_char"></a>
+Text input</h2>
+<p >GLFW supports text input in the form of a stream of <a href="https://en.wikipedia.org/wiki/Unicode">Unicode code points</a>, as produced by the operating system text input system. Unlike key input, text input obeys keyboard layouts and modifier keys and supports composing characters using <a href="https://en.wikipedia.org/wiki/Dead_key">dead keys</a>. Once received, you can encode the code points into UTF-8 or any other encoding you prefer.</p>
+<p >Because an <code>unsigned int</code> is 32 bits long on all platforms supported by GLFW, you can treat the code point argument as native endian UTF-32.</p>
+<p >If you wish to offer regular text input, set a character callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a>(window, character_callback);</div>
+<div class="ttc" id="agroup__input_html_gab25c4a220fd8f5717718dbc487828996"><div class="ttname"><a href="group__input.html#gab25c4a220fd8f5717718dbc487828996">glfwSetCharCallback</a></div><div class="ttdeci">GLFWcharfun glfwSetCharCallback(GLFWwindow *window, GLFWcharfun callback)</div><div class="ttdoc">Sets the Unicode character callback.</div></div>
+</div><!-- fragment --><p >The callback function receives Unicode code points for key events that would have led to regular text input and generally behaves as a standard text field on that platform.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> character_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> codepoint)</div>
+<div class="line">{</div>
+<div class="line">}</div>
+</div><!-- fragment --><h2><a class="anchor" id="input_key_name"></a>
+Key names</h2>
+<p >If you wish to refer to keys by name, you can query the keyboard layout dependent name of printable keys with <a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* key_name = <a class="code hl_function" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>(<a class="code hl_define" href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a>, 0);</div>
+<div class="line">show_tutorial_hint(<span class="stringliteral">&quot;Press %s to move forward&quot;</span>, key_name);</div>
+<div class="ttc" id="agroup__input_html_gaeaed62e69c3bd62b7ff8f7b19913ce4f"><div class="ttname"><a href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a></div><div class="ttdeci">const char * glfwGetKeyName(int key, int scancode)</div><div class="ttdoc">Returns the layout-specific name of the specified printable key.</div></div>
+<div class="ttc" id="agroup__keys_html_gaa06a712e6202661fc03da5bdb7b6e545"><div class="ttname"><a href="group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545">GLFW_KEY_W</a></div><div class="ttdeci">#define GLFW_KEY_W</div><div class="ttdef"><b>Definition:</b> glfw3.h:434</div></div>
+</div><!-- fragment --><p >This function can handle both <a class="el" href="input_guide.html#input_key">keys and scancodes</a>. If the specified key is <code>GLFW_KEY_UNKNOWN</code> then the scancode is used, otherwise it is ignored. This matches the behavior of the key callback, meaning the callback arguments can always be passed unmodified to this function.</p>
+<h1><a class="anchor" id="input_mouse"></a>
+Mouse input</h1>
+<p >Mouse input comes in many forms, including mouse motion, button presses and scrolling offsets. The cursor appearance can also be changed, either to a custom image or a standard cursor shape from the system theme.</p>
+<h2><a class="anchor" id="cursor_pos"></a>
+Cursor position</h2>
+<p >If you wish to be notified when the cursor moves over the window, set a cursor position callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>(window, cursor_position_callback);</div>
+<div class="ttc" id="agroup__input_html_gac1f879ab7435d54d4d79bb469fe225d7"><div class="ttname"><a href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a></div><div class="ttdeci">GLFWcursorposfun glfwSetCursorPosCallback(GLFWwindow *window, GLFWcursorposfun callback)</div><div class="ttdoc">Sets the cursor position callback.</div></div>
+</div><!-- fragment --><p >The callback functions receives the cursor position, measured in screen coordinates but relative to the top-left corner of the window content area. On platforms that provide it, the full sub-pixel cursor position is passed on.</p>
+<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> cursor_position_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xpos, <span class="keywordtype">double</span> ypos)</div>
+<div class="line">{</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >The cursor position is also saved per-window and can be polled with <a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">double</span> xpos, ypos;</div>
+<div class="line"><a class="code hl_function" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>(window, &amp;xpos, &amp;ypos);</div>
+<div class="ttc" id="agroup__input_html_ga01d37b6c40133676b9cea60ca1d7c0cc"><div class="ttname"><a href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a></div><div class="ttdeci">void glfwGetCursorPos(GLFWwindow *window, double *xpos, double *ypos)</div><div class="ttdoc">Retrieves the position of the cursor relative to the content area of the window.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="cursor_mode"></a>
+Cursor mode</h2>
+<p ><a class="anchor" id="GLFW_CURSOR"></a>The <code>GLFW_CURSOR</code> input mode provides several cursor modes for special forms of mouse motion input. By default, the cursor mode is <code>GLFW_CURSOR_NORMAL</code>, meaning the regular arrow cursor (or another cursor set with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>) is used and cursor motion is not limited.</p>
+<p >If you wish to implement mouse motion based camera controls or other input schemes that require unlimited mouse movement, set the cursor mode to <code>GLFW_CURSOR_DISABLED</code>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_a2315b99a329ce53e6a13a9d46fd5ca88"><div class="ttname"><a href="glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88">GLFW_CURSOR_DISABLED</a></div><div class="ttdeci">#define GLFW_CURSOR_DISABLED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1056</div></div>
+<div class="ttc" id="aglfw3_8h_html_aade31da5b884a84a7625c6b059b9132c"><div class="ttname"><a href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a></div><div class="ttdeci">#define GLFW_CURSOR</div><div class="ttdef"><b>Definition:</b> glfw3.h:1048</div></div>
+</div><!-- fragment --><p >This will hide the cursor and lock it to the specified window. GLFW will then take care of all the details of cursor re-centering and offset calculation and providing the application with a virtual cursor position. This virtual position is provided normally via both the cursor position callback and through polling.</p>
+<dl class="section note"><dt>Note</dt><dd>You should not implement your own version of this functionality using other features of GLFW. It is not supported and will not work as robustly as <code>GLFW_CURSOR_DISABLED</code>.</dd></dl>
+<p>If you only wish the cursor to become hidden when it is over a window but still want it to behave normally, set the cursor mode to <code>GLFW_CURSOR_HIDDEN</code>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_ac4d5cb9d78de8573349c58763d53bf11"><div class="ttname"><a href="glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11">GLFW_CURSOR_HIDDEN</a></div><div class="ttdeci">#define GLFW_CURSOR_HIDDEN</div><div class="ttdef"><b>Definition:</b> glfw3.h:1055</div></div>
+</div><!-- fragment --><p >This mode puts no limit on the motion of the cursor.</p>
+<p >To exit out of either of these special modes, restore the <code>GLFW_CURSOR_NORMAL</code> cursor mode.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c">GLFW_CURSOR</a>, <a class="code hl_define" href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_ae04dd25c8577e19fa8c97368561f6c68"><div class="ttname"><a href="glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68">GLFW_CURSOR_NORMAL</a></div><div class="ttdeci">#define GLFW_CURSOR_NORMAL</div><div class="ttdef"><b>Definition:</b> glfw3.h:1054</div></div>
+</div><!-- fragment --><p ><a class="anchor" id="GLFW_RAW_MOUSE_MOTION"></a></p>
+<h2><a class="anchor" id="raw_mouse_motion"></a>
+Raw mouse motion</h2>
+<p >When the cursor is disabled, raw (unscaled and unaccelerated) mouse motion can be enabled if available.</p>
+<p >Raw mouse motion is closer to the actual motion of the mouse across a surface. It is not affected by the scaling and acceleration applied to the motion of the desktop cursor. That processing is suitable for a cursor while raw motion is better for controlling for example a 3D camera. Because of this, raw mouse motion is only provided when the cursor is disabled.</p>
+<p >Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check if the current machine provides raw motion and set the <code>GLFW_RAW_MOUSE_MOTION</code> input mode to enable it. It is disabled by default.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a>())</div>
+<div class="line"> <a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_aeeda1be76a44a1fc97c1282e06281fbb"><div class="ttname"><a href="glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb">GLFW_RAW_MOUSE_MOTION</a></div><div class="ttdeci">#define GLFW_RAW_MOUSE_MOTION</div><div class="ttdef"><b>Definition:</b> glfw3.h:1052</div></div>
+<div class="ttc" id="agroup__input_html_gae4ee0dbd0d256183e1ea4026d897e1c2"><div class="ttname"><a href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></div><div class="ttdeci">int glfwRawMouseMotionSupported(void)</div><div class="ttdoc">Returns whether raw mouse motion is supported.</div></div>
+</div><!-- fragment --><p >If supported, raw mouse motion can be enabled or disabled per-window and at any time but it will only be provided when the cursor is disabled.</p>
+<h2><a class="anchor" id="cursor_object"></a>
+Cursor objects</h2>
+<p >GLFW supports creating both custom and system theme cursor images, encapsulated as <a class="el" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a> objects. They are created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> or <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a> and destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>, or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, if any remain.</p>
+<h3><a class="anchor" id="cursor_custom"></a>
+Custom cursor creation</h3>
+<p >A custom cursor is created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>, which returns a handle to the created cursor object. For example, this creates a 16x16 white square cursor with the hot-spot in the upper-left corner:</p>
+<div class="fragment"><div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> pixels[16 * 16 * 4];</div>
+<div class="line">memset(pixels, 0xff, <span class="keyword">sizeof</span>(pixels));</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a> image;</div>
+<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a> = 16;</div>
+<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a> = 16;</div>
+<div class="line">image.<a class="code hl_variable" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a> = pixels;</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor = <a class="code hl_function" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a>(&amp;image, 0, 0);</div>
+<div class="ttc" id="agroup__input_html_ga556f604f73af156c0db0e97c081373c3"><div class="ttname"><a href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateCursor(const GLFWimage *image, int xhot, int yhot)</div><div class="ttdoc">Creates a custom cursor.</div></div>
+<div class="ttc" id="agroup__input_html_ga89261ae18c75e863aaf2656ecdd238f4"><div class="ttname"><a href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a></div><div class="ttdeci">struct GLFWcursor GLFWcursor</div><div class="ttdoc">Opaque cursor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1197</div></div>
+<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1721</div></div>
+<div class="ttc" id="astructGLFWimage_html_a0b7d95368f0c80d5e5c9875057c7dbec"><div class="ttname"><a href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">GLFWimage::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1727</div></div>
+<div class="ttc" id="astructGLFWimage_html_a0c532a5c2bb715555279b7817daba0fb"><div class="ttname"><a href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">GLFWimage::pixels</a></div><div class="ttdeci">unsigned char * pixels</div><div class="ttdef"><b>Definition:</b> glfw3.h:1730</div></div>
+<div class="ttc" id="astructGLFWimage_html_af6a71cc999fe6d3aea31dd7e9687d835"><div class="ttname"><a href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">GLFWimage::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1724</div></div>
+</div><!-- fragment --><p >If cursor creation fails, <code>NULL</code> will be returned, so it is necessary to check the return value.</p>
+<p >The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. The pixels are arranged canonically as sequential rows, starting from the top-left corner.</p>
+<h3><a class="anchor" id="cursor_standard"></a>
+Standard cursor creation</h3>
+<p >A cursor with a <a class="el" href="group__shapes.html">standard shape</a> from the current system cursor theme can be can be created with <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__input.html#ga89261ae18c75e863aaf2656ecdd238f4">GLFWcursor</a>* cursor = <a class="code hl_function" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>(<a class="code hl_define" href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a>);</div>
+<div class="ttc" id="agroup__input_html_gaf2fb2eb2c9dd842d1cef8a34e3c6403e"><div class="ttname"><a href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a></div><div class="ttdeci">GLFWcursor * glfwCreateStandardCursor(int shape)</div><div class="ttdoc">Creates a cursor with a standard shape.</div></div>
+<div class="ttc" id="agroup__shapes_html_gabb3eb0109f11bb808fc34659177ca962"><div class="ttname"><a href="group__shapes.html#gabb3eb0109f11bb808fc34659177ca962">GLFW_HRESIZE_CURSOR</a></div><div class="ttdeci">#define GLFW_HRESIZE_CURSOR</div><div class="ttdoc">The horizontal resize arrow shape.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1098</div></div>
+</div><!-- fragment --><p >These cursor objects behave in the exact same way as those created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> except that the system cursor theme provides the actual image.</p>
+<h3><a class="anchor" id="cursor_destruction"></a>
+Cursor destruction</h3>
+<p >When a cursor is no longer needed, destroy it with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>(cursor);</div>
+<div class="ttc" id="agroup__input_html_ga81b952cd1764274d0db7fb3c5a79ba6a"><div class="ttname"><a href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></div><div class="ttdeci">void glfwDestroyCursor(GLFWcursor *cursor)</div><div class="ttdoc">Destroys a cursor.</div></div>
+</div><!-- fragment --><p >Cursor destruction always succeeds. If the cursor is current for any window, that window will revert to the default cursor. This does not affect the cursor mode. All remaining cursors are destroyed when <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> is called.</p>
+<h3><a class="anchor" id="cursor_set"></a>
+Cursor setting</h3>
+<p >A cursor can be set as current for a window with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(window, cursor);</div>
+<div class="ttc" id="agroup__input_html_gad3b4f38c8d5dae036bc8fa959e18343e"><div class="ttname"><a href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a></div><div class="ttdeci">void glfwSetCursor(GLFWwindow *window, GLFWcursor *cursor)</div><div class="ttdoc">Sets the cursor for the window.</div></div>
+</div><!-- fragment --><p >Once set, the cursor image will be used as long as the system cursor is over the content area of the window and the <a class="el" href="input_guide.html#cursor_mode">cursor mode</a> is set to <code>GLFW_CURSOR_NORMAL</code>.</p>
+<p >A single cursor may be set for any number of windows.</p>
+<p >To revert to the default cursor, set the cursor of that window to <code>NULL</code>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a>(window, NULL);</div>
+</div><!-- fragment --><p >When a cursor is destroyed, any window that has it set will revert to the default cursor. This does not affect the cursor mode.</p>
+<h2><a class="anchor" id="cursor_enter"></a>
+Cursor enter/leave events</h2>
+<p >If you wish to be notified when the cursor enters or leaves the content area of a window, set a cursor enter/leave callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>(window, cursor_enter_callback);</div>
+<div class="ttc" id="agroup__input_html_gad27f8ad0142c038a281466c0966817d8"><div class="ttname"><a href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a></div><div class="ttdeci">GLFWcursorenterfun glfwSetCursorEnterCallback(GLFWwindow *window, GLFWcursorenterfun callback)</div><div class="ttdoc">Sets the cursor enter/leave callback.</div></div>
+</div><!-- fragment --><p >The callback function receives the new classification of the cursor.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> cursor_enter_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> entered)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (entered)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The cursor entered the content area of the window</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span></div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The cursor left the content area of the window</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >You can query whether the cursor is currently inside the content area of the window with the <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">GLFW_HOVERED</a> window attribute.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a>))</div>
+<div class="line">{</div>
+<div class="line"> highlight_interface();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga8665c71c6fa3d22425c6a0e8a3f89d8a"><div class="ttname"><a href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a></div><div class="ttdeci">#define GLFW_HOVERED</div><div class="ttdoc">Mouse cursor hover window attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:855</div></div>
+<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="input_mouse_button"></a>
+Mouse button input</h2>
+<p >If you wish to be notified when a mouse button is pressed or released, set a mouse button callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a>(window, mouse_button_callback);</div>
+<div class="ttc" id="agroup__input_html_ga6ab84420974d812bee700e45284a723c"><div class="ttname"><a href="group__input.html#ga6ab84420974d812bee700e45284a723c">glfwSetMouseButtonCallback</a></div><div class="ttdeci">GLFWmousebuttonfun glfwSetMouseButtonCallback(GLFWwindow *window, GLFWmousebuttonfun callback)</div><div class="ttdoc">Sets the mouse button callback.</div></div>
+</div><!-- fragment --><p >The callback function receives the <a class="el" href="group__buttons.html">mouse button</a>, button action and <a class="el" href="group__mods.html">modifier bits</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> mouse_button_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> button, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (button == <a class="code hl_define" href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line"> popup_menu();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__buttons_html_ga3e2f2cf3c4942df73cc094247d275e74"><div class="ttname"><a href="group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74">GLFW_MOUSE_BUTTON_RIGHT</a></div><div class="ttdeci">#define GLFW_MOUSE_BUTTON_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:581</div></div>
+</div><!-- fragment --><p >The action is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >Mouse button states for <a class="el" href="group__buttons.html">named buttons</a> are also saved in per-window state arrays that can be polled with <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> state = <a class="code hl_function" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>(window, <a class="code hl_define" href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a>);</div>
+<div class="line"><span class="keywordflow">if</span> (state == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line">{</div>
+<div class="line"> upgrade_cow();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__buttons_html_gaf37100431dcd5082d48f95ee8bc8cd56"><div class="ttname"><a href="group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56">GLFW_MOUSE_BUTTON_LEFT</a></div><div class="ttdeci">#define GLFW_MOUSE_BUTTON_LEFT</div><div class="ttdef"><b>Definition:</b> glfw3.h:580</div></div>
+<div class="ttc" id="agroup__input_html_gac1473feacb5996c01a7a5a33b5066704"><div class="ttname"><a href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a></div><div class="ttdeci">int glfwGetMouseButton(GLFWwindow *window, int button)</div><div class="ttdoc">Returns the last reported state of a mouse button for the specified window.</div></div>
+</div><!-- fragment --><p >The returned state is one of <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >This function only returns cached mouse button event state. It does not poll the system for the current state of the mouse button.</p>
+<p ><a class="anchor" id="GLFW_STICKY_MOUSE_BUTTONS"></a>Whenever you poll state, you risk missing the state change you are looking for. If a pressed mouse button is released again before you poll its state, you will have missed the button press. The recommended solution for this is to use a mouse button callback, but there is also the <code>GLFW_STICKY_MOUSE_BUTTONS</code> input mode.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a>(window, <a class="code hl_define" href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_a4d7ce8ce71030c3b04e2b78145bc59d1"><div class="ttname"><a href="glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1">GLFW_STICKY_MOUSE_BUTTONS</a></div><div class="ttdeci">#define GLFW_STICKY_MOUSE_BUTTONS</div><div class="ttdef"><b>Definition:</b> glfw3.h:1050</div></div>
+</div><!-- fragment --><p >When sticky mouse buttons mode is enabled, the pollable state of a mouse button will remain <code>GLFW_PRESS</code> until the state of that button is polled with <a class="el" href="group__input.html#gac1473feacb5996c01a7a5a33b5066704">glfwGetMouseButton</a>. Once it has been polled, if a mouse button release event had been processed in the meantime, the state will reset to <code>GLFW_RELEASE</code>, otherwise it will remain <code>GLFW_PRESS</code>.</p>
+<p >The <code>GLFW_MOUSE_BUTTON_LAST</code> constant holds the highest value of any <a class="el" href="group__buttons.html">named button</a>.</p>
+<h2><a class="anchor" id="scrolling"></a>
+Scroll input</h2>
+<p >If you wish to be notified when the user scrolls, whether with a mouse wheel or touchpad gesture, set a scroll callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a>(window, scroll_callback);</div>
+<div class="ttc" id="agroup__input_html_ga571e45a030ae4061f746ed56cb76aede"><div class="ttname"><a href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a></div><div class="ttdeci">GLFWscrollfun glfwSetScrollCallback(GLFWwindow *window, GLFWscrollfun callback)</div><div class="ttdoc">Sets the scroll callback.</div></div>
+</div><!-- fragment --><p >The callback function receives two-dimensional scroll offsets.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> scroll_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset)</div>
+<div class="line">{</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >A normal mouse wheel, being vertical, provides offsets along the Y-axis.</p>
+<h1><a class="anchor" id="joystick"></a>
+Joystick input</h1>
+<p >The joystick functions expose connected joysticks and controllers, with both referred to as joysticks. It supports up to sixteen joysticks, ranging from <code>GLFW_JOYSTICK_1</code>, <code>GLFW_JOYSTICK_2</code> up to and including <code>GLFW_JOYSTICK_16</code> or <code>GLFW_JOYSTICK_LAST</code>. You can test whether a <a class="el" href="group__joysticks.html">joystick</a> is present with <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> present = <a class="code hl_function" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>(<a class="code hl_define" href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a>);</div>
+<div class="ttc" id="agroup__input_html_gaed0966cee139d815317f9ffcba64c9f1"><div class="ttname"><a href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a></div><div class="ttdeci">int glfwJoystickPresent(int jid)</div><div class="ttdoc">Returns whether the specified joystick is present.</div></div>
+<div class="ttc" id="agroup__joysticks_html_ga34a0443d059e9f22272cd4669073f73d"><div class="ttname"><a href="group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d">GLFW_JOYSTICK_1</a></div><div class="ttdeci">#define GLFW_JOYSTICK_1</div><div class="ttdef"><b>Definition:</b> glfw3.h:592</div></div>
+</div><!-- fragment --><p >Each joystick has zero or more axes, zero or more buttons, zero or more hats, a human-readable name, a user pointer and an SDL compatible GUID.</p>
+<p >When GLFW is initialized, detected joysticks are added to the beginning of the array. Once a joystick is detected, it keeps its assigned ID until it is disconnected or the library is terminated, so as joysticks are connected and disconnected, there may appear gaps in the IDs.</p>
+<p >Joystick axis, button and hat state is updated when polled and does not require a window to be created or events to be processed. However, if you want joystick connection and disconnection events reliably delivered to the <a class="el" href="input_guide.html#joystick_event">joystick callback</a> then you must <a class="el" href="input_guide.html#events">process events</a>.</p>
+<p >To see all the properties of all connected joysticks in real-time, run the <code>joysticks</code> test program.</p>
+<h2><a class="anchor" id="joystick_axis"></a>
+Joystick axis states</h2>
+<p >The positions of all axes of a joystick are returned by <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>. See the reference documentation for the lifetime of the returned array.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
+<div class="line"><span class="keyword">const</span> <span class="keywordtype">float</span>* axes = <a class="code hl_function" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>(<a class="code hl_define" href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a>, &amp;count);</div>
+<div class="ttc" id="agroup__input_html_gaeb1c0191d3140a233a682987c61eb408"><div class="ttname"><a href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a></div><div class="ttdeci">const float * glfwGetJoystickAxes(int jid, int *count)</div><div class="ttdoc">Returns the values of all axes of the specified joystick.</div></div>
+<div class="ttc" id="agroup__joysticks_html_gae43281bc66d3fa5089fb50c3e7a28695"><div class="ttname"><a href="group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695">GLFW_JOYSTICK_5</a></div><div class="ttdeci">#define GLFW_JOYSTICK_5</div><div class="ttdef"><b>Definition:</b> glfw3.h:596</div></div>
+</div><!-- fragment --><p >Each element in the returned array is a value between -1.0 and 1.0.</p>
+<h2><a class="anchor" id="joystick_button"></a>
+Joystick button states</h2>
+<p >The states of all buttons of a joystick are returned by <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>. See the reference documentation for the lifetime of the returned array.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
+<div class="line"><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* buttons = <a class="code hl_function" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a>(<a class="code hl_define" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>, &amp;count);</div>
+<div class="ttc" id="agroup__input_html_ga5ffe34739d3dc97efe432ed2d81d9938"><div class="ttname"><a href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickButtons(int jid, int *count)</div><div class="ttdoc">Returns the state of all buttons of the specified joystick.</div></div>
+<div class="ttc" id="agroup__joysticks_html_gae6f3eedfeb42424c2f5e3161efb0b654"><div class="ttname"><a href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a></div><div class="ttdeci">#define GLFW_JOYSTICK_3</div><div class="ttdef"><b>Definition:</b> glfw3.h:594</div></div>
+</div><!-- fragment --><p >Each element in the returned array is either <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, the button array by default also includes all hats. See the reference documentation for <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> for details.</p>
+<h2><a class="anchor" id="joystick_hat"></a>
+Joystick hat states</h2>
+<p >The states of all hats are returned by <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. See the reference documentation for the lifetime of the returned array.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
+<div class="line"><span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>* hats = <a class="code hl_function" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>(<a class="code hl_define" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>, &amp;count);</div>
+<div class="ttc" id="agroup__input_html_ga06e660841b3e79c54da4f54a932c5a2c"><div class="ttname"><a href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></div><div class="ttdeci">const unsigned char * glfwGetJoystickHats(int jid, int *count)</div><div class="ttdoc">Returns the state of all hats of the specified joystick.</div></div>
+<div class="ttc" id="agroup__joysticks_html_ga20a9f4f3aaefed9ea5e66072fc588b87"><div class="ttname"><a href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a></div><div class="ttdeci">#define GLFW_JOYSTICK_7</div><div class="ttdef"><b>Definition:</b> glfw3.h:598</div></div>
+</div><!-- fragment --><p >Each element in the returned array is one of the following:</p>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Name </th><th class="markdownTableHeadNone">Value </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_CENTERED</code> </td><td class="markdownTableBodyNone">0 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_UP</code> </td><td class="markdownTableBodyNone">1 </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> </td><td class="markdownTableBodyNone">2 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_DOWN</code> </td><td class="markdownTableBodyNone">4 </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> </td><td class="markdownTableBodyNone">8 </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_UP</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_RIGHT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_UP</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_UP</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT_DOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_HAT_LEFT</code> | <code>GLFW_HAT_DOWN</code> </td></tr>
+</table>
+<p >The diagonal directions are bitwise combinations of the primary (up, right, down and left) directions and you can test for these individually by ANDing it with the corresponding direction.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (hats[2] &amp; <a class="code hl_define" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a>)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// State of hat 2 could be right-up, right or right-down</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__hat__state_html_ga252586e3bbde75f4b0e07ad3124867f5"><div class="ttname"><a href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></div><div class="ttdeci">#define GLFW_HAT_RIGHT</div><div class="ttdef"><b>Definition:</b> glfw3.h:357</div></div>
+</div><!-- fragment --><p >For backward compatibility with earlier versions that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>, all hats are by default also included in the button array. See the reference documentation for <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> for details.</p>
+<h2><a class="anchor" id="joystick_name"></a>
+Joystick name</h2>
+<p >The human-readable, UTF-8 encoded name of a joystick is returned by <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>. See the reference documentation for the lifetime of the returned string.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>(<a class="code hl_define" href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a>);</div>
+<div class="ttc" id="agroup__input_html_gac6a8e769e18e0bcfa9097793fc2c3978"><div class="ttname"><a href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a></div><div class="ttdeci">const char * glfwGetJoystickName(int jid)</div><div class="ttdoc">Returns the name of the specified joystick.</div></div>
+<div class="ttc" id="agroup__joysticks_html_ga97ddbcad02b7f48d74fad4ddb08fff59"><div class="ttname"><a href="group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59">GLFW_JOYSTICK_4</a></div><div class="ttdeci">#define GLFW_JOYSTICK_4</div><div class="ttdef"><b>Definition:</b> glfw3.h:595</div></div>
+</div><!-- fragment --><p >Joystick names are not guaranteed to be unique. Two joysticks of the same model and make may have the same name. Only the <a class="el" href="group__joysticks.html">joystick ID</a> is guaranteed to be unique, and only until that joystick is disconnected.</p>
+<h2><a class="anchor" id="joystick_userptr"></a>
+Joystick user pointer</h2>
+<p >Each joystick has a user pointer that can be set with <a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> and queried with <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW. The value will be kept until the joystick is disconnected or until the library is terminated.</p>
+<p >The initial value of the pointer is <code>NULL</code>.</p>
+<h2><a class="anchor" id="joystick_event"></a>
+Joystick configuration changes</h2>
+<p >If you wish to be notified when a joystick is connected or disconnected, set a joystick callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>(joystick_callback);</div>
+<div class="ttc" id="agroup__input_html_ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c"><div class="ttname"><a href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a></div><div class="ttdeci">GLFWjoystickfun glfwSetJoystickCallback(GLFWjoystickfun callback)</div><div class="ttdoc">Sets the joystick configuration callback.</div></div>
+</div><!-- fragment --><p >The callback function receives the ID of the joystick that has been connected and disconnected and the event that occurred.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> joystick_callback(<span class="keywordtype">int</span> jid, <span class="keywordtype">int</span> event)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The joystick was connected</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The joystick was disconnected</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+<div class="ttc" id="aglfw3_8h_html_aab64b25921ef21d89252d6f0a71bfc32"><div class="ttname"><a href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a></div><div class="ttdeci">#define GLFW_DISCONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1107</div></div>
+<div class="ttc" id="aglfw3_8h_html_abe11513fd1ffbee5bb9b173f06028b9e"><div class="ttname"><a href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a></div><div class="ttdeci">#define GLFW_CONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1106</div></div>
+</div><!-- fragment --><p >For joystick connection and disconnection events to be delivered on all platforms, you need to call one of the <a class="el" href="input_guide.html#events">event processing</a> functions. Joystick disconnection may also be detected and the callback called by joystick functions. The function will then return whatever it returns for a disconnected joystick.</p>
+<p >Only <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a> and <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a> will return useful values for a disconnected joystick and only before the monitor callback returns.</p>
+<h2><a class="anchor" id="gamepad"></a>
+Gamepad input</h2>
+<p >The joystick functions provide unlabeled axes, buttons and hats, with no indication of where they are located on the device. Their order may also vary between platforms even with the same device.</p>
+<p >To solve this problem the SDL community crowdsourced the <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL_GameControllerDB</a> project, a database of mappings from many different devices to an Xbox-like gamepad.</p>
+<p >GLFW supports this mapping format and contains a copy of the mappings available at the time of release. See <a class="el" href="input_guide.html#gamepad_mapping">Gamepad mappings</a> for how to update this at runtime. Mappings will be assigned to joysticks automatically any time a joystick is connected or the mappings are updated.</p>
+<p >You can check whether a joystick is both present and has a gamepad mapping with <a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a>(<a class="code hl_define" href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a>))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Use as gamepad</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__input_html_gad0f676860f329d80f7e47e9f06a96f00"><div class="ttname"><a href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></div><div class="ttdeci">int glfwJoystickIsGamepad(int jid)</div><div class="ttdoc">Returns whether the specified joystick has a gamepad mapping.</div></div>
+<div class="ttc" id="agroup__joysticks_html_ga6eab65ec88e65e0850ef8413504cb50c"><div class="ttname"><a href="group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c">GLFW_JOYSTICK_2</a></div><div class="ttdeci">#define GLFW_JOYSTICK_2</div><div class="ttdef"><b>Definition:</b> glfw3.h:593</div></div>
+</div><!-- fragment --><p >If you are only interested in gamepad input you can use this function instead of <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a>.</p>
+<p >You can query the human-readable name provided by the gamepad mapping with <a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>. This may or may not be the same as the <a class="el" href="input_guide.html#joystick_name">joystick name</a>.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a>(<a class="code hl_define" href="group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87">GLFW_JOYSTICK_7</a>);</div>
+<div class="ttc" id="agroup__input_html_ga8aea73a1a25cc6c0486a617019f56728"><div class="ttname"><a href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></div><div class="ttdeci">const char * glfwGetGamepadName(int jid)</div><div class="ttdoc">Returns the human-readable gamepad name for the specified joystick.</div></div>
+</div><!-- fragment --><p >To retrieve the gamepad state of a joystick, call <a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> state;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a>(<a class="code hl_define" href="group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654">GLFW_JOYSTICK_3</a>, &amp;state))</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (state.<a class="code hl_variable" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a>[<a class="code hl_define" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a>])</div>
+<div class="line"> {</div>
+<div class="line"> input_jump();</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> input_speed(state.<a class="code hl_variable" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a>[<a class="code hl_define" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a>]);</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__gamepad__axes_html_ga121a7d5d20589a423cd1634dd6ee6eab"><div class="ttname"><a href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></div><div class="ttdeci">#define GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</div><div class="ttdef"><b>Definition:</b> glfw3.h:653</div></div>
+<div class="ttc" id="agroup__gamepad__buttons_html_gae055a12fbf4b48b5954c8e1cd129b810"><div class="ttname"><a href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></div><div class="ttdeci">#define GLFW_GAMEPAD_BUTTON_A</div><div class="ttdef"><b>Definition:</b> glfw3.h:618</div></div>
+<div class="ttc" id="agroup__input_html_gadccddea8bce6113fa459de379ddaf051"><div class="ttname"><a href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></div><div class="ttdeci">int glfwGetGamepadState(int jid, GLFWgamepadstate *state)</div><div class="ttdoc">Retrieves the state of the specified joystick remapped as a gamepad.</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html"><div class="ttname"><a href="structGLFWgamepadstate.html">GLFWgamepadstate</a></div><div class="ttdoc">Gamepad input state.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1745</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html_a27e9896b51c65df15fba2c7139bfdb9a"><div class="ttname"><a href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">GLFWgamepadstate::buttons</a></div><div class="ttdeci">unsigned char buttons[15]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1749</div></div>
+<div class="ttc" id="astructGLFWgamepadstate_html_a8b2c8939b1d31458de5359998375c189"><div class="ttname"><a href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">GLFWgamepadstate::axes</a></div><div class="ttdeci">float axes[6]</div><div class="ttdef"><b>Definition:</b> glfw3.h:1753</div></div>
+</div><!-- fragment --><p >The <a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a> struct has two arrays; one for button states and one for axis states. The values for each button and axis are the same as for the <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> and <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> functions, i.e. <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code> for buttons and -1.0 to 1.0 inclusive for axes.</p>
+<p >The sizes of the arrays and the positions within each array are fixed.</p>
+<p >The <a class="el" href="group__gamepad__buttons.html">button indices</a> are <code>GLFW_GAMEPAD_BUTTON_A</code>, <code>GLFW_GAMEPAD_BUTTON_B</code>, <code>GLFW_GAMEPAD_BUTTON_X</code>, <code>GLFW_GAMEPAD_BUTTON_Y</code>, <code>GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</code>, <code>GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</code>, <code>GLFW_GAMEPAD_BUTTON_BACK</code>, <code>GLFW_GAMEPAD_BUTTON_START</code>, <code>GLFW_GAMEPAD_BUTTON_GUIDE</code>, <code>GLFW_GAMEPAD_BUTTON_LEFT_THUMB</code>, <code>GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_UP</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</code>, <code>GLFW_GAMEPAD_BUTTON_DPAD_DOWN</code> and <code>GLFW_GAMEPAD_BUTTON_DPAD_LEFT</code>.</p>
+<p >For those who prefer, there are also the <code>GLFW_GAMEPAD_BUTTON_CROSS</code>, <code>GLFW_GAMEPAD_BUTTON_CIRCLE</code>, <code>GLFW_GAMEPAD_BUTTON_SQUARE</code> and <code>GLFW_GAMEPAD_BUTTON_TRIANGLE</code> aliases for the A, B, X and Y button indices.</p>
+<p >The <a class="el" href="group__gamepad__axes.html">axis indices</a> are <code>GLFW_GAMEPAD_AXIS_LEFT_X</code>, <code>GLFW_GAMEPAD_AXIS_LEFT_Y</code>, <code>GLFW_GAMEPAD_AXIS_RIGHT_X</code>, <code>GLFW_GAMEPAD_AXIS_RIGHT_Y</code>, <code>GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</code> and <code>GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</code>.</p>
+<p >The <code>GLFW_GAMEPAD_BUTTON_LAST</code> and <code>GLFW_GAMEPAD_AXIS_LAST</code> constants equal the largest available index for each array.</p>
+<h2><a class="anchor" id="gamepad_mapping"></a>
+Gamepad mappings</h2>
+<p >GLFW contains a copy of the mappings available in <a href="https://github.com/gabomdq/SDL_GameControllerDB">SDL_GameControllerDB</a> at the time of release. Newer ones can be added at runtime with <a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* mappings = load_file_contents(<span class="stringliteral">&quot;game/data/gamecontrollerdb.txt&quot;</span>);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a>(mappings);</div>
+<div class="ttc" id="agroup__input_html_gaed5104612f2fa8e66aa6e846652ad00f"><div class="ttname"><a href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></div><div class="ttdeci">int glfwUpdateGamepadMappings(const char *string)</div><div class="ttdoc">Adds the specified SDL_GameControllerDB gamepad mappings.</div></div>
+</div><!-- fragment --><p >This function supports everything from single lines up to and including the unmodified contents of the whole <code>gamecontrollerdb.txt</code> file.</p>
+<p >If you are compiling GLFW from source with CMake you can update the built-in mappings by building the <em>update_mappings</em> target. This runs the <code>GenerateMappings.cmake</code> CMake script, which downloads <code>gamecontrollerdb.txt</code> and regenerates the <code>mappings.h</code> header file.</p>
+<p >Below is a description of the mapping format. Please keep in mind that <b>this description is not authoritative</b>. The format is defined by the SDL and SDL_GameControllerDB projects and their documentation and code takes precedence.</p>
+<p >Each mapping is a single line of comma-separated values describing the GUID, name and layout of the gamepad. Lines that do not begin with a hexadecimal digit are ignored.</p>
+<p >The first value is always the gamepad GUID, a 32 character long hexadecimal string that typically identifies its make, model, revision and the type of connection to the computer. When this information is not available, the GUID is generated using the gamepad name. GLFW uses the SDL 2.0.5+ GUID format but can convert from the older formats.</p>
+<p >The second value is always the human-readable name of the gamepad.</p>
+<p >All subsequent values are in the form <code>&lt;field&gt;:&lt;value&gt;</code> and describe the layout of the mapping. These fields may not all be present and may occur in any order.</p>
+<p >The button fields are <code>a</code>, <code>b</code>, <code>x</code>, <code>y</code>, <code>back</code>, <code>start</code>, <code>guide</code>, <code>dpup</code>, <code>dpright</code>, <code>dpdown</code>, <code>dpleft</code>, <code>leftshoulder</code>, <code>rightshoulder</code>, <code>leftstick</code> and <code>rightstick</code>.</p>
+<p >The axis fields are <code>leftx</code>, <code>lefty</code>, <code>rightx</code>, <code>righty</code>, <code>lefttrigger</code> and <code>righttrigger</code>.</p>
+<p >The value of an axis or button field can be a joystick button, a joystick axis, a hat bitmask or empty. Joystick buttons are specified as <code>bN</code>, for example <code>b2</code> for the third button. Joystick axes are specified as <code>aN</code>, for example <code>a7</code> for the eighth button. Joystick hat bit masks are specified as <code>hN.N</code>, for example <code>h0.8</code> for left on the first hat. More than one bit may be set in the mask.</p>
+<p >Before an axis there may be a <code>+</code> or <code>-</code> range modifier, for example <code>+a3</code> for the positive half of the fourth axis. This restricts input to only the positive or negative halves of the joystick axis. After an axis or half-axis there may be the <code>~</code> inversion modifier, for example <code>a2~</code> or <code>-a7~</code>. This negates the values of the gamepad axis.</p>
+<p >The hat bit mask match the <a class="el" href="group__hat__state.html">hat states</a> in the joystick functions.</p>
+<p >There is also the special <code>platform</code> field that specifies which platform the mapping is valid for. Possible values are <code>Windows</code>, <code>Mac OS X</code> and <code>Linux</code>.</p>
+<p >Below is an example of what a gamepad mapping might look like. It is the one built into GLFW for Xbox controllers accessed via the XInput API on Windows. This example has been broken into several lines to fit on the page, but real gamepad mappings must be a single line.</p>
+<div class="fragment"><div class="line">78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,</div>
+<div class="line">b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,</div>
+<div class="line">rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,</div>
+<div class="line">righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,</div>
+</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>GLFW does not yet support the output range and modifiers <code>+</code> and <code>-</code> that were recently added to SDL. The input modifiers <code>+</code>, <code>-</code> and <code>~</code> are supported and described above.</dd></dl>
+<h1><a class="anchor" id="time"></a>
+Time input</h1>
+<p >GLFW provides high-resolution time input, in seconds, with <a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">double</span> seconds = <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>();</div>
+<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
+</div><!-- fragment --><p >It returns the number of seconds since the library was initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>. The platform-specific time sources used typically have micro- or nanosecond resolution.</p>
+<p >You can modify the base time with <a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a>(4.0);</div>
+<div class="ttc" id="agroup__input_html_gaf59589ef6e8b8c8b5ad184b25afd4dc0"><div class="ttname"><a href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></div><div class="ttdeci">void glfwSetTime(double time)</div><div class="ttdoc">Sets the GLFW time.</div></div>
+</div><!-- fragment --><p >This sets the time to the specified time, in seconds, and it continues to count from there.</p>
+<p >You can also access the raw timer used to implement the functions above, with <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>.</p>
+<div class="fragment"><div class="line">uint64_t value = <a class="code hl_function" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a>();</div>
+<div class="ttc" id="agroup__input_html_ga09b2bd37d328e0b9456c7ec575cc26aa"><div class="ttname"><a href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></div><div class="ttdeci">uint64_t glfwGetTimerValue(void)</div><div class="ttdoc">Returns the current value of the raw timer.</div></div>
+</div><!-- fragment --><p >This value is in 1&#160;/&#160;frequency seconds. The frequency of the raw timer varies depending on the operating system and hardware. You can query the frequency, in Hz, with <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
+<div class="fragment"><div class="line">uint64_t frequency = <a class="code hl_function" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>();</div>
+<div class="ttc" id="agroup__input_html_ga3289ee876572f6e91f06df3a24824443"><div class="ttname"><a href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></div><div class="ttdeci">uint64_t glfwGetTimerFrequency(void)</div><div class="ttdoc">Returns the frequency, in Hz, of the raw timer.</div></div>
+</div><!-- fragment --><h1><a class="anchor" id="clipboard"></a>
+Clipboard input and output</h1>
+<p >If the system clipboard contains a UTF-8 encoded string or if it can be converted to one, you can retrieve it with <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>. See the reference documentation for the lifetime of the returned string.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* text = <a class="code hl_function" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>(NULL);</div>
+<div class="line"><span class="keywordflow">if</span> (text)</div>
+<div class="line">{</div>
+<div class="line"> insert_text(text);</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__input_html_ga71a5b20808ea92193d65c21b82580355"><div class="ttname"><a href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a></div><div class="ttdeci">const char * glfwGetClipboardString(GLFWwindow *window)</div><div class="ttdoc">Returns the contents of the clipboard as a string.</div></div>
+</div><!-- fragment --><p >If the clipboard is empty or if its contents could not be converted, <code>NULL</code> is returned.</p>
+<p >The contents of the system clipboard can be set to a UTF-8 encoded string with <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a>(NULL, <span class="stringliteral">&quot;A string with words in it&quot;</span>);</div>
+<div class="ttc" id="agroup__input_html_gaba1f022c5eb07dfac421df34cdcd31dd"><div class="ttname"><a href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a></div><div class="ttdeci">void glfwSetClipboardString(GLFWwindow *window, const char *string)</div><div class="ttdoc">Sets the clipboard to the specified string.</div></div>
+</div><!-- fragment --><h1><a class="anchor" id="path_drop"></a>
+Path drop input</h1>
+<p >If you wish to receive the paths of files and/or directories dropped on a window, set a file drop callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>(window, drop_callback);</div>
+<div class="ttc" id="agroup__input_html_gab773f0ee0a07cff77a210cea40bc1f6b"><div class="ttname"><a href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a></div><div class="ttdeci">GLFWdropfun glfwSetDropCallback(GLFWwindow *window, GLFWdropfun callback)</div><div class="ttdoc">Sets the path drop callback.</div></div>
+</div><!-- fragment --><p >The callback function receives an array of paths encoded as UTF-8.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> drop_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> count, <span class="keyword">const</span> <span class="keywordtype">char</span>** paths)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordtype">int</span> i;</div>
+<div class="line"> <span class="keywordflow">for</span> (i = 0; i &lt; count; i++)</div>
+<div class="line"> handle_dropped_file(paths[i]);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >The path array and its strings are only valid until the file drop callback returns, as they may have been generated specifically for that event. You need to make a deep copy of the array if you want to keep the paths. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/internal_8dox.html b/libs/glfw-3.3.8/docs/html/internal_8dox.html
new file mode 100644
index 0000000..9c401ab
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/internal_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: internal.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">internal.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/internals_guide.html b/libs/glfw-3.3.8/docs/html/internals_guide.html
new file mode 100644
index 0000000..6d96b4d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/internals_guide.html
@@ -0,0 +1,125 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Internal structure</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Internal structure </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#internals_public">Public interface</a></li>
+<li class="level1"><a href="#internals_native">Native interface</a></li>
+<li class="level1"><a href="#internals_internal">Internal interface</a></li>
+<li class="level1"><a href="#internals_platform">Platform interface</a></li>
+<li class="level1"><a href="#internals_event">Event interface</a></li>
+<li class="level1"><a href="#internals_static">Static functions</a></li>
+<li class="level1"><a href="#internals_config">Configuration macros</a></li>
+</ul>
+</div>
+<div class="textblock"><p >There are several interfaces inside GLFW. Each interface has its own area of responsibility and its own naming conventions.</p>
+<h1><a class="anchor" id="internals_public"></a>
+Public interface</h1>
+<p >The most well-known is the public interface, described in the <a class="el" href="glfw3_8h.html" title="The header of the GLFW 3 API.">glfw3.h</a> header file. This is implemented in source files shared by all platforms and these files contain no platform-specific code. This code usually ends up calling the platform and internal interfaces to do the actual work.</p>
+<p >The public interface uses the OpenGL naming conventions except with GLFW and glfw instead of GL and gl. For struct members, where OpenGL sets no precedent, it use headless camel case.</p>
+<p >Examples: <code>glfwCreateWindow</code>, <code>GLFWwindow</code>, <code>GLFW_RED_BITS</code></p>
+<h1><a class="anchor" id="internals_native"></a>
+Native interface</h1>
+<p >The <a class="el" href="group__native.html">native interface</a> is a small set of publicly available but platform-specific functions, described in the <a class="el" href="glfw3native_8h.html" title="The header of the native access functions.">glfw3native.h</a> header file and used to gain access to the underlying window, context and (on some platforms) display handles used by the platform interface.</p>
+<p >The function names of the native interface are similar to those of the public interface, but embeds the name of the interface that the returned handle is from.</p>
+<p >Examples: <code>glfwGetX11Window</code>, <code>glfwGetWGLContext</code></p>
+<h1><a class="anchor" id="internals_internal"></a>
+Internal interface</h1>
+<p >The internal interface consists of utility functions used by all other interfaces. It is shared code implemented in the same shared source files as the public and event interfaces. The internal interface is described in the internal.h header file.</p>
+<p >The internal interface is in charge of GLFW's global data, which it stores in a <code>_GLFWlibrary</code> struct named <code>_glfw</code>.</p>
+<p >The internal interface uses the same style as the public interface, except all global names have a leading underscore.</p>
+<p >Examples: <code>_glfwIsValidContextConfig</code>, <code>_GLFWwindow</code>, <code>_glfw.monitorCount</code></p>
+<h1><a class="anchor" id="internals_platform"></a>
+Platform interface</h1>
+<p >The platform interface implements all platform-specific operations as a service to the public interface. This includes event processing. The platform interface is never directly called by application code and never directly calls application-provided callbacks. It is also prohibited from modifying the platform-independent part of the internal structs. Instead, it calls the event interface when events interesting to GLFW are received.</p>
+<p >The platform interface mirrors those parts of the public interface that needs to perform platform-specific operations on some or all platforms. The are also named the same except that the glfw function prefix is replaced by _glfwPlatform.</p>
+<p >Examples: <code>_glfwPlatformCreateWindow</code></p>
+<p >The platform interface also defines structs that contain platform-specific global and per-object state. Their names mirror those of the internal interface, except that an interface-specific suffix is added.</p>
+<p >Examples: <code>_GLFWwindowX11</code>, <code>_GLFWcontextWGL</code></p>
+<p >These structs are incorporated as members into the internal interface structs using special macros that name them after the specific interface used. This prevents shared code from accidentally using these members.</p>
+<p >Examples: <code>window-&gt;win32.handle</code>, <code>_glfw.x11.display</code></p>
+<h1><a class="anchor" id="internals_event"></a>
+Event interface</h1>
+<p >The event interface is implemented in the same shared source files as the public interface and is responsible for delivering the events it receives to the application, either via callbacks, via window state changes or both.</p>
+<p >The function names of the event interface use a <code>_glfwInput</code> prefix and the ObjectEvent pattern.</p>
+<p >Examples: <code>_glfwInputWindowFocus</code>, <code>_glfwInputCursorPos</code></p>
+<h1><a class="anchor" id="internals_static"></a>
+Static functions</h1>
+<p >Static functions may be used by any interface and have no prefixes or suffixes. These use headless camel case.</p>
+<p >Examples: <code>isValidElementForJoystick</code></p>
+<h1><a class="anchor" id="internals_config"></a>
+Configuration macros</h1>
+<p >GLFW uses a number of configuration macros to select at compile time which interfaces and code paths to use. They are defined in the glfw_config.h header file, which is generated from the <code>glfw_config.h.in</code> file by CMake.</p>
+<p >Configuration macros the same style as tokens in the public interface, except with a leading underscore.</p>
+<p >Examples: <code>_GLFW_WIN32</code>, <code>_GLFW_BUILD_DLL</code> </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/intro_8dox.html b/libs/glfw-3.3.8/docs/html/intro_8dox.html
new file mode 100644
index 0000000..6bf836e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/intro_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: intro.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">intro.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/intro_guide.html b/libs/glfw-3.3.8/docs/html/intro_guide.html
new file mode 100644
index 0000000..7ca3f1e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/intro_guide.html
@@ -0,0 +1,329 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Introduction to the API</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Introduction to the API </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#intro_init">Initialization and termination</a><ul><li class="level2"><a href="#intro_init_init">Initializing GLFW</a></li>
+<li class="level2"><a href="#init_hints">Initialization hints</a><ul><li class="level3"><a href="#init_hints_shared">Shared init hints</a></li>
+<li class="level3"><a href="#init_hints_osx">macOS specific init hints</a></li>
+<li class="level3"><a href="#init_hints_values">Supported and default values</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#intro_init_terminate">Terminating GLFW</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#error_handling">Error handling</a></li>
+<li class="level1"><a href="#coordinate_systems">Coordinate systems</a></li>
+<li class="level1"><a href="#guarantees_limitations">Guarantees and limitations</a><ul><li class="level2"><a href="#lifetime">Pointer lifetimes</a></li>
+<li class="level2"><a href="#reentrancy">Reentrancy</a></li>
+<li class="level2"><a href="#thread_safety">Thread safety</a></li>
+<li class="level2"><a href="#compatibility">Version compatibility</a></li>
+<li class="level2"><a href="#event_order">Event order</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#intro_version">Version management</a><ul><li class="level2"><a href="#intro_version_compile">Compile-time version</a></li>
+<li class="level2"><a href="#intro_version_runtime">Run-time version</a></li>
+<li class="level2"><a href="#intro_version_string">Version string</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><p >This guide introduces the basic concepts of GLFW and describes initialization, error handling and API guarantees and limitations. For a broad but shallow tutorial, see <a class="el" href="quick_guide.html">Getting started</a> instead. For details on a specific function in this category, see the <a class="el" href="group__init.html">Initialization, version and error reference</a>.</p>
+<p >There are also guides for the other areas of GLFW.</p>
+<ul>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<h1><a class="anchor" id="intro_init"></a>
+Initialization and termination</h1>
+<p >Before most GLFW functions may be called, the library must be initialized. This initialization checks what features are available on the machine, enumerates monitors and joysticks, initializes the timer and performs any required platform-specific initialization.</p>
+<p >Only the following functions may be called before the library has been successfully initialized, and only from the main thread.</p>
+<ul>
+<li><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></li>
+<li><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></li>
+<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
+<li><a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></li>
+<li><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></li>
+<li><a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></li>
+<li><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></li>
+</ul>
+<p >Calling any other function before successful initialization will cause a <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> error.</p>
+<h2><a class="anchor" id="intro_init_init"></a>
+Initializing GLFW</h2>
+<p >The library is initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>, which returns <code>GLFW_FALSE</code> if an error occurred.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Handle initialization failure</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
+</div><!-- fragment --><p >If any part of initialization fails, any parts that succeeded are terminated as if <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> had been called. The library only needs to be initialized once and additional calls to an already initialized library will return <code>GLFW_TRUE</code> immediately.</p>
+<p >Once the library has been successfully initialized, it should be terminated before the application exits. Modern systems are very good at freeing resources allocated by programs that exit, but GLFW sometimes has to change global system settings and these might not be restored without termination.</p>
+<h2><a class="anchor" id="init_hints"></a>
+Initialization hints</h2>
+<p >Initialization hints are set before <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> and affect how the library behaves until termination. Hints are set with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>(<a class="code hl_define" href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+<div class="ttc" id="agroup__init_html_ga110fd1d3f0412822b4f1908c026f724a"><div class="ttname"><a href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></div><div class="ttdeci">void glfwInitHint(int hint, int value)</div><div class="ttdoc">Sets the specified init hint to the desired value.</div></div>
+<div class="ttc" id="agroup__init_html_gab9c0534709fda03ec8959201da3a9a18"><div class="ttname"><a href="group__init.html#gab9c0534709fda03ec8959201da3a9a18">GLFW_JOYSTICK_HAT_BUTTONS</a></div><div class="ttdeci">#define GLFW_JOYSTICK_HAT_BUTTONS</div><div class="ttdoc">Joystick hat buttons init hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1115</div></div>
+<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:321</div></div>
+</div><!-- fragment --><p >The values you set hints to are never reset by GLFW, but they only take effect during initialization. Once GLFW has been initialized, any values you set will be ignored until the library is terminated and initialized again.</p>
+<p >Some hints are platform specific. These may be set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or functions.</p>
+<h3><a class="anchor" id="init_hints_shared"></a>
+Shared init hints</h3>
+<p ><a class="anchor" id="GLFW_JOYSTICK_HAT_BUTTONS"></a><b>GLFW_JOYSTICK_HAT_BUTTONS</b> specifies whether to also expose joystick hats as buttons, for compatibility with earlier versions of GLFW that did not have <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<h3><a class="anchor" id="init_hints_osx"></a>
+macOS specific init hints</h3>
+<p ><a class="anchor" id="GLFW_COCOA_CHDIR_RESOURCES_hint"></a><b>GLFW_COCOA_CHDIR_RESOURCES</b> specifies whether to set the current directory to the application to the <code>Contents/Resources</code> subdirectory of the application's bundle, if present. Set this with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
+<p ><a class="anchor" id="GLFW_COCOA_MENUBAR_hint"></a><b>GLFW_COCOA_MENUBAR</b> specifies whether to create a basic menu bar, either from a nib or manually, when the first window is created, which is when AppKit is initialized. Set this with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>.</p>
+<h3><a class="anchor" id="init_hints_values"></a>
+Supported and default values</h3>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Initialization hint </th><th class="markdownTableHeadNone">Default value </th><th class="markdownTableHeadNone">Supported values </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+</table>
+<h2><a class="anchor" id="intro_init_terminate"></a>
+Terminating GLFW</h2>
+<p >Before your application exits, you should terminate the GLFW library if it has been initialized. This is done with <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
+<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
+</div><!-- fragment --><p >This will destroy any remaining window, monitor and cursor objects, restore any modified gamma ramps, re-enable the screensaver if it had been disabled and free any other resources allocated by GLFW.</p>
+<p >Once the library is terminated, it is as if it had never been initialized and you will need to initialize it again before being able to use GLFW. If the library was not initialized or had already been terminated, it return immediately.</p>
+<h1><a class="anchor" id="error_handling"></a>
+Error handling</h1>
+<p >Some GLFW functions have return values that indicate an error, but this is often not very helpful when trying to figure out what happened or why it occurred. Other functions have no return value reserved for errors, so error notification needs a separate channel. Finally, far from all GLFW functions have return values.</p>
+<p >The last <a class="el" href="group__errors.html">error code</a> for the calling thread can be queried at any time with <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> code = <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(NULL);</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordflow">if</span> (code != <a class="code hl_define" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a>)</div>
+<div class="line"> handle_error(code);</div>
+<div class="ttc" id="agroup__errors_html_gafa30deee5db4d69c4c93d116ed87dbf4"><div class="ttname"><a href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a></div><div class="ttdeci">#define GLFW_NO_ERROR</div><div class="ttdoc">No error has occurred.</div><div class="ttdef"><b>Definition:</b> glfw3.h:670</div></div>
+<div class="ttc" id="agroup__init_html_ga944986b4ec0b928d488141f92982aa18"><div class="ttname"><a href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></div><div class="ttdeci">int glfwGetError(const char **description)</div><div class="ttdoc">Returns and clears the last error for the calling thread.</div></div>
+</div><!-- fragment --><p >If no error has occurred since the last call, <a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a> (zero) is returned. The error is cleared before the function returns.</p>
+<p >The error code indicates the general category of the error. Some error codes, such as <a class="el" href="group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a">GLFW_NOT_INITIALIZED</a> has only a single meaning, whereas others like <a class="el" href="group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1">GLFW_PLATFORM_ERROR</a> are used for many different errors.</p>
+<p >GLFW often has more information about an error than its general category. You can retrieve a UTF-8 encoded human-readable description along with the error code. If no error has occurred since the last call, the description is set to <code>NULL</code>.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* description;</div>
+<div class="line"><span class="keywordtype">int</span> code = <a class="code hl_function" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>(&amp;description);</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordflow">if</span> (description)</div>
+<div class="line"> display_error_message(code, description);</div>
+</div><!-- fragment --><p >The retrieved description string is only valid until the next error occurs. This means you must make a copy of it if you want to keep it.</p>
+<p >You can also set an error callback, which will be called each time an error occurs. It is set with <a class="el" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
+<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
+</div><!-- fragment --><p >The error callback receives the same error code and human-readable description returned by <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> code, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
+<div class="line">{</div>
+<div class="line"> display_error_message(code, description);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >The error callback is called after the error is stored, so calling <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a> from within the error callback returns the same values as the callback argument.</p>
+<p >The description string passed to the callback is only valid until the error callback returns. This means you must make a copy of it if you want to keep it.</p>
+<p ><b>Reported errors are never fatal.</b> As long as GLFW was successfully initialized, it will remain initialized and in a safe state until terminated regardless of how many errors occur. If an error occurs during initialization that causes <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a> to fail, any part of the library that was initialized will be safely terminated.</p>
+<p >Do not rely on a currently invalid call to generate a specific error, as in the future that same call may generate a different error or become valid.</p>
+<h1><a class="anchor" id="coordinate_systems"></a>
+Coordinate systems</h1>
+<p >GLFW has two primary coordinate systems: the <em>virtual screen</em> and the window <em>content area</em> or <em>content area</em>. Both use the same unit: <em>virtual screen coordinates</em>, or just <em>screen coordinates</em>, which don't necessarily correspond to pixels.</p>
+<p ><img src="spaces.svg" alt="" style="pointer-events: none;" width="90%" class="inline"/></p>
+<p >Both the virtual screen and the content area coordinate systems have the X-axis pointing to the right and the Y-axis pointing down.</p>
+<p >Window and monitor positions are specified as the position of the upper-left corners of their content areas relative to the virtual screen, while cursor positions are specified relative to a window's content area.</p>
+<p >Because the origin of the window's content area coordinate system is also the point from which the window position is specified, you can translate content area coordinates to the virtual screen by adding the window position. The window frame, when present, extends out from the content area but does not affect the window position.</p>
+<p >Almost all positions and sizes in GLFW are measured in screen coordinates relative to one of the two origins above. This includes cursor positions, window positions and sizes, window frame sizes, monitor positions and video mode resolutions.</p>
+<p >Two exceptions are the <a class="el" href="monitor_guide.html#monitor_size">monitor physical size</a>, which is measured in millimetres, and <a class="el" href="window_guide.html#window_fbsize">framebuffer size</a>, which is measured in pixels.</p>
+<p >Pixels and screen coordinates may map 1:1 on your machine, but they won't on every other machine, for example on a Mac with a Retina display. The ratio between screen coordinates and pixels may also change at run-time depending on which monitor the window is currently considered to be on.</p>
+<h1><a class="anchor" id="guarantees_limitations"></a>
+Guarantees and limitations</h1>
+<p >This section describes the conditions under which GLFW can be expected to function, barring bugs in the operating system or drivers. Use of GLFW outside of these limits may work on some platforms, or on some machines, or some of the time, or on some versions of GLFW, but it may break at any time and this will not be considered a bug.</p>
+<h2><a class="anchor" id="lifetime"></a>
+Pointer lifetimes</h2>
+<p >GLFW will never free any pointer you provide to it and you must never free any pointer it provides to you.</p>
+<p >Many GLFW functions return pointers to dynamically allocated structures, strings or arrays, and some callbacks are provided with strings or arrays. These are always managed by GLFW and should never be freed by the application. The lifetime of these pointers is documented for each GLFW function and callback. If you need to keep this data, you must copy it before its lifetime expires.</p>
+<p >Many GLFW functions accept pointers to structures or strings allocated by the application. These are never freed by GLFW and are always the responsibility of the application. If GLFW needs to keep the data in these structures or strings, it is copied before the function returns.</p>
+<p >Pointer lifetimes are guaranteed not to be shortened in future minor or patch releases.</p>
+<h2><a class="anchor" id="reentrancy"></a>
+Reentrancy</h2>
+<p >GLFW event processing and object destruction are not reentrant. This means that the following functions must not be called from any callback function:</p>
+<ul>
+<li><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></li>
+<li><a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a></li>
+<li><a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></li>
+<li><a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a></li>
+<li><a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a></li>
+<li><a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></li>
+</ul>
+<p >These functions may be made reentrant in future minor or patch releases, but functions not on this list will not be made non-reentrant.</p>
+<h2><a class="anchor" id="thread_safety"></a>
+Thread safety</h2>
+<p >Most GLFW functions must only be called from the main thread (the thread that calls main), but some may be called from any thread once the library has been initialized. Before initialization the whole library is thread-unsafe.</p>
+<p >The reference documentation for every GLFW function states whether it is limited to the main thread.</p>
+<p >Initialization, termination, event processing and the creation and destruction of windows, cursors and OpenGL and OpenGL ES contexts are all restricted to the main thread due to limitations of one or several platforms.</p>
+<p >Because event processing must be performed on the main thread, all callbacks except for the error callback will only be called on that thread. The error callback may be called on any thread, as any GLFW function may generate errors.</p>
+<p >The error code and description may be queried from any thread.</p>
+<ul>
+<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
+</ul>
+<p >Empty events may be posted from any thread.</p>
+<ul>
+<li><a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a></li>
+</ul>
+<p >The window user pointer and close flag may be read and written from any thread, but this is not synchronized by GLFW.</p>
+<ul>
+<li><a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a></li>
+<li><a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a></li>
+<li><a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></li>
+<li><a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></li>
+</ul>
+<p >These functions for working with OpenGL and OpenGL ES contexts may be called from any thread, but the window object is not synchronized by GLFW.</p>
+<ul>
+<li><a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></li>
+<li><a class="el" href="group__context.html#gad94e80185397a6cf5fe2ab30567af71c">glfwGetCurrentContext</a></li>
+<li><a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></li>
+<li><a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></li>
+<li><a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a></li>
+<li><a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></li>
+</ul>
+<p >The raw timer functions may be called from any thread.</p>
+<ul>
+<li><a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a></li>
+<li><a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a></li>
+</ul>
+<p >The regular timer may be used from any thread, but reading and writing the timer offset is not synchronized by GLFW.</p>
+<ul>
+<li><a class="el" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></li>
+<li><a class="el" href="group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0">glfwSetTime</a></li>
+</ul>
+<p >Library version information may be queried from any thread.</p>
+<ul>
+<li><a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></li>
+<li><a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a></li>
+</ul>
+<p >All Vulkan related functions may be called from any thread.</p>
+<ul>
+<li><a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></li>
+<li><a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></li>
+<li><a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></li>
+<li><a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></li>
+<li><a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></li>
+</ul>
+<p >GLFW uses synchronization objects internally only to manage the per-thread context and error states. Additional synchronization is left to the application.</p>
+<p >Functions that may currently be called from any thread will always remain so, but functions that are currently limited to the main thread may be updated to allow calls from any thread in future releases.</p>
+<h2><a class="anchor" id="compatibility"></a>
+Version compatibility</h2>
+<p >GLFW uses <a href="https://semver.org/">Semantic Versioning</a>. This guarantees source and binary backward compatibility with earlier minor versions of the API. This means that you can drop in a newer version of the library and existing programs will continue to compile and existing binaries will continue to run.</p>
+<p >Once a function or constant has been added, the signature of that function or value of that constant will remain unchanged until the next major version of GLFW. No compatibility of any kind is guaranteed between major versions.</p>
+<p >Undocumented behavior, i.e. behavior that is not described in the documentation, may change at any time until it is documented.</p>
+<p >If the reference documentation and the implementation differ, the reference documentation will almost always take precedence and the implementation will be fixed in the next release. The reference documentation will also take precedence over anything stated in a guide.</p>
+<h2><a class="anchor" id="event_order"></a>
+Event order</h2>
+<p >The order of arrival of related events is not guaranteed to be consistent across platforms. The exception is synthetic key and mouse button release events, which are always delivered after the window defocus event.</p>
+<h1><a class="anchor" id="intro_version"></a>
+Version management</h1>
+<p >GLFW provides mechanisms for identifying what version of GLFW your application was compiled against as well as what version it is currently running against. If you are loading GLFW dynamically (not just linking dynamically), you can use this to verify that the library binary is compatible with your application.</p>
+<h2><a class="anchor" id="intro_version_compile"></a>
+Compile-time version</h2>
+<p >The compile-time version of GLFW is provided by the GLFW header with the <code>GLFW_VERSION_MAJOR</code>, <code>GLFW_VERSION_MINOR</code> and <code>GLFW_VERSION_REVISION</code> macros.</p>
+<div class="fragment"><div class="line">printf(<span class="stringliteral">&quot;Compiled against GLFW %i.%i.%i\n&quot;</span>,</div>
+<div class="line"> <a class="code hl_define" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a>,</div>
+<div class="line"> <a class="code hl_define" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>,</div>
+<div class="line"> <a class="code hl_define" href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a>);</div>
+<div class="ttc" id="agroup__init_html_ga6337d9ea43b22fc529b2bba066b4a576"><div class="ttname"><a href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a></div><div class="ttdeci">#define GLFW_VERSION_MAJOR</div><div class="ttdoc">The major version number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:287</div></div>
+<div class="ttc" id="agroup__init_html_gab72ae2e2035d9ea461abc3495eac0502"><div class="ttname"><a href="group__init.html#gab72ae2e2035d9ea461abc3495eac0502">GLFW_VERSION_REVISION</a></div><div class="ttdeci">#define GLFW_VERSION_REVISION</div><div class="ttdoc">The revision number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:301</div></div>
+<div class="ttc" id="agroup__init_html_gaf80d40f0aea7088ff337606e9c48f7a3"><div class="ttname"><a href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a></div><div class="ttdeci">#define GLFW_VERSION_MINOR</div><div class="ttdoc">The minor version number of the GLFW header.</div><div class="ttdef"><b>Definition:</b> glfw3.h:294</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="intro_version_runtime"></a>
+Run-time version</h2>
+<p >The run-time version can be retrieved with <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>, a function that may be called regardless of whether GLFW is initialized.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> major, minor, revision;</div>
+<div class="line"><a class="code hl_function" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a>(&amp;major, &amp;minor, &amp;revision);</div>
+<div class="line"> </div>
+<div class="line">printf(<span class="stringliteral">&quot;Running against GLFW %i.%i.%i\n&quot;</span>, major, minor, revision);</div>
+<div class="ttc" id="agroup__init_html_ga9f8ffaacf3c269cc48eafbf8b9b71197"><div class="ttname"><a href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a></div><div class="ttdeci">void glfwGetVersion(int *major, int *minor, int *rev)</div><div class="ttdoc">Retrieves the version of the GLFW library.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="intro_version_string"></a>
+Version string</h2>
+<p >GLFW 3 also provides a compile-time generated version string that describes the version, platform, compiler and any platform-specific compile-time options. This is primarily intended for submitting bug reports, to allow developers to see which code paths are enabled in a binary.</p>
+<p >The version string is returned by <a class="el" href="group__init.html#ga026abd003c8e6501981ab1662062f1c0">glfwGetVersionString</a>, a function that may be called regardless of whether GLFW is initialized.</p>
+<p ><b>Do not use the version string</b> to parse the GLFW library version. The <a class="el" href="group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197">glfwGetVersion</a> function already provides the version of the running library binary.</p>
+<p >The format of the string is as follows:</p><ul>
+<li>The version of GLFW</li>
+<li>The name of the window system API</li>
+<li>The name of the context creation API</li>
+<li>Any additional options or APIs</li>
+</ul>
+<p >For example, when compiling GLFW 3.0 with MinGW using the Win32 and WGL back ends, the version string may look something like this:</p>
+<div class="fragment"><div class="line">3.0.0 Win32 WGL MinGW</div>
+</div><!-- fragment --> </div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/jquery.js b/libs/glfw-3.3.8/docs/html/jquery.js
new file mode 100644
index 0000000..c9ed3d9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ * jquery.ui.widget.js
+ * jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file
diff --git a/libs/glfw-3.3.8/docs/html/main_8dox.html b/libs/glfw-3.3.8/docs/html/main_8dox.html
new file mode 100644
index 0000000..9a4c58b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/main_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: main.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">main.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/menu.js b/libs/glfw-3.3.8/docs/html/menu.js
new file mode 100644
index 0000000..818b859
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/menu.js
@@ -0,0 +1,135 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+ function makeTree(data,relPath) {
+ var result='';
+ if ('children' in data) {
+ result+='<ul>';
+ for (var i in data.children) {
+ var url;
+ var link;
+ link = data.children[i].url;
+ if (link.substring(0,1)=='^') {
+ url = link.substring(1);
+ } else {
+ url = relPath+link;
+ }
+ result+='<li><a href="'+url+'">'+
+ data.children[i].text+'</a>'+
+ makeTree(data.children[i],relPath)+'</li>';
+ }
+ result+='</ul>';
+ }
+ return result;
+ }
+ var searchBox;
+ if (searchEnabled) {
+ if (serverSide) {
+ searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
+ '<div class="left">'+
+ '<form id="FSearchBox" action="'+relPath+searchPage+
+ '" method="get"><img id="MSearchSelect" src="'+
+ relPath+'search/mag.svg" alt=""/>'+
+ '<input type="text" id="MSearchField" name="query" value="'+search+
+ '" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)"'+
+ ' onblur="searchBox.OnSearchFieldFocus(false)">'+
+ '</form>'+
+ '</div>'+
+ '<div class="right"></div>'+
+ '</div>';
+ } else {
+ searchBox='<div id="MSearchBox" class="MSearchBoxInactive">'+
+ '<span class="left">'+
+ '<img id="MSearchSelect" src="'+relPath+
+ 'search/mag_sel.svg" onmouseover="return searchBox.OnSearchSelectShow()"'+
+ ' onmouseout="return searchBox.OnSearchSelectHide()" alt=""/>'+
+ '<input type="text" id="MSearchField" value="'+search+
+ '" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" '+
+ 'onblur="searchBox.OnSearchFieldFocus(false)" '+
+ 'onkeyup="searchBox.OnSearchFieldChange(event)"/>'+
+ '</span>'+
+ '<span class="right"><a id="MSearchClose" '+
+ 'href="javascript:searchBox.CloseResultsWindow()">'+
+ '<img id="MSearchCloseImg" border="0" src="'+relPath+
+ 'search/close.svg" alt=""/></a>'
+ '</span>'
+ '</div>';
+ }
+ }
+
+ $('#main-nav').before('<div class="sm sm-dox"><input id="main-menu-state" type="checkbox"/>'+
+ '<label class="main-menu-btn" for="main-menu-state">'+
+ '<span class="main-menu-btn-icon"></span> '+
+ 'Toggle main menu visibility</label>'+
+ '<span id="searchBoxPos1" style="position:absolute;right:8px;top:8px;height:36px;"></span>'+
+ '</div>');
+ $('#main-nav').append(makeTree(menudata,relPath));
+ $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+ if (searchBox) {
+ $('#main-menu').append('<li id="searchBoxPos2" style="float:right"></li>');
+ }
+ var $mainMenuState = $('#main-menu-state');
+ var prevWidth = 0;
+ if ($mainMenuState.length) {
+ function initResizableIfExists() {
+ if (typeof initResizable==='function') initResizable();
+ }
+ // animate mobile menu
+ $mainMenuState.change(function(e) {
+ var $menu = $('#main-menu');
+ var options = { duration: 250, step: initResizableIfExists };
+ if (this.checked) {
+ options['complete'] = function() { $menu.css('display', 'block') };
+ $menu.hide().slideDown(options);
+ } else {
+ options['complete'] = function() { $menu.css('display', 'none') };
+ $menu.show().slideUp(options);
+ }
+ });
+ // set default menu visibility
+ function resetState() {
+ var $menu = $('#main-menu');
+ var $mainMenuState = $('#main-menu-state');
+ var newWidth = $(window).outerWidth();
+ if (newWidth!=prevWidth) {
+ if ($(window).outerWidth()<768) {
+ $mainMenuState.prop('checked',false); $menu.hide();
+ $('#searchBoxPos1').html(searchBox);
+ $('#searchBoxPos2').hide();
+ } else {
+ $menu.show();
+ $('#searchBoxPos1').empty();
+ $('#searchBoxPos2').html(searchBox);
+ $('#searchBoxPos2').show();
+ }
+ prevWidth = newWidth;
+ }
+ }
+ $(window).ready(function() { resetState(); initResizableIfExists(); });
+ $(window).resize(resetState);
+ }
+ $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/libs/glfw-3.3.8/docs/html/menudata.js b/libs/glfw-3.3.8/docs/html/menudata.js
new file mode 100644
index 0000000..082dbe1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/menudata.js
@@ -0,0 +1,30 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Introduction",url:"index.html"},
+{text:"Tutorial",url:"quick_guide.html"},
+{text:"Guides",url:"pages.html"},
+{text:"Reference",url:"modules.html"},
+{text:"Files",url:"files.html"}]}
diff --git a/libs/glfw-3.3.8/docs/html/modules.html b/libs/glfw-3.3.8/docs/html/modules.html
new file mode 100644
index 0000000..1ef55b0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/modules.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle"><div class="title">Reference</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all modules:</div><div class="directory">
+<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__context.html" target="_self">Context reference</a></td><td class="desc">Functions and types related to OpenGL and OpenGL ES contexts </td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_1_" class="arrow" onclick="toggleFolder('1_')">&#9660;</span><a class="el" href="group__init.html" target="_self">Initialization, version and error reference</a></td><td class="desc">Functions and types related to initialization and error handling </td></tr>
+<tr id="row_1_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__errors.html" target="_self">Error codes</a></td><td class="desc">Error codes </td></tr>
+<tr id="row_2_"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_2_" class="arrow" onclick="toggleFolder('2_')">&#9660;</span><a class="el" href="group__input.html" target="_self">Input reference</a></td><td class="desc">Functions and types related to input handling </td></tr>
+<tr id="row_2_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__gamepad__axes.html" target="_self">Gamepad axes</a></td><td class="desc">Gamepad axes </td></tr>
+<tr id="row_2_1_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__gamepad__buttons.html" target="_self">Gamepad buttons</a></td><td class="desc">Gamepad buttons </td></tr>
+<tr id="row_2_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__hat__state.html" target="_self">Joystick hat states</a></td><td class="desc">Joystick hat states </td></tr>
+<tr id="row_2_3_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__joysticks.html" target="_self">Joysticks</a></td><td class="desc">Joystick IDs </td></tr>
+<tr id="row_2_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__keys.html" target="_self">Keyboard keys</a></td><td class="desc">Keyboard key IDs </td></tr>
+<tr id="row_2_5_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__mods.html" target="_self">Modifier key flags</a></td><td class="desc">Modifier key flags </td></tr>
+<tr id="row_2_6_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__buttons.html" target="_self">Mouse buttons</a></td><td class="desc">Mouse button IDs </td></tr>
+<tr id="row_2_7_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><a class="el" href="group__shapes.html" target="_self">Standard cursor shapes</a></td><td class="desc">Standard system cursor shapes </td></tr>
+<tr id="row_3_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__monitor.html" target="_self">Monitor reference</a></td><td class="desc">Functions and types related to monitors </td></tr>
+<tr id="row_4_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__native.html" target="_self">Native access</a></td><td class="desc">Functions related to accessing native handles </td></tr>
+<tr id="row_5_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__vulkan.html" target="_self">Vulkan support reference</a></td><td class="desc">Functions and types related to Vulkan </td></tr>
+<tr id="row_6_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="group__window.html" target="_self">Window reference</a></td><td class="desc">Functions and types related to windows </td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/monitor_8dox.html b/libs/glfw-3.3.8/docs/html/monitor_8dox.html
new file mode 100644
index 0000000..82aff6b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/monitor_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: monitor.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">monitor.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/monitor_guide.html b/libs/glfw-3.3.8/docs/html/monitor_guide.html
new file mode 100644
index 0000000..76f47a5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/monitor_guide.html
@@ -0,0 +1,222 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Monitor guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Monitor guide </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#monitor_object">Monitor objects</a><ul><li class="level2"><a href="#monitor_monitors">Retrieving monitors</a></li>
+<li class="level2"><a href="#monitor_event">Monitor configuration changes</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#monitor_properties">Monitor properties</a><ul><li class="level2"><a href="#monitor_modes">Video modes</a></li>
+<li class="level2"><a href="#monitor_size">Physical size</a></li>
+<li class="level2"><a href="#monitor_scale">Content scale</a></li>
+<li class="level2"><a href="#monitor_pos">Virtual position</a></li>
+<li class="level2"><a href="#monitor_workarea">Work area</a></li>
+<li class="level2"><a href="#monitor_name">Human-readable name</a></li>
+<li class="level2"><a href="#monitor_userptr">User pointer</a></li>
+<li class="level2"><a href="#monitor_gamma">Gamma ramp</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><p >This guide introduces the monitor related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__monitor.html">Monitor reference</a>. There are also guides for the other areas of GLFW.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<h1><a class="anchor" id="monitor_object"></a>
+Monitor objects</h1>
+<p >A monitor object represents a currently connected monitor and is represented as a pointer to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>. Monitor objects cannot be created or destroyed by the application and retain their addresses until the monitors they represent are disconnected or until the library is <a class="el" href="intro_guide.html#intro_init_terminate">terminated</a>.</p>
+<p >Each monitor has a current video mode, a list of supported video modes, a virtual position, a human-readable name, an estimated physical size and a gamma ramp. One of the monitors is the primary monitor.</p>
+<p >The virtual position of a monitor is in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> and, together with the current video mode, describes the viewports that the connected monitors provide into the virtual desktop that spans them.</p>
+<p >To see how GLFW views your monitor setup and its available video modes, run the <code>monitors</code> test program.</p>
+<h2><a class="anchor" id="monitor_monitors"></a>
+Retrieving monitors</h2>
+<p >The primary monitor is returned by <a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>. It is the user's preferred monitor and is usually the one with global UI elements like task bar or menu bar.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* primary = <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>();</div>
+<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1173</div></div>
+<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
+</div><!-- fragment --><p >You can retrieve all currently connected monitors with <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>. See the reference documentation for the lifetime of the returned array.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
+<div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>** monitors = <a class="code hl_function" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>(&amp;count);</div>
+<div class="ttc" id="agroup__monitor_html_ga70b1156d5d24e9928f145d6c864369d2"><div class="ttname"><a href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a></div><div class="ttdeci">GLFWmonitor ** glfwGetMonitors(int *count)</div><div class="ttdoc">Returns the currently connected monitors.</div></div>
+</div><!-- fragment --><p >The primary monitor is always the first monitor in the returned array, but other monitors may be moved to a different index when a monitor is connected or disconnected.</p>
+<h2><a class="anchor" id="monitor_event"></a>
+Monitor configuration changes</h2>
+<p >If you wish to be notified when a monitor is connected or disconnected, set a monitor callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a>(monitor_callback);</div>
+<div class="ttc" id="agroup__monitor_html_gab39df645587c8518192aa746c2fb06c3"><div class="ttname"><a href="group__monitor.html#gab39df645587c8518192aa746c2fb06c3">glfwSetMonitorCallback</a></div><div class="ttdeci">GLFWmonitorfun glfwSetMonitorCallback(GLFWmonitorfun callback)</div><div class="ttdoc">Sets the monitor configuration callback.</div></div>
+</div><!-- fragment --><p >The callback function receives the handle for the monitor that has been connected or disconnected and the event that occurred.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> monitor_callback(<a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor, <span class="keywordtype">int</span> event)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a>)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The monitor was connected</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (event == <a class="code hl_define" href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a>)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The monitor was disconnected</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+<div class="ttc" id="aglfw3_8h_html_aab64b25921ef21d89252d6f0a71bfc32"><div class="ttname"><a href="glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32">GLFW_DISCONNECTED</a></div><div class="ttdeci">#define GLFW_DISCONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1107</div></div>
+<div class="ttc" id="aglfw3_8h_html_abe11513fd1ffbee5bb9b173f06028b9e"><div class="ttname"><a href="glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e">GLFW_CONNECTED</a></div><div class="ttdeci">#define GLFW_CONNECTED</div><div class="ttdef"><b>Definition:</b> glfw3.h:1106</div></div>
+</div><!-- fragment --><p >If a monitor is disconnected, all windows that are full screen on it will be switched to windowed mode before the callback is called. Only <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> and <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a> will return useful values for a disconnected monitor and only before the monitor callback returns.</p>
+<h1><a class="anchor" id="monitor_properties"></a>
+Monitor properties</h1>
+<p >Each monitor has a current video mode, a list of supported video modes, a virtual position, a content scale, a human-readable name, a user pointer, an estimated physical size and a gamma ramp.</p>
+<h2><a class="anchor" id="monitor_modes"></a>
+Video modes</h2>
+<p >GLFW generally does a good job selecting a suitable video mode when you create a full screen window, change its video mode or make a windowed one full screen, but it is sometimes useful to know exactly which video modes are supported.</p>
+<p >Video modes are represented as <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> structures. You can get an array of the video modes supported by a monitor with <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>. See the reference documentation for the lifetime of the returned array.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> count;</div>
+<div class="line"><a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* modes = <a class="code hl_function" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>(monitor, &amp;count);</div>
+<div class="ttc" id="agroup__monitor_html_gad2e24d2843cb7d6c26202cddd530fc1b"><div class="ttname"><a href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoModes(GLFWmonitor *monitor, int *count)</div><div class="ttdoc">Returns the available video modes for the specified monitor.</div></div>
+<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1658</div></div>
+</div><!-- fragment --><p >To get the current video mode of a monitor call <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>. See the reference documentation for the lifetime of the returned pointer.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
+<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
+</div><!-- fragment --><p >The resolution of a video mode is specified in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>, not pixels.</p>
+<h2><a class="anchor" id="monitor_size"></a>
+Physical size</h2>
+<p >The physical size of a monitor in millimetres, or an estimation of it, can be retrieved with <a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>. This has no relation to its current <em>resolution</em>, i.e. the width and height of its current <a class="el" href="monitor_guide.html#monitor_modes">video mode</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> width_mm, height_mm;</div>
+<div class="line"><a class="code hl_function" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>(monitor, &amp;width_mm, &amp;height_mm);</div>
+<div class="ttc" id="agroup__monitor_html_ga7d8bffc6c55539286a6bd20d32a8d7ea"><div class="ttname"><a href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a></div><div class="ttdeci">void glfwGetMonitorPhysicalSize(GLFWmonitor *monitor, int *widthMM, int *heightMM)</div><div class="ttdoc">Returns the physical size of the monitor.</div></div>
+</div><!-- fragment --><p >While this can be used to calculate the raw DPI of a monitor, this is often not useful. Instead use the <a class="el" href="monitor_guide.html#monitor_scale">monitor content scale</a> and <a class="el" href="window_guide.html#window_scale">window content scale</a> to scale your content.</p>
+<h2><a class="anchor" id="monitor_scale"></a>
+Content scale</h2>
+<p >The content scale for a monitor can be retrieved with <a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">float</span> xscale, yscale;</div>
+<div class="line"><a class="code hl_function" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>(monitor, &amp;xscale, &amp;yscale);</div>
+<div class="ttc" id="agroup__monitor_html_gad3152e84465fa620b601265ebfcdb21b"><div class="ttname"><a href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></div><div class="ttdeci">void glfwGetMonitorContentScale(GLFWmonitor *monitor, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified monitor.</div></div>
+</div><!-- fragment --><p >The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
+<p >The content scale may depend on both the monitor resolution and pixel density and on user settings. It may be very different from the raw DPI calculated from the physical size and current resolution.</p>
+<h2><a class="anchor" id="monitor_pos"></a>
+Virtual position</h2>
+<p >The position of the monitor on the virtual desktop, in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>, can be retrieved with <a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos;</div>
+<div class="line"><a class="code hl_function" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>(monitor, &amp;xpos, &amp;ypos);</div>
+<div class="ttc" id="agroup__monitor_html_ga102f54e7acc9149edbcf0997152df8c9"><div class="ttname"><a href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a></div><div class="ttdeci">void glfwGetMonitorPos(GLFWmonitor *monitor, int *xpos, int *ypos)</div><div class="ttdoc">Returns the position of the monitor's viewport on the virtual screen.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="monitor_workarea"></a>
+Work area</h2>
+<p >The area of a monitor not occupied by global task bars or menu bars is the work area. This is specified in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> and can be retrieved with <a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos, width, height;</div>
+<div class="line"><a class="code hl_function" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>(monitor, &amp;xpos, &amp;ypos, &amp;width, &amp;height);</div>
+<div class="ttc" id="agroup__monitor_html_ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0"><div class="ttname"><a href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></div><div class="ttdeci">void glfwGetMonitorWorkarea(GLFWmonitor *monitor, int *xpos, int *ypos, int *width, int *height)</div><div class="ttdoc">Retrieves the work area of the monitor.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="monitor_name"></a>
+Human-readable name</h2>
+<p >The human-readable, UTF-8 encoded name of a monitor is returned by <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>. See the reference documentation for the lifetime of the returned string.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>* name = <a class="code hl_function" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a>(monitor);</div>
+<div class="ttc" id="agroup__monitor_html_ga7af83e13489d90379588fb331b9e4b68"><div class="ttname"><a href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a></div><div class="ttdeci">const char * glfwGetMonitorName(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the name of the specified monitor.</div></div>
+</div><!-- fragment --><p >Monitor names are not guaranteed to be unique. Two monitors of the same model and make may have the same name. Only the monitor handle is guaranteed to be unique, and only until that monitor is disconnected.</p>
+<h2><a class="anchor" id="monitor_userptr"></a>
+User pointer</h2>
+<p >Each monitor has a user pointer that can be set with <a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a> and queried with <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW. The value will be kept until the monitor is disconnected or until the library is terminated.</p>
+<p >The initial value of the pointer is <code>NULL</code>.</p>
+<h2><a class="anchor" id="monitor_gamma"></a>
+Gamma ramp</h2>
+<p >The gamma ramp of a monitor can be set with <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>, which accepts a monitor handle and a pointer to a <a class="el" href="structGLFWgammaramp.html">GLFWgammaramp</a> structure.</p>
+<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a> ramp;</div>
+<div class="line"><span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> red[256], green[256], blue[256];</div>
+<div class="line"> </div>
+<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a> = 256;</div>
+<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a> = red;</div>
+<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a> = green;</div>
+<div class="line">ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a> = blue;</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordflow">for</span> (i = 0; i &lt; ramp.<a class="code hl_variable" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a>; i++)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Fill out gamma ramp arrays as desired</span></div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a>(monitor, &amp;ramp);</div>
+<div class="ttc" id="agroup__monitor_html_ga583f0ffd0d29613d8cd172b996bbf0dd"><div class="ttname"><a href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></div><div class="ttdeci">void glfwSetGammaRamp(GLFWmonitor *monitor, const GLFWgammaramp *ramp)</div><div class="ttdoc">Sets the current gamma ramp for the specified monitor.</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html"><div class="ttname"><a href="structGLFWgammaramp.html">GLFWgammaramp</a></div><div class="ttdoc">Gamma ramp.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1692</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_a2cce5d968734b685623eef913e635138"><div class="ttname"><a href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">GLFWgammaramp::red</a></div><div class="ttdeci">unsigned short * red</div><div class="ttdef"><b>Definition:</b> glfw3.h:1695</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_acf0c836d0efe29c392fe8d1a1042744b"><div class="ttname"><a href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">GLFWgammaramp::blue</a></div><div class="ttdeci">unsigned short * blue</div><div class="ttdef"><b>Definition:</b> glfw3.h:1701</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_ad620e1cffbff9a32c51bca46301b59a5"><div class="ttname"><a href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">GLFWgammaramp::size</a></div><div class="ttdeci">unsigned int size</div><div class="ttdef"><b>Definition:</b> glfw3.h:1704</div></div>
+<div class="ttc" id="astructGLFWgammaramp_html_affccc6f5df47820b6562d709da3a5a3a"><div class="ttname"><a href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">GLFWgammaramp::green</a></div><div class="ttdeci">unsigned short * green</div><div class="ttdef"><b>Definition:</b> glfw3.h:1698</div></div>
+</div><!-- fragment --><p >The gamma ramp data is copied before the function returns, so there is no need to keep it around once the ramp has been set.</p>
+<p >It is recommended that your gamma ramp have the same size as the current gamma ramp for that monitor.</p>
+<p >The current gamma ramp for a monitor is returned by <a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>. See the reference documentation for the lifetime of the returned structure.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWgammaramp.html">GLFWgammaramp</a>* ramp = <a class="code hl_function" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a>(monitor);</div>
+<div class="ttc" id="agroup__monitor_html_ga76ba90debcf0062b5c4b73052b24f96f"><div class="ttname"><a href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a></div><div class="ttdeci">const GLFWgammaramp * glfwGetGammaRamp(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current gamma ramp for the specified monitor.</div></div>
+</div><!-- fragment --><p >If you wish to set a regular gamma ramp, you can have GLFW calculate it for you from the desired exponent with <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>, which in turn calls <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> with the resulting ramp.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>(monitor, 1.0);</div>
+<div class="ttc" id="agroup__monitor_html_ga6ac582625c990220785ddd34efa3169a"><div class="ttname"><a href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a></div><div class="ttdeci">void glfwSetGamma(GLFWmonitor *monitor, float gamma)</div><div class="ttdoc">Generates a gamma ramp and sets it for the specified monitor.</div></div>
+</div><!-- fragment --><p >To experiment with gamma correction via the <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> function, run the <code>gamma</code> test program.</p>
+<dl class="section note"><dt>Note</dt><dd>The software controlled gamma ramp is applied <em>in addition</em> to the hardware gamma correction, which today is usually an approximation of sRGB gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will produce the default (usually sRGB-like) behavior. </dd></dl>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/moving_8dox.html b/libs/glfw-3.3.8/docs/html/moving_8dox.html
new file mode 100644
index 0000000..4d3a225
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/moving_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: moving.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">moving.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/moving_guide.html b/libs/glfw-3.3.8/docs/html/moving_guide.html
new file mode 100644
index 0000000..d8b1a2b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/moving_guide.html
@@ -0,0 +1,367 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Moving from GLFW 2 to 3</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Moving from GLFW 2 to 3 </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#moving_removed">Changed and removed features</a><ul><li class="level2"><a href="#moving_renamed_files">Renamed library and header file</a></li>
+<li class="level2"><a href="#moving_threads">Removal of threading functions</a></li>
+<li class="level2"><a href="#moving_image">Removal of image and texture loading</a></li>
+<li class="level2"><a href="#moving_stdcall">Removal of GLFWCALL macro</a></li>
+<li class="level2"><a href="#moving_window_handles">Window handle parameters</a></li>
+<li class="level2"><a href="#moving_monitor">Explicit monitor selection</a></li>
+<li class="level2"><a href="#moving_autopoll">Removal of automatic event polling</a></li>
+<li class="level2"><a href="#moving_context">Explicit context management</a></li>
+<li class="level2"><a href="#moving_hidpi">Separation of window and framebuffer sizes</a></li>
+<li class="level2"><a href="#moving_window_close">Window closing changes</a></li>
+<li class="level2"><a href="#moving_hints">Persistent window hints</a></li>
+<li class="level2"><a href="#moving_video_modes">Video mode enumeration</a></li>
+<li class="level2"><a href="#moving_char_up">Removal of character actions</a></li>
+<li class="level2"><a href="#moving_cursorpos">Cursor position changes</a></li>
+<li class="level2"><a href="#moving_wheel">Wheel position replaced by scroll offsets</a></li>
+<li class="level2"><a href="#moving_repeat">Key repeat action</a></li>
+<li class="level2"><a href="#moving_keys">Physical key input</a></li>
+<li class="level2"><a href="#moving_joystick">Joystick function changes</a></li>
+<li class="level2"><a href="#moving_mbcs">Win32 MBCS support</a></li>
+<li class="level2"><a href="#moving_windows">Support for versions of Windows older than XP</a></li>
+<li class="level2"><a href="#moving_syskeys">Capture of system-wide hotkeys</a></li>
+<li class="level2"><a href="#moving_terminate">Automatic termination</a></li>
+<li class="level2"><a href="#moving_glu">GLU header inclusion</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#moving_tables">Name change tables</a><ul><li class="level2"><a href="#moving_renamed_functions">Renamed functions</a></li>
+<li class="level2"><a href="#moving_renamed_types">Renamed types</a></li>
+<li class="level2"><a href="#moving_renamed_tokens">Renamed tokens</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><p >This is a transition guide for moving from GLFW 2 to 3. It describes what has changed or been removed, but does <em>not</em> include <a class="el" href="news.html">new features</a> unless they are required when moving an existing code base onto the new API. For example, the new multi-monitor functions are required to create full screen windows with GLFW 3.</p>
+<h1><a class="anchor" id="moving_removed"></a>
+Changed and removed features</h1>
+<h2><a class="anchor" id="moving_renamed_files"></a>
+Renamed library and header file</h2>
+<p >The GLFW 3 header is named <a class="el" href="glfw3_8h.html">glfw3.h</a> and moved to the <code>GLFW</code> directory, to avoid collisions with the headers of other major versions. Similarly, the GLFW 3 library is named <code>glfw3,</code> except when it's installed as a shared library on Unix-like systems, where it uses the <a href="https://en.wikipedia.org/wiki/soname">soname</a> <code>libglfw.so.3</code>.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;GL/glfw.h&gt;</span></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_threads"></a>
+Removal of threading functions</h2>
+<p >The threading functions have been removed, including the per-thread sleep function. They were fairly primitive, under-used, poorly integrated and took time away from the focus of GLFW (i.e. context, input and window). There are better threading libraries available and native threading support is available in both <a href="https://en.cppreference.com/w/cpp/thread">C++11</a> and <a href="https://en.cppreference.com/w/c/thread">C11</a>, both of which are gaining traction.</p>
+<p >If you wish to use the C++11 or C11 facilities but your compiler doesn't yet support them, see the <a href="https://gitorious.org/tinythread/tinythreadpp">TinyThread++</a> and <a href="https://github.com/tinycthread/tinycthread">TinyCThread</a> projects created by the original author of GLFW. These libraries implement a usable subset of the threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use TinyCThread.</p>
+<p >However, GLFW 3 has better support for <em>use from multiple threads</em> than GLFW 2 had. Contexts can be made current on any thread, although only a single thread at a time, and the documentation explicitly states which functions may be used from any thread and which must only be used from the main thread.</p>
+<dl class="section user"><dt>Removed functions</dt><dd><code>glfwSleep</code>, <code>glfwCreateThread</code>, <code>glfwDestroyThread</code>, <code>glfwWaitThread</code>, <code>glfwGetThreadID</code>, <code>glfwCreateMutex</code>, <code>glfwDestroyMutex</code>, <code>glfwLockMutex</code>, <code>glfwUnlockMutex</code>, <code>glfwCreateCond</code>, <code>glfwDestroyCond</code>, <code>glfwWaitCond</code>, <code>glfwSignalCond</code>, <code>glfwBroadcastCond</code> and <code>glfwGetNumberOfProcessors</code>.</dd></dl>
+<dl class="section user"><dt>Removed types</dt><dd><code>GLFWthreadfun</code></dd></dl>
+<h2><a class="anchor" id="moving_image"></a>
+Removal of image and texture loading</h2>
+<p >The image and texture loading functions have been removed. They only supported the Targa image format, making them mostly useful for beginner level examples. To become of sufficiently high quality to warrant keeping them in GLFW 3, they would need not only to support other formats, but also modern extensions to OpenGL texturing. This would either add a number of external dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions of these libraries.</p>
+<p >As there already are libraries doing this, it is unnecessary both to duplicate the work and to tie the duplicate to GLFW. The resulting library would also be platform-independent, as both OpenGL and stdio are available wherever GLFW is.</p>
+<dl class="section user"><dt>Removed functions</dt><dd><code>glfwReadImage</code>, <code>glfwReadMemoryImage</code>, <code>glfwFreeImage</code>, <code>glfwLoadTexture2D</code>, <code>glfwLoadMemoryTexture2D</code> and <code>glfwLoadTextureImage2D</code>.</dd></dl>
+<h2><a class="anchor" id="moving_stdcall"></a>
+Removal of GLFWCALL macro</h2>
+<p >The <code>GLFWCALL</code> macro, which made callback functions use <a href="https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx">__stdcall</a> on Windows, has been removed. GLFW is written in C, not Pascal. Removing this macro means there's one less thing for application programmers to remember, i.e. the requirement to mark all callback functions with <code>GLFWCALL</code>. It also simplifies the creation of DLLs and DLL link libraries, as there's no need to explicitly disable <code>@n</code> entry point suffixes.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL callback_function(...);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> callback_function(...);</div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_window_handles"></a>
+Window handle parameters</h2>
+<p >Because GLFW 3 supports multiple windows, window handle parameters have been added to all window-related GLFW functions and callbacks. The handle of a newly created window is returned by <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> (formerly <code>glfwOpenWindow</code>). Window handles are pointers to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(<span class="stringliteral">&quot;New Window Title&quot;</span>);</div>
+<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;New Window Title&quot;</span>);</div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_monitor"></a>
+Explicit monitor selection</h2>
+<p >GLFW 3 provides support for multiple monitors. To request a full screen mode window, instead of passing <code>GLFW_FULLSCREEN</code> you specify which monitor you wish the window to use. The <a class="el" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a> function returns the monitor that GLFW 2 would have selected, but there are many other <a class="el" href="monitor_guide.html">monitor functions</a>. Monitor handles are pointers to the <a href="https://en.wikipedia.org/wiki/Opaque_data_type">opaque</a> type <a class="el" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>.</p>
+<dl class="section user"><dt>Old basic full screen</dt><dd><div class="fragment"><div class="line">glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New basic full screen</dt><dd><div class="fragment"><div class="line">window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Window&quot;</span>, <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(), NULL);</div>
+<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section note"><dt>Note</dt><dd>The framebuffer bit depth parameters of <code>glfwOpenWindow</code> have been turned into <a class="el" href="window_guide.html#window_hints">window hints</a>, but as they have been given <a class="el" href="window_guide.html#window_hints_values">sane defaults</a> you rarely need to set these hints.</dd></dl>
+<h2><a class="anchor" id="moving_autopoll"></a>
+Removal of automatic event polling</h2>
+<p >GLFW 3 does not automatically poll for events in <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>, meaning you need to call <a class="el" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a> or <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> yourself. Unlike buffer swap, which acts on a single window, the event processing functions act on all windows at once.</p>
+<dl class="section user"><dt>Old basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (...)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Process input</span></div>
+<div class="line"> <span class="comment">// Render output</span></div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (...)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Process input</span></div>
+<div class="line"> <span class="comment">// Render output</span></div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_context"></a>
+Explicit context management</h2>
+<p >Each GLFW 3 window has its own OpenGL context and only you, the application programmer, can know which context should be current on which thread at any given time. Therefore, GLFW 3 leaves that decision to you.</p>
+<p >This means that you need to call <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> after creating a window before you can call any OpenGL functions.</p>
+<h2><a class="anchor" id="moving_hidpi"></a>
+Separation of window and framebuffer sizes</h2>
+<p >Window positions and sizes now use screen coordinates, which may not be the same as pixels on machines with high-DPI monitors. This is important as OpenGL uses pixels, not screen coordinates. For example, the rectangle specified with <code>glViewport</code> needs to use pixels. Therefore, framebuffer size functions have been added. You can retrieve the size of the framebuffer of a window with <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> function. A framebuffer size callback has also been added, which can be set with <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>.</p>
+<dl class="section user"><dt>Old basic viewport setup</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(&amp;width, &amp;height);</div>
+<div class="line">glViewport(0, 0, width, height);</div>
+<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New basic viewport setup</dt><dd><div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
+<div class="line">glViewport(0, 0, width, height);</div>
+<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_window_close"></a>
+Window closing changes</h2>
+<p >The <code>GLFW_OPENED</code> window parameter has been removed. As long as the window has not been destroyed, whether through <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, the window is "open".</p>
+<p >A user attempting to close a window is now just an event like any other. Unlike GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless you choose them to be. Each window now has a close flag that is set to <code>GLFW_TRUE</code> when the user attempts to close that window. By default, nothing else happens and the window stays visible. It is then up to you to either destroy the window, take some other action or ignore the request.</p>
+<p >You can query the close flag at any time with <a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> and set it at any time with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>.</p>
+<dl class="section user"><dt>Old basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (glfwGetWindowParam(GLFW_OPENED))</div>
+<div class="line">{</div>
+<div class="line"> ...</div>
+<div class="line">}</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New basic main loop</dt><dd><div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
+<div class="line">{</div>
+<div class="line"> ...</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
+</div><!-- fragment --></dd></dl>
+<p>The close callback no longer returns a value. Instead, it is called after the close flag has been set so it can override its value, if it chooses to, before event processing completes. You may however not call <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> from the close callback (or any other window related callback).</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">int</span> GLFWCALL window_close_callback(<span class="keywordtype">void</span>);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> window_close_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window);</div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section note"><dt>Note</dt><dd>GLFW never clears the close flag to <code>GLFW_FALSE</code>, meaning you can use it for other reasons to close the window as well, for example the user choosing Quit from an in-game menu.</dd></dl>
+<h2><a class="anchor" id="moving_hints"></a>
+Persistent window hints</h2>
+<p >The <code>glfwOpenWindowHint</code> function has been renamed to <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>.</p>
+<p >Window hints are no longer reset to their default values on window creation, but instead retain their values until modified by <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> or <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>, or until the library is terminated and re-initialized.</p>
+<h2><a class="anchor" id="moving_video_modes"></a>
+Video mode enumeration</h2>
+<p >Video mode enumeration is now per-monitor. The <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a> function now returns all available modes for a specific monitor instead of requiring you to guess how large an array you need. The <code>glfwGetDesktopMode</code> function, which had poorly defined behavior, has been replaced by <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>, which returns the current mode of a monitor.</p>
+<h2><a class="anchor" id="moving_char_up"></a>
+Removal of character actions</h2>
+<p >The action parameter of the <a class="el" href="group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e">character callback</a> has been removed. This was an artefact of the origin of GLFW, i.e. being developed in English by a Swede. However, many keyboard layouts require more than one key to produce characters with diacritical marks. Even the Swedish keyboard layout requires this for uncommon cases like ü.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL character_callback(<span class="keywordtype">int</span> character, <span class="keywordtype">int</span> action);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> character_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> character);</div>
+</div><!-- fragment --></dd></dl>
+<h2><a class="anchor" id="moving_cursorpos"></a>
+Cursor position changes</h2>
+<p >The <code>glfwGetMousePos</code> function has been renamed to <a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a>, <code>glfwSetMousePos</code> to <a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> and <code>glfwSetMousePosCallback</code> to <a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a>.</p>
+<p >The cursor position is now <code>double</code> instead of <code>int</code>, both for the direct functions and for the callback. Some platforms can provide sub-pixel cursor movement and this data is now passed on to the application where available. On platforms where this is not provided, the decimal part is zero.</p>
+<p >GLFW 3 only allows you to position the cursor within a window using <a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> (formerly <code>glfwSetMousePos</code>) when that window is active. Unless the window is active, the function fails silently.</p>
+<h2><a class="anchor" id="moving_wheel"></a>
+Wheel position replaced by scroll offsets</h2>
+<p >The <code>glfwGetMouseWheel</code> function has been removed. Scrolling is the input of offsets and has no absolute position. The mouse wheel callback has been replaced by a <a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">scroll callback</a> that receives two-dimensional floating point scroll offsets. This allows you to receive precise scroll data from for example modern touchpads.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> GLFWCALL mouse_wheel_callback(<span class="keywordtype">int</span> position);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="keywordtype">void</span> scroll_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">double</span> xoffset, <span class="keywordtype">double</span> yoffset);</div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>Removed functions</dt><dd><code>glfwGetMouseWheel</code></dd></dl>
+<h2><a class="anchor" id="moving_repeat"></a>
+Key repeat action</h2>
+<p >The <code>GLFW_KEY_REPEAT</code> enable has been removed and key repeat is always enabled for both keys and characters. A new key action, <code>GLFW_REPEAT</code>, has been added to allow the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key callback</a> to distinguish an initial key press from a repeat. Note that <a class="el" href="group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2">glfwGetKey</a> still returns only <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>.</p>
+<h2><a class="anchor" id="moving_keys"></a>
+Physical key input</h2>
+<p >GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to the values generated by the current keyboard layout. The tokens are named according to the values they would have using the standard US layout, but this is only a convenience, as most programmers are assumed to know that layout. This means that (for example) <code>GLFW_KEY_LEFT_BRACKET</code> is always a single key and is the same key in the same place regardless of what keyboard layouts the users of your program has.</p>
+<p >The key input facility was never meant for text input, although using it that way worked slightly better in GLFW 2. If you were using it to input text, you should be using the character callback instead, on both GLFW 2 and 3. This will give you the characters being input, as opposed to the keys being pressed.</p>
+<p >GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of having to remember whether to check for <code>a</code> or <code>A</code>, you now check for <a class="el" href="group__keys.html#ga03e842608e1ea323370889d33b8f70ff">GLFW_KEY_A</a>.</p>
+<h2><a class="anchor" id="moving_joystick"></a>
+Joystick function changes</h2>
+<p >The <code>glfwGetJoystickPos</code> function has been renamed to <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a>.</p>
+<p >The <code>glfwGetJoystickParam</code> function and the <code>GLFW_PRESENT</code>, <code>GLFW_AXES</code> and <code>GLFW_BUTTONS</code> tokens have been replaced by the <a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> function as well as axis and button counts returned by the <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> and <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> functions.</p>
+<h2><a class="anchor" id="moving_mbcs"></a>
+Win32 MBCS support</h2>
+<p >The Win32 port of GLFW 3 will not compile in <a href="https://msdn.microsoft.com/en-us/library/5z097dxa.aspx">MBCS mode</a>. However, because the use of the Unicode version of the Win32 API doesn't affect the process as a whole, but only those windows created using it, it's perfectly possible to call MBCS functions from other parts of the same application. Therefore, even if an application using GLFW has MBCS mode code, there's no need for GLFW itself to support it.</p>
+<h2><a class="anchor" id="moving_windows"></a>
+Support for versions of Windows older than XP</h2>
+<p >All explicit support for version of Windows older than XP has been removed. There is no code that actively prevents GLFW 3 from running on these earlier versions, but it uses Win32 functions that those versions lack.</p>
+<p >Windows XP was released in 2001, and by now (January 2015) it has not only replaced almost all earlier versions of Windows, but is itself rapidly being replaced by Windows 7 and 8. The MSDN library doesn't even provide documentation for version older than Windows 2000, making it difficult to maintain compatibility with these versions even if it was deemed worth the effort.</p>
+<p >The Win32 API has also not stood still, and GLFW 3 uses many functions only present on Windows XP or later. Even supporting an OS as new as XP (new from the perspective of GLFW 2, which still supports Windows 95) requires runtime checking for a number of functions that are present only on modern version of Windows.</p>
+<h2><a class="anchor" id="moving_syskeys"></a>
+Capture of system-wide hotkeys</h2>
+<p >The ability to disable and capture system-wide hotkeys like Alt+Tab has been removed. Modern applications, whether they're games, scientific visualisations or something else, are nowadays expected to be good desktop citizens and allow these hotkeys to function even when running in full screen mode.</p>
+<h2><a class="anchor" id="moving_terminate"></a>
+Automatic termination</h2>
+<p >GLFW 3 does not register <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> with <code>atexit</code> at initialization, because <code>exit</code> calls registered functions from the calling thread and while it is permitted to call <code>exit</code> from any thread, <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> must only be called from the main thread.</p>
+<p >To release all resources allocated by GLFW, you should call <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> yourself, from the main thread, before the program terminates. Note that this destroys all windows not already destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>, invalidating any window handles you may still have.</p>
+<h2><a class="anchor" id="moving_glu"></a>
+GLU header inclusion</h2>
+<p >GLFW 3 does not by default include the GLU header and GLU itself has been deprecated by <a href="https://en.wikipedia.org/wiki/Khronos_Group">Khronos</a>. <b>New projects should not use GLU</b>, but if you need it for legacy code that has been moved to GLFW 3, you can request that the GLFW header includes it by defining <a class="el" href="build_guide.html#GLFW_INCLUDE_GLU">GLFW_INCLUDE_GLU</a> before the inclusion of the GLFW header.</p>
+<dl class="section user"><dt>Old syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;GL/glfw.h&gt;</span></div>
+</div><!-- fragment --></dd></dl>
+<dl class="section user"><dt>New syntax</dt><dd><div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_GLU</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+</div><!-- fragment --></dd></dl>
+<p>There are many libraries that offer replacements for the functionality offered by GLU. For the matrix helper functions, see math libraries like <a href="https://github.com/g-truc/glm">GLM</a> (for C++), <a href="https://github.com/datenwolf/linmath.h">linmath.h</a> (for C) and others. For the tessellation functions, see for example <a href="https://github.com/memononen/libtess2">libtess2</a>.</p>
+<h1><a class="anchor" id="moving_tables"></a>
+Name change tables</h1>
+<h2><a class="anchor" id="moving_renamed_functions"></a>
+Renamed functions</h2>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwOpenWindow</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td><td class="markdownTableBodyNone">All channel bit depths are now hints </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwCloseWindow</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwOpenWindowHint</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> </td><td class="markdownTableBodyNone">Now accepts all <code>GLFW_*_BITS</code> tokens </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwEnable</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwDisable</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwGetMousePos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc">glfwGetCursorPos</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwSetMousePos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga04b03af936d906ca123c8f4ee08b39e7">glfwSetCursorPos</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwSetMousePosCallback</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gac1f879ab7435d54d4d79bb469fe225d7">glfwSetCursorPosCallback</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwSetMouseWheelCallback</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#ga571e45a030ae4061f746ed56cb76aede">glfwSetScrollCallback</a> </td><td class="markdownTableBodyNone">Accepts two-dimensional scroll offsets as doubles </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwGetJoystickPos</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwGetWindowParam</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwGetGLVersion</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a> </td><td class="markdownTableBodyNone">Use <code>GLFW_CONTEXT_VERSION_MAJOR</code>, <code>GLFW_CONTEXT_VERSION_MINOR</code> and <code>GLFW_CONTEXT_REVISION</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>glfwGetDesktopMode</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </td><td class="markdownTableBodyNone">Returns the current mode of a monitor </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>glfwGetJoystickParam</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaed0966cee139d815317f9ffcba64c9f1">glfwJoystickPresent</a> </td><td class="markdownTableBodyNone">The axis and button counts are provided by <a class="el" href="group__input.html#gaeb1c0191d3140a233a682987c61eb408">glfwGetJoystickAxes</a> and <a class="el" href="group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938">glfwGetJoystickButtons</a> </td></tr>
+</table>
+<h2><a class="anchor" id="moving_renamed_types"></a>
+Renamed types</h2>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFWmousewheelfun</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gaf656112c33de3efdb227fa58f0134cf5">GLFWscrollfun</a> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFWmouseposfun</code> </td><td class="markdownTableBodyNone"><a class="el" href="group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68">GLFWcursorposfun</a> </td><td class="markdownTableBodyNone"></td></tr>
+</table>
+<h2><a class="anchor" id="moving_renamed_tokens"></a>
+Renamed tokens</h2>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">GLFW 2 </th><th class="markdownTableHeadNone">GLFW 3 </th><th class="markdownTableHeadNone">Notes </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_OPENGL_VERSION_MAJOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CONTEXT_VERSION_MAJOR</code> </td><td class="markdownTableBodyNone">Renamed as it applies to OpenGL ES as well </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_OPENGL_VERSION_MINOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CONTEXT_VERSION_MINOR</code> </td><td class="markdownTableBodyNone">Renamed as it applies to OpenGL ES as well </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_FSAA_SAMPLES</code> </td><td class="markdownTableBodyNone"><code>GLFW_SAMPLES</code> </td><td class="markdownTableBodyNone">Renamed to match the OpenGL API </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_ACTIVE</code> </td><td class="markdownTableBodyNone"><code>GLFW_FOCUSED</code> </td><td class="markdownTableBodyNone">Renamed to match the window focus callback </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_WINDOW_NO_RESIZE</code> </td><td class="markdownTableBodyNone"><code>GLFW_RESIZABLE</code> </td><td class="markdownTableBodyNone">The default has been inverted </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_MOUSE_CURSOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_CURSOR</code> </td><td class="markdownTableBodyNone">Used with <a class="el" href="group__input.html#gaa92336e173da9c8834558b54ee80563b">glfwSetInputMode</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_ESC</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_ESCAPE</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_DEL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_DELETE</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_PAGEUP</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_PAGE_UP</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_PAGEDOWN</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_PAGE_DOWN</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_KP_NUM_LOCK</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_NUM_LOCK</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_LCTRL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_CONTROL</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_LSHIFT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_SHIFT</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_LALT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_ALT</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_LSUPER</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_LEFT_SUPER</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_RCTRL</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_CONTROL</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_RSHIFT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_SHIFT</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_RALT</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_ALT</code> </td><td class="markdownTableBodyNone"></td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><code>GLFW_KEY_RSUPER</code> </td><td class="markdownTableBodyNone"><code>GLFW_KEY_RIGHT_SUPER</code> </td><td class="markdownTableBodyNone"></td></tr>
+</table>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/nav_f.png b/libs/glfw-3.3.8/docs/html/nav_f.png
new file mode 100644
index 0000000..72a58a5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/nav_f.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/nav_g.png b/libs/glfw-3.3.8/docs/html/nav_g.png
new file mode 100644
index 0000000..2093a23
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/nav_g.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/nav_h.png b/libs/glfw-3.3.8/docs/html/nav_h.png
new file mode 100644
index 0000000..33389b1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/nav_h.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/news.html b/libs/glfw-3.3.8/docs/html/news.html
new file mode 100644
index 0000000..0bf7e28
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/news.html
@@ -0,0 +1,614 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Release notes</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Release notes </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#news_33">Release notes for version 3.3</a><ul><li class="level2"><a href="#features_33">New features in version 3.3</a><ul><li class="level3"><a href="#gamepad_33">Gamepad input via SDL_GameControllerDB</a></li>
+<li class="level3"><a href="#moltenvk_33">Support for Vulkan on macOS via MoltenVK</a></li>
+<li class="level3"><a href="#content_scale_33">Content scale queries for DPI-aware rendering</a></li>
+<li class="level3"><a href="#setwindowattrib_33">Support for updating window attributes</a></li>
+<li class="level3"><a href="#raw_motion_33">Support for raw mouse motion</a></li>
+<li class="level3"><a href="#joysticks_33">Joystick hats</a></li>
+<li class="level3"><a href="#geterror_33">Error query</a></li>
+<li class="level3"><a href="#init_hints_33">Support for initialization hints</a></li>
+<li class="level3"><a href="#attention_33">User attention request</a></li>
+<li class="level3"><a href="#maximize_33">Window maximization callback</a></li>
+<li class="level3"><a href="#workarea_33">Query for the monitor work area</a></li>
+<li class="level3"><a href="#transparency_33">Transparent windows and framebuffers</a></li>
+<li class="level3"><a href="#key_scancode_33">Query for the scancode of a key</a></li>
+<li class="level3"><a href="#center_cursor_33">Cursor centering window hint</a></li>
+<li class="level3"><a href="#cursor_hover_33">Mouse cursor hover window attribute</a></li>
+<li class="level3"><a href="#focusonshow_33">Window hint and attribute for input focus on show</a></li>
+<li class="level3"><a href="#device_userptr_33">Monitor and joystick user pointers</a></li>
+<li class="level3"><a href="#macos_nib_33">macOS menu bar from nib file</a></li>
+<li class="level3"><a href="#glext_33">Support for more context creation extensions</a></li>
+<li class="level3"><a href="#osmesa_33">OSMesa off-screen context creation support</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#caveats_33">Caveats for version 3.3</a><ul><li class="level3"><a href="#joystick_layout_33">Layout of joysticks have changed</a></li>
+<li class="level3"><a href="#wait_events_33">No window required to wait for events</a></li>
+<li class="level3"><a href="#gamma_ramp_size_33">Gamma ramp size of 256 may be rejected</a></li>
+<li class="level3"><a href="#xinput_deadzone_33">Windows XInput deadzone removed</a></li>
+<li class="level3"><a href="#x11_clipboard_33">X11 clipboard transfer limits</a></li>
+<li class="level3"><a href="#x11_linking_33">X11 extension libraries are loaded dynamically</a></li>
+<li class="level3"><a href="#cmake_version_33">CMake 3.0 or later is required</a></li>
+<li class="level3"><a href="#caveat_fbtransparency_33">Framebuffer transparency requires DWM transparency</a></li>
+<li class="level3"><a href="#emptyevents_33">Empty events on X11 no longer roundtrip to server</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#deprecations_33">Deprecations in version 3.3</a><ul><li class="level3"><a href="#charmods_callback_33">Character with modifiers callback</a></li>
+<li class="level3"><a href="#clipboard_window_33">Window parameter to clipboard functions</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#removals_33">Removals in 3.3</a><ul><li class="level3"><a href="#macos_options_33">macOS specific CMake options and macros</a></li>
+<li class="level3"><a href="#vulkan_sdk_33">LunarG Vulkan SDK dependency</a></li>
+<li class="level3"><a href="#lib_suffix_33">CMake option LIB_SUFFIX</a></li>
+<li class="level3"><a href="#wl_shell_33">Support for the wl_shell protocol</a></li>
+<li class="level3"><a href="#mir_removed_33">Mir support</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#symbols_33">New symbols in version 3.3</a><ul><li class="level3"><a href="#functions_33">New functions in version 3.3</a></li>
+<li class="level3"><a href="#types_33">New types in version 3.3</a></li>
+<li class="level3"><a href="#constants_33">New constants in version 3.3</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="level1"><a href="#news_32">Release notes for 3.2</a><ul><li class="level2"><a href="#features_32">New features in version 3.2</a><ul><li class="level3"><a href="#news_32_vulkan">Support for Vulkan</a></li>
+<li class="level3"><a href="#news_32_setwindowmonitor">Window mode switching</a></li>
+<li class="level3"><a href="#news_32_maximize">Window maxmimization support</a></li>
+<li class="level3"><a href="#news_32_focus">Window input focus control</a></li>
+<li class="level3"><a href="#news_32_sizelimits">Window size limit support</a></li>
+<li class="level3"><a href="#news_32_keyname">Localized key names</a></li>
+<li class="level3"><a href="#news_32_waittimeout">Wait for events with timeout</a></li>
+<li class="level3"><a href="#news_32_icon">Window icon support</a></li>
+<li class="level3"><a href="#news_32_timer">Raw timer access</a></li>
+<li class="level3"><a href="#news_32_joystick">Joystick connection callback</a></li>
+<li class="level3"><a href="#news_32_noapi">Context-less windows</a></li>
+<li class="level3"><a href="#news_32_contextapi">Run-time context creation API selection</a></li>
+<li class="level3"><a href="#news_32_noerror">Error-free context creation</a></li>
+<li class="level3"><a href="#news_32_cmake">CMake config-file package support</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="level1"><a href="#news_31">Release notes for 3.1</a><ul><li class="level2"><a href="#features_31">New features in version 3.1</a><ul><li class="level3"><a href="#news_31_cursor">Custom mouse cursor images</a></li>
+<li class="level3"><a href="#news_31_drop">Path drop event</a></li>
+<li class="level3"><a href="#news_31_emptyevent">Main thread wake-up</a></li>
+<li class="level3"><a href="#news_31_framesize">Window frame size query</a></li>
+<li class="level3"><a href="#news_31_autoiconify">Simultaneous multi-monitor rendering</a></li>
+<li class="level3"><a href="#news_31_floating">Floating windows</a></li>
+<li class="level3"><a href="#news_31_focused">Initially unfocused windows</a></li>
+<li class="level3"><a href="#news_31_direct">Direct access for window attributes and cursor position</a></li>
+<li class="level3"><a href="#news_31_charmods">Character with modifiers callback</a></li>
+<li class="level3"><a href="#news_31_single">Single buffered framebuffers</a></li>
+<li class="level3"><a href="#news_31_glext">Macro for including extension header</a></li>
+<li class="level3"><a href="#news_31_release">Context release behaviors</a></li>
+<li class="level3"><a href="#news_31_wayland">(Experimental) Wayland support</a></li>
+<li class="level3"><a href="#news_31_mir">(Experimental) Mir support</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="level1"><a href="#news_30">Release notes for 3.0</a><ul><li class="level2"><a href="#features_30">New features in version 3.0</a><ul><li class="level3"><a href="#news_30_cmake">CMake build system</a></li>
+<li class="level3"><a href="#news_30_multiwnd">Multi-window support</a></li>
+<li class="level3"><a href="#news_30_multimon">Multi-monitor support</a></li>
+<li class="level3"><a href="#news_30_unicode">Unicode support</a></li>
+<li class="level3"><a href="#news_30_clipboard">Clipboard text I/O</a></li>
+<li class="level3"><a href="#news_30_gamma">Gamma ramp support</a></li>
+<li class="level3"><a href="#news_30_gles">OpenGL ES support</a></li>
+<li class="level3"><a href="#news_30_egl">(Experimental) EGL support</a></li>
+<li class="level3"><a href="#news_30_hidpi">High-DPI support</a></li>
+<li class="level3"><a href="#news_30_error">Error callback</a></li>
+<li class="level3"><a href="#news_30_wndptr">Per-window user pointer</a></li>
+<li class="level3"><a href="#news_30_iconifyfun">Window iconification callback</a></li>
+<li class="level3"><a href="#news_30_wndposfun">Window position callback</a></li>
+<li class="level3"><a href="#news_30_wndpos">Window position query</a></li>
+<li class="level3"><a href="#news_30_focusfun">Window focus callback</a></li>
+<li class="level3"><a href="#news_30_enterleave">Cursor enter/leave callback</a></li>
+<li class="level3"><a href="#news_30_wndtitle">Initial window title</a></li>
+<li class="level3"><a href="#news_30_hidden">Hidden windows</a></li>
+<li class="level3"><a href="#news_30_undecorated">Undecorated windows</a></li>
+<li class="level3"><a href="#news_30_keymods">Modifier key bit masks</a></li>
+<li class="level3"><a href="#news_30_scancode">Platform-specific scancodes</a></li>
+<li class="level3"><a href="#news_30_jsname">Joystick names</a></li>
+<li class="level3"><a href="#news_30_doxygen">Doxygen documentation</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="textblock"><h1><a class="anchor" id="news_33"></a>
+Release notes for version 3.3</h1>
+<p >These are the release notes for version 3.3. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
+<p >Please review the caveats, deprecations and removals if your project was written against an earlier version of GLFW 3.</p>
+<h2><a class="anchor" id="features_33"></a>
+New features in version 3.3</h2>
+<h3><a class="anchor" id="gamepad_33"></a>
+Gamepad input via SDL_GameControllerDB</h3>
+<p >GLFW can now remap game controllers to a standard Xbox-like layout using a built-in copy of SDL_GameControllerDB. Call <a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a> to check if a joystick has a mapping, <a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a> to retrieve its input state, <a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a> to add newer mappings and <a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a> and <a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a> for mapping related information.</p>
+<p >For more information see <a class="el" href="input_guide.html#gamepad">Gamepad input</a>.</p>
+<h3><a class="anchor" id="moltenvk_33"></a>
+Support for Vulkan on macOS via MoltenVK</h3>
+<p >GLFW now supports <a href="https://moltengl.com/moltenvk/">MoltenVK</a>, a Vulkan implementation on top of the Metal API, and its <code>VK_MVK_macos_surface</code> window surface creation extension. MoltenVK is included in the <a href="https://vulkan.lunarg.com/">macOS Vulkan SDK</a>.</p>
+<p >For more information see <a class="el" href="vulkan_guide.html">Vulkan guide</a>.</p>
+<h3><a class="anchor" id="content_scale_33"></a>
+Content scale queries for DPI-aware rendering</h3>
+<p >GLFW now provides content scales for windows and monitors, i.e. the ratio between their current DPI and the platform's default DPI, with <a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a> and <a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a>.</p>
+<p >Changes of the content scale of a window can be received with the window content scale callback, set with <a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>.</p>
+<p >The <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a> window hint enables automatic resizing of a window by the content scale of the monitor it is placed, on platforms like Windows where this is necessary. This takes effect both on creation and when the window is moved between monitors. It is related to but different from <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a>.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_scale">Window content scale</a>.</p>
+<h3><a class="anchor" id="setwindowattrib_33"></a>
+Support for updating window attributes</h3>
+<p >GLFW now supports changing the <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a> attributes for existing windows with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_attribs">Window attributes</a>.</p>
+<h3><a class="anchor" id="raw_motion_33"></a>
+Support for raw mouse motion</h3>
+<p >GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled cursor mode with the <a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a> input mode. Raw mouse motion input is not yet implemented on macOS. Call <a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a> to check if GLFW can provide raw mouse motion on the current system.</p>
+<p >For more information see <a class="el" href="input_guide.html#raw_mouse_motion">Raw mouse motion</a>.</p>
+<h3><a class="anchor" id="joysticks_33"></a>
+Joystick hats</h3>
+<p >GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with <a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a>. For compatibility, hats are also exposed as buttons. This can be disabled with the <a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a> initialization hint.</p>
+<p >For more information see <a class="el" href="input_guide.html#joystick_hat">Joystick hat states</a>.</p>
+<h3><a class="anchor" id="geterror_33"></a>
+Error query</h3>
+<p >GLFW now supports querying the last error code for the calling thread and its human-readable description with <a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a>. This can be used instead of or together with the error callback.</p>
+<p >For more information see <a class="el" href="intro_guide.html#error_handling">Error handling</a>.</p>
+<h3><a class="anchor" id="init_hints_33"></a>
+Support for initialization hints</h3>
+<p >GLFW now supports setting library initialization hints with <a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a>. These must be set before initialization to take effect. Some of these hints are platform specific but are safe to set on any platform.</p>
+<p >For more information see <a class="el" href="intro_guide.html#init_hints">Initialization hints</a>.</p>
+<h3><a class="anchor" id="attention_33"></a>
+User attention request</h3>
+<p >GLFW now supports requesting user attention with <a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>. Where possible this calls attention to the specified window. On platforms like macOS it calls attention to the whole application.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_attention">Window attention request</a>.</p>
+<h3><a class="anchor" id="maximize_33"></a>
+Window maximization callback</h3>
+<p >GLFW now supports notifying the application that the window has been maximized <a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>. This is called both when the window was maximized by the user and when it was done with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_maximize">Window maximization</a>.</p>
+<h3><a class="anchor" id="workarea_33"></a>
+Query for the monitor work area</h3>
+<p >GLFW now supports querying the work area of a monitor, i.e. the area not occupied by task bars or global menu bars, with <a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a>. On platforms that lack this concept, the whole area of the monitor is returned.</p>
+<p >For more information see <a class="el" href="monitor_guide.html#monitor_workarea">Work area</a>.</p>
+<h3><a class="anchor" id="transparency_33"></a>
+Transparent windows and framebuffers</h3>
+<p >GLFW now supports the creation of windows with transparent framebuffers on systems with desktop compositing enabled with the <a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a> window hint and attribute. This hint must be set before window creation and leaves any window decorations opaque.</p>
+<p >GLFW now also supports whole window transparency with <a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a> and <a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>. This value controls the opacity of the whole window including decorations and unlike framebuffer transparency can be changed at any time after window creation.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_transparency">Window transparency</a>.</p>
+<h3><a class="anchor" id="key_scancode_33"></a>
+Query for the scancode of a key</h3>
+<p >GLFW now supports querying the platform dependent scancode of any physical key with <a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a>.</p>
+<p >For more information see <a class="el" href="input_guide.html#input_key">Key input</a>.</p>
+<h3><a class="anchor" id="center_cursor_33"></a>
+Cursor centering window hint</h3>
+<p >GLFW now supports controlling whether the cursor is centered over newly created full screen windows with the <a class="el" href="window_guide.html#GLFW_CENTER_CURSOR_hint">GLFW_CENTER_CURSOR</a> window hint. It is enabled by default.</p>
+<h3><a class="anchor" id="cursor_hover_33"></a>
+Mouse cursor hover window attribute</h3>
+<p >GLFW now supports polling whether the cursor is hovering over the window content area with the <a class="el" href="window_guide.html#GLFW_HOVERED_attrib">GLFW_HOVERED</a> window attribute. This attribute corresponds to the <a class="el" href="input_guide.html#cursor_enter">cursor enter/leave</a> event.</p>
+<h3><a class="anchor" id="focusonshow_33"></a>
+Window hint and attribute for input focus on show</h3>
+<p >GLFW now has the <a class="el" href="window_guide.html#GLFW_DECORATED_hint">GLFW_FOCUS_ON_SHOW</a> window hint and attribute for controlling whether a window gets input focus when shown. It is enabled by default. It applies both when creating an visible window with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and when showing it with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>.</p>
+<p >This is a workaround for GLFW 3.0 lacking <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a> and will be corrected in the next major version.</p>
+<p >For more information see <a class="el" href="window_guide.html#window_hide">Window visibility</a>.</p>
+<h3><a class="anchor" id="device_userptr_33"></a>
+Monitor and joystick user pointers</h3>
+<p >GLFW now supports setting and querying user pointers for connected monitors and joysticks with <a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a>, <a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a>, <a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a> and <a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a>.</p>
+<p >For more information see <a class="el" href="monitor_guide.html#monitor_userptr">User pointer</a> and <a class="el" href="input_guide.html#joystick_userptr">Joystick user pointer</a>.</p>
+<h3><a class="anchor" id="macos_nib_33"></a>
+macOS menu bar from nib file</h3>
+<p >GLFW will now load a <code>MainMenu.nib</code> file if found in the <code>Contents/Resources</code> directory of the application bundle, as a way to replace the GLFW menu bar without recompiling GLFW. This behavior can be disabled with the <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">GLFW_COCOA_MENUBAR</a> initialization hint.</p>
+<h3><a class="anchor" id="glext_33"></a>
+Support for more context creation extensions</h3>
+<p >The context hint <a class="el" href="window_guide.html#GLFW_SRGB_CAPABLE">GLFW_SRGB_CAPABLE</a> now supports OpenGL ES via <code>WGL_EXT_colorspace</code>, the context hint <a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a> now supports <code>WGL_ARB_create_context_no_error</code> and <code>GLX_ARB_create_context_no_error</code>, the context hint <a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> now supports <code>EGL_KHR_context_flush_control</code> and <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a> now supports <code>EGL_KHR_get_all_proc_addresses</code>.</p>
+<h3><a class="anchor" id="osmesa_33"></a>
+OSMesa off-screen context creation support</h3>
+<p >GLFW now supports creating off-screen OpenGL contexts using <a href="https://www.mesa3d.org/osmesa.html">OSMesa</a> by setting <a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">GLFW_CONTEXT_CREATION_API</a> to <code>GLFW_OSMESA_CONTEXT_API</code>. Native access function have been added to retrieve the OSMesa color and depth buffers.</p>
+<p >There is also a new null backend that uses OSMesa as its native context creation API, intended for automated testing. This backend does not provide input.</p>
+<h2><a class="anchor" id="caveats_33"></a>
+Caveats for version 3.3</h2>
+<h3><a class="anchor" id="joystick_layout_33"></a>
+Layout of joysticks have changed</h3>
+<p >The way joystick elements are arranged have changed to match SDL2 in order to support SDL_GameControllerDB mappings. The layout of joysticks may change again if required for compatibility with SDL2. If you need a known and stable layout for game controllers, see if you can switch to <a class="el" href="input_guide.html#gamepad">Gamepad input</a>.</p>
+<p >Existing code that depends on a specific joystick layout will likely have to be updated.</p>
+<h3><a class="anchor" id="wait_events_33"></a>
+No window required to wait for events</h3>
+<p >The <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> and <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a> functions no longer need a window to be created to wait for events. Before version 3.3 these functions would return immediately if there were no user-created windows. On platforms where only windows can receive events, an internal helper window is used.</p>
+<p >Existing code that depends on the earlier behavior will likely have to be updated.</p>
+<h3><a class="anchor" id="gamma_ramp_size_33"></a>
+Gamma ramp size of 256 may be rejected</h3>
+<p >The documentation for versions before 3.3 stated that a gamma ramp size of 256 would always be accepted. This was never the case on X11 and could lead to artifacts on macOS. The <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a> function has been updated to always generate a ramp of the correct size.</p>
+<p >Existing code that hardcodes a size of 256 should be updated to use the size of the current ramp of a monitor when setting a new ramp for that monitor.</p>
+<h3><a class="anchor" id="xinput_deadzone_33"></a>
+Windows XInput deadzone removed</h3>
+<p >GLFW no longer applies any deadzone to the input state received from the XInput API. This was never done for any other platform joystick API so this change makes the behavior more consistent but you will need to apply your own deadzone if desired.</p>
+<h3><a class="anchor" id="x11_clipboard_33"></a>
+X11 clipboard transfer limits</h3>
+<p >GLFW now supports reading clipboard text via the <code>INCR</code> method, which removes the limit on how much text can be read with <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a>. However, writing via this method is not yet supported, so you may not be able to write a very large string with <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> even if you read it from the clipboard earlier.</p>
+<p >The exact size limit for writing to the clipboard is negotiated with each receiving application but is at least several tens of kilobytes. Note that only the read limit has changed. Any string that could be written before still can be.</p>
+<h3><a class="anchor" id="x11_linking_33"></a>
+X11 extension libraries are loaded dynamically</h3>
+<p >GLFW now loads all X11 extension libraries at initialization. The only X11 library you need to link against is <code>libX11</code>. The header files for the extension libraries are still required for compilation.</p>
+<p >Existing projects and makefiles that link GLFW directly against the extension libraries should still build correctly but will add these libraries as load-time dependencies.</p>
+<h3><a class="anchor" id="cmake_version_33"></a>
+CMake 3.0 or later is required</h3>
+<p >The minimum CMake version has been raised from 2.8.12 to 3.0. This is only a requirement of the GLFW CMake files. The GLFW source files do not depend on CMake.</p>
+<h3><a class="anchor" id="caveat_fbtransparency_33"></a>
+Framebuffer transparency requires DWM transparency</h3>
+<p >GLFW no longer supports framebuffer transparency enabled via <a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a> on Windows 7 if DWM transparency is off (the Transparency setting under Personalization &gt; Window Color).</p>
+<h3><a class="anchor" id="emptyevents_33"></a>
+Empty events on X11 no longer roundtrip to server</h3>
+<p >Starting with GLFW 3.3.7, events posted with <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> now use a separate unnamed pipe instead of sending an X11 client event to the helper window.</p>
+<h2><a class="anchor" id="deprecations_33"></a>
+Deprecations in version 3.3</h2>
+<h3><a class="anchor" id="charmods_callback_33"></a>
+Character with modifiers callback</h3>
+<p >The character with modifiers callback set with <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a> has been deprecated and should if possible not be used.</p>
+<p >Existing code should still work but further bug fixes will likely not be made. The callback will be removed in the next major version.</p>
+<h3><a class="anchor" id="clipboard_window_33"></a>
+Window parameter to clipboard functions</h3>
+<p >The window parameter of the clipboard functions <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> and <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> has been deprecated and is no longer used on any platform. On platforms where the clipboard must be owned by a specific window, an internal helper window is used.</p>
+<p >Existing code should still work unless it depends on a specific window owning the clipboard. New code may pass <code>NULL</code> as the window argument. The parameter will be removed in a future release.</p>
+<h2><a class="anchor" id="removals_33"></a>
+Removals in 3.3</h2>
+<h3><a class="anchor" id="macos_options_33"></a>
+macOS specific CMake options and macros</h3>
+<p >The <code>GLFW_USE_RETINA</code>, <code>GLFW_USE_CHDIR</code> and <code>GLFW_USE_MENUBAR</code> CMake options and the <code>_GLFW_USE_RETINA</code>, <code>_GLFW_USE_CHDIR</code> and <code>_GLFW_USE_MENUBAR</code> compile-time macros have been removed.</p>
+<p >These options and macros are replaced by the window hint <a class="el" href="window_guide.html#GLFW_COCOA_RETINA_FRAMEBUFFER_hint">GLFW_COCOA_RETINA_FRAMEBUFFER</a> and the init hints <a class="el" href="intro_guide.html#GLFW_COCOA_CHDIR_RESOURCES_hint">GLFW_COCOA_CHDIR_RESOURCES</a> and <a class="el" href="intro_guide.html#GLFW_COCOA_MENUBAR_hint">GLFW_COCOA_MENUBAR</a>.</p>
+<p >Existing projects and makefiles that set these options or define these macros during compilation of GLFW will still build but it will have no effect and the default behaviors will be used.</p>
+<h3><a class="anchor" id="vulkan_sdk_33"></a>
+LunarG Vulkan SDK dependency</h3>
+<p >The GLFW test programs that previously depended on the LunarG Vulkan SDK now instead uses a Vulkan loader generated by <a href="https://github.com/Dav1dde/glad">glad2</a>. This means the GLFW CMake files no longer look for the Vulkan SDK.</p>
+<p >Existing CMake projects that depended on the Vulkan SDK cache variables from GLFW will need to call <code>find_package(Vulkan)</code> themselves. CMake 3.7 and later already comes with a <a href="https://cmake.org/cmake/help/latest/module/FindVulkan.html">Vulkan find module</a> similar to the one GLFW previously included.</p>
+<h3><a class="anchor" id="lib_suffix_33"></a>
+CMake option LIB_SUFFIX</h3>
+<p >The <code>LIB_SUFFIX</code> CMake option has been removed. GLFW now uses the GNUInstallDirs CMake package to handle platform specific details like the library directory suffix and the <code>LIB_SUFFIX</code> CMake option has been removed.</p>
+<p >Existing projects and makefiles that set the <code>LIB_SUFFIX</code> option will use the suffix chosen by the GNUInstallDirs package and the option will be ignored.</p>
+<h3><a class="anchor" id="wl_shell_33"></a>
+Support for the wl_shell protocol</h3>
+<p >Support for the wl_shell protocol has been removed and GLFW now only supports the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell then GLFW will fail to initialize.</p>
+<h3><a class="anchor" id="mir_removed_33"></a>
+Mir support</h3>
+<p >The experimental Mir support has been completely removed as the Mir project has implemented support for the Wayland protocol and is recommending that applications use that instead.</p>
+<p >Existing projects and makefiles that select Mir when compiling GLFW will fail. Use Wayland or X11 instead.</p>
+<h2><a class="anchor" id="symbols_33"></a>
+New symbols in version 3.3</h2>
+<h3><a class="anchor" id="functions_33"></a>
+New functions in version 3.3</h3>
+<ul>
+<li><a class="el" href="group__init.html#ga110fd1d3f0412822b4f1908c026f724a">glfwInitHint</a></li>
+<li><a class="el" href="group__init.html#ga944986b4ec0b928d488141f92982aa18">glfwGetError</a></li>
+<li><a class="el" href="group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0">glfwGetMonitorWorkarea</a></li>
+<li><a class="el" href="group__monitor.html#gad3152e84465fa620b601265ebfcdb21b">glfwGetMonitorContentScale</a></li>
+<li><a class="el" href="group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5">glfwGetMonitorUserPointer</a></li>
+<li><a class="el" href="group__monitor.html#ga702750e24313a686d3637297b6e85fda">glfwSetMonitorUserPointer</a></li>
+<li><a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a></li>
+<li><a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></li>
+<li><a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></li>
+<li><a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></li>
+<li><a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></li>
+<li><a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></li>
+<li><a class="el" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></li>
+<li><a class="el" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></li>
+<li><a class="el" href="group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2">glfwRawMouseMotionSupported</a></li>
+<li><a class="el" href="group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a">glfwGetKeyScancode</a></li>
+<li><a class="el" href="group__input.html#ga06e660841b3e79c54da4f54a932c5a2c">glfwGetJoystickHats</a></li>
+<li><a class="el" href="group__input.html#ga6659411aec3c7fcef27780e2cb2d9600">glfwGetJoystickGUID</a></li>
+<li><a class="el" href="group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3">glfwGetJoystickUserPointer</a></li>
+<li><a class="el" href="group__input.html#ga6b2f72d64d636b48a727b437cbb7489e">glfwSetJoystickUserPointer</a></li>
+<li><a class="el" href="group__input.html#gad0f676860f329d80f7e47e9f06a96f00">glfwJoystickIsGamepad</a></li>
+<li><a class="el" href="group__input.html#gaed5104612f2fa8e66aa6e846652ad00f">glfwUpdateGamepadMappings</a></li>
+<li><a class="el" href="group__input.html#ga8aea73a1a25cc6c0486a617019f56728">glfwGetGamepadName</a></li>
+<li><a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></li>
+</ul>
+<h3><a class="anchor" id="types_33"></a>
+New types in version 3.3</h3>
+<ul>
+<li><a class="el" href="group__window.html#ga3017196fdaec33ac3e095765176c2a90">GLFWwindowmaximizefun</a></li>
+<li><a class="el" href="group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e">GLFWwindowcontentscalefun</a></li>
+<li><a class="el" href="structGLFWgamepadstate.html">GLFWgamepadstate</a></li>
+</ul>
+<h3><a class="anchor" id="constants_33"></a>
+New constants in version 3.3</h3>
+<ul>
+<li><a class="el" href="group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4">GLFW_NO_ERROR</a></li>
+<li><a class="el" href="intro_guide.html#GLFW_JOYSTICK_HAT_BUTTONS">GLFW_JOYSTICK_HAT_BUTTONS</a></li>
+<li><a class="el" href="group__init.html#gab937983147a3158d45f88fad7129d9f2">GLFW_COCOA_CHDIR_RESOURCES</a></li>
+<li><a class="el" href="group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf">GLFW_COCOA_MENUBAR</a></li>
+<li><a class="el" href="group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77">GLFW_CENTER_CURSOR</a></li>
+<li><a class="el" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a></li>
+<li><a class="el" href="group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a">GLFW_HOVERED</a></li>
+<li><a class="el" href="group__window.html#gafa94b1da34bfd6488c0d709761504dfc">GLFW_FOCUS_ON_SHOW</a></li>
+<li><a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a></li>
+<li><a class="el" href="group__window.html#gab6ef2d02eb55800d249ccf1af253c35e">GLFW_COCOA_RETINA_FRAMEBUFFER</a></li>
+<li><a class="el" href="group__window.html#ga70fa0fbc745de6aa824df79a580e84b5">GLFW_COCOA_FRAME_NAME</a></li>
+<li><a class="el" href="group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc">GLFW_COCOA_GRAPHICS_SWITCHING</a></li>
+<li><a class="el" href="group__window.html#gae5a9ea2fccccd92edbd343fc56461114">GLFW_X11_CLASS_NAME</a></li>
+<li><a class="el" href="group__window.html#ga494c3c0d911e4b860b946530a3e389e8">GLFW_X11_INSTANCE_NAME</a></li>
+<li><a class="el" href="glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3">GLFW_OSMESA_CONTEXT_API</a></li>
+<li><a class="el" href="group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd">GLFW_HAT_CENTERED</a></li>
+<li><a class="el" href="group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36">GLFW_HAT_UP</a></li>
+<li><a class="el" href="group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5">GLFW_HAT_RIGHT</a></li>
+<li><a class="el" href="group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff">GLFW_HAT_DOWN</a></li>
+<li><a class="el" href="group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff">GLFW_HAT_LEFT</a></li>
+<li><a class="el" href="group__hat__state.html#ga94aea0ae241a8b902883536c592ee693">GLFW_HAT_RIGHT_UP</a></li>
+<li><a class="el" href="group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5">GLFW_HAT_RIGHT_DOWN</a></li>
+<li><a class="el" href="group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129">GLFW_HAT_LEFT_UP</a></li>
+<li><a class="el" href="group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19">GLFW_HAT_LEFT_DOWN</a></li>
+<li><a class="el" href="group__mods.html#gaefeef8fcf825a6e43e241b337897200f">GLFW_MOD_CAPS_LOCK</a></li>
+<li><a class="el" href="group__mods.html#ga64e020b8a42af8376e944baf61feecbe">GLFW_MOD_NUM_LOCK</a></li>
+<li><a class="el" href="input_guide.html#GLFW_LOCK_KEY_MODS">GLFW_LOCK_KEY_MODS</a></li>
+<li><a class="el" href="input_guide.html#GLFW_RAW_MOUSE_MOTION">GLFW_RAW_MOUSE_MOTION</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810">GLFW_GAMEPAD_BUTTON_A</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa">GLFW_GAMEPAD_BUTTON_B</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c">GLFW_GAMEPAD_BUTTON_X</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed">GLFW_GAMEPAD_BUTTON_Y</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3">GLFW_GAMEPAD_BUTTON_LEFT_BUMPER</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f">GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf">GLFW_GAMEPAD_BUTTON_BACK</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021">GLFW_GAMEPAD_BUTTON_START</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc">GLFW_GAMEPAD_BUTTON_GUIDE</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a">GLFW_GAMEPAD_BUTTON_LEFT_THUMB</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a">GLFW_GAMEPAD_BUTTON_RIGHT_THUMB</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a">GLFW_GAMEPAD_BUTTON_DPAD_UP</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6">GLFW_GAMEPAD_BUTTON_DPAD_RIGHT</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c">GLFW_GAMEPAD_BUTTON_DPAD_DOWN</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301">GLFW_GAMEPAD_BUTTON_DPAD_LEFT</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb">GLFW_GAMEPAD_BUTTON_LAST</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a">GLFW_GAMEPAD_BUTTON_CROSS</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82">GLFW_GAMEPAD_BUTTON_CIRCLE</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f">GLFW_GAMEPAD_BUTTON_SQUARE</a></li>
+<li><a class="el" href="group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802">GLFW_GAMEPAD_BUTTON_TRIANGLE</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38">GLFW_GAMEPAD_AXIS_LEFT_X</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5">GLFW_GAMEPAD_AXIS_LEFT_Y</a></li>
+<li><a class="el" href="group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc">GLFW_GAMEPAD_AXIS_RIGHT_X</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4">GLFW_GAMEPAD_AXIS_RIGHT_Y</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e">GLFW_GAMEPAD_AXIS_LEFT_TRIGGER</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab">GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER</a></li>
+<li><a class="el" href="group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86">GLFW_GAMEPAD_AXIS_LAST</a></li>
+</ul>
+<h1><a class="anchor" id="news_32"></a>
+Release notes for 3.2</h1>
+<p >These are the release notes for version 3.2. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
+<h2><a class="anchor" id="features_32"></a>
+New features in version 3.2</h2>
+<h3><a class="anchor" id="news_32_vulkan"></a>
+Support for Vulkan</h3>
+<p >GLFW now supports basic integration with Vulkan with <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>, <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>, <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>, <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> and <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>. Vulkan header inclusion can be selected with <a class="el" href="build_guide.html#GLFW_INCLUDE_VULKAN">GLFW_INCLUDE_VULKAN</a>.</p>
+<h3><a class="anchor" id="news_32_setwindowmonitor"></a>
+Window mode switching</h3>
+<p >GLFW now supports switching between windowed and full screen modes and updating the monitor and desired resolution and refresh rate of full screen windows with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>.</p>
+<h3><a class="anchor" id="news_32_maximize"></a>
+Window maxmimization support</h3>
+<p >GLFW now supports window maximization with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a> and the <a class="el" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a> window hint and attribute.</p>
+<h3><a class="anchor" id="news_32_focus"></a>
+Window input focus control</h3>
+<p >GLFW now supports giving windows input focus with <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>.</p>
+<h3><a class="anchor" id="news_32_sizelimits"></a>
+Window size limit support</h3>
+<p >GLFW now supports setting both absolute and relative window size limits with <a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a> and <a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>.</p>
+<h3><a class="anchor" id="news_32_keyname"></a>
+Localized key names</h3>
+<p >GLFW now supports querying the localized name of printable keys with <a class="el" href="group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f">glfwGetKeyName</a>, either by key token or by scancode.</p>
+<h3><a class="anchor" id="news_32_waittimeout"></a>
+Wait for events with timeout</h3>
+<p >GLFW now supports waiting for events for a set amount of time with <a class="el" href="group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf">glfwWaitEventsTimeout</a>.</p>
+<h3><a class="anchor" id="news_32_icon"></a>
+Window icon support</h3>
+<p >GLFW now supports setting the icon of windows with <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</p>
+<h3><a class="anchor" id="news_32_timer"></a>
+Raw timer access</h3>
+<p >GLFW now supports raw timer values with <a class="el" href="group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa">glfwGetTimerValue</a> and <a class="el" href="group__input.html#ga3289ee876572f6e91f06df3a24824443">glfwGetTimerFrequency</a>.</p>
+<h3><a class="anchor" id="news_32_joystick"></a>
+Joystick connection callback</h3>
+<p >GLFW now supports notifying when a joystick has been connected or disconnected with <a class="el" href="group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c">glfwSetJoystickCallback</a>.</p>
+<h3><a class="anchor" id="news_32_noapi"></a>
+Context-less windows</h3>
+<p >GLFW now supports creating windows without a OpenGL or OpenGL ES context by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_NO_API</code>.</p>
+<h3><a class="anchor" id="news_32_contextapi"></a>
+Run-time context creation API selection</h3>
+<p >GLFW now supports selecting and querying the context creation API at run-time with the <a class="el" href="group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486">GLFW_CONTEXT_CREATION_API</a> hint and attribute.</p>
+<h3><a class="anchor" id="news_32_noerror"></a>
+Error-free context creation</h3>
+<p >GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do not emit errors with the <a class="el" href="group__window.html#ga5a52fdfd46d8249c211f923675728082">GLFW_CONTEXT_NO_ERROR</a> hint, provided the machine supports the <code>GL_KHR_no_error</code> extension.</p>
+<h3><a class="anchor" id="news_32_cmake"></a>
+CMake config-file package support</h3>
+<p >GLFW now supports being used as a <a class="el" href="build_guide.html#build_link_cmake_package">config-file package</a> from other projects for easy linking with the library and its dependencies.</p>
+<h1><a class="anchor" id="news_31"></a>
+Release notes for 3.1</h1>
+<p >These are the release notes for version 3.1. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
+<h2><a class="anchor" id="features_31"></a>
+New features in version 3.1</h2>
+<h3><a class="anchor" id="news_31_cursor"></a>
+Custom mouse cursor images</h3>
+<p >GLFW now supports creating and setting both custom cursor images and standard cursor shapes. They are created with <a class="el" href="group__input.html#ga556f604f73af156c0db0e97c081373c3">glfwCreateCursor</a> or <a class="el" href="group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e">glfwCreateStandardCursor</a>, set with <a class="el" href="group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e">glfwSetCursor</a> and destroyed with <a class="el" href="group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a">glfwDestroyCursor</a>.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_object">Cursor objects</a></dd></dl>
+<h3><a class="anchor" id="news_31_drop"></a>
+Path drop event</h3>
+<p >GLFW now provides a callback for receiving the paths of files and directories dropped onto GLFW windows. The callback is set with <a class="el" href="group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b">glfwSetDropCallback</a>.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#path_drop">Path drop input</a></dd></dl>
+<h3><a class="anchor" id="news_31_emptyevent"></a>
+Main thread wake-up</h3>
+<p >GLFW now provides the <a class="el" href="group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9">glfwPostEmptyEvent</a> function for posting an empty event from another thread to the main thread event queue, causing <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> to return.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#events">Event processing</a></dd></dl>
+<h3><a class="anchor" id="news_31_framesize"></a>
+Window frame size query</h3>
+<p >GLFW now supports querying the size, on each side, of the frame around the content area of a window, with <a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="window_guide.html#window_size">Window size</a></dd></dl>
+<h3><a class="anchor" id="news_31_autoiconify"></a>
+Simultaneous multi-monitor rendering</h3>
+<p >GLFW now supports disabling auto-iconification of full screen windows with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint. This is intended for people building multi-monitor installations, where you need windows to stay in full screen despite losing input focus.</p>
+<h3><a class="anchor" id="news_31_floating"></a>
+Floating windows</h3>
+<p >GLFW now supports floating windows, also called topmost or always on top, for easier debugging with the <a class="el" href="group__window.html#ga7fb0be51407783b41adbf5bec0b09d80">GLFW_FLOATING</a> window hint and attribute.</p>
+<h3><a class="anchor" id="news_31_focused"></a>
+Initially unfocused windows</h3>
+<p >GLFW now supports preventing a windowed mode window from gaining input focus on creation, with the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> window hint.</p>
+<h3><a class="anchor" id="news_31_direct"></a>
+Direct access for window attributes and cursor position</h3>
+<p >GLFW now queries the window input focus, visibility and iconification attributes and the cursor position directly instead of returning cached data.</p>
+<h3><a class="anchor" id="news_31_charmods"></a>
+Character with modifiers callback</h3>
+<p >GLFW now provides a callback for character events with modifier key bits. The callback is set with <a class="el" href="group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c">glfwSetCharModsCallback</a>. Unlike the regular character callback, this will report character events that will not result in a character being input, for example if the Control key is held down.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#input_char">Text input</a></dd></dl>
+<h3><a class="anchor" id="news_31_single"></a>
+Single buffered framebuffers</h3>
+<p >GLFW now supports the creation of single buffered windows, with the <a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">GLFW_DOUBLEBUFFER</a> hint.</p>
+<h3><a class="anchor" id="news_31_glext"></a>
+Macro for including extension header</h3>
+<p >GLFW now includes the extension header appropriate for the chosen OpenGL or OpenGL ES header when <a class="el" href="build_guide.html#GLFW_INCLUDE_GLEXT">GLFW_INCLUDE_GLEXT</a> is defined. GLFW does not provide these headers. They must be provided by your development environment or your OpenGL or OpenGL ES SDK.</p>
+<h3><a class="anchor" id="news_31_release"></a>
+Context release behaviors</h3>
+<p >GLFW now supports controlling and querying whether the pipeline is flushed when a context is made non-current, with the <a class="el" href="group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6">GLFW_CONTEXT_RELEASE_BEHAVIOR</a> hint and attribute, provided the machine supports the <code>GL_KHR_context_flush_control</code> extension.</p>
+<h3><a class="anchor" id="news_31_wayland"></a>
+(Experimental) Wayland support</h3>
+<p >GLFW now has an <em>experimental</em> Wayland display protocol backend that can be selected on Linux with a CMake option.</p>
+<h3><a class="anchor" id="news_31_mir"></a>
+(Experimental) Mir support</h3>
+<p >GLFW now has an <em>experimental</em> Mir display server backend that can be selected on Linux with a CMake option.</p>
+<h1><a class="anchor" id="news_30"></a>
+Release notes for 3.0</h1>
+<p >These are the release notes for version 3.0. For a more detailed view including all fixed bugs see the <a href="https://www.glfw.org/changelog.html">version history</a>.</p>
+<h2><a class="anchor" id="features_30"></a>
+New features in version 3.0</h2>
+<h3><a class="anchor" id="news_30_cmake"></a>
+CMake build system</h3>
+<p >GLFW now uses the CMake build system instead of the various makefiles and project files used by earlier versions. CMake is available for all platforms supported by GLFW, is present in most package systems and can generate makefiles and/or project files for most popular development environments.</p>
+<p >For more information on how to use CMake, see the <a href="https://cmake.org/cmake/help/documentation.html">CMake manual</a>.</p>
+<h3><a class="anchor" id="news_30_multiwnd"></a>
+Multi-window support</h3>
+<p >GLFW now supports the creation of multiple windows, each with their own OpenGL or OpenGL ES context, and all window functions now take a window handle. Event callbacks are now per-window and are provided with the handle of the window that received the event. The <a class="el" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a> function has been added to select which context is current on a given thread.</p>
+<h3><a class="anchor" id="news_30_multimon"></a>
+Multi-monitor support</h3>
+<p >GLFW now explicitly supports multiple monitors. They can be enumerated with <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>, queried with <a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a>, <a class="el" href="group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9">glfwGetMonitorPos</a>, <a class="el" href="group__monitor.html#ga7af83e13489d90379588fb331b9e4b68">glfwGetMonitorName</a> and <a class="el" href="group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea">glfwGetMonitorPhysicalSize</a>, and specified at window creation to make the newly created window full screen on that specific monitor.</p>
+<h3><a class="anchor" id="news_30_unicode"></a>
+Unicode support</h3>
+<p >All string arguments to GLFW functions and all strings returned by GLFW now use the UTF-8 encoding. This includes the window title, error string, clipboard text, monitor and joystick names as well as the extension function arguments (as ASCII is a subset of UTF-8).</p>
+<h3><a class="anchor" id="news_30_clipboard"></a>
+Clipboard text I/O</h3>
+<p >GLFW now supports reading and writing plain text to and from the system clipboard, with the <a class="el" href="group__input.html#ga71a5b20808ea92193d65c21b82580355">glfwGetClipboardString</a> and <a class="el" href="group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd">glfwSetClipboardString</a> functions.</p>
+<h3><a class="anchor" id="news_30_gamma"></a>
+Gamma ramp support</h3>
+<p >GLFW now supports setting and reading back the gamma ramp of monitors, with the <a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> and <a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a> functions. There is also <a class="el" href="group__monitor.html#ga6ac582625c990220785ddd34efa3169a">glfwSetGamma</a>, which generates a ramp from a gamma value and then sets it.</p>
+<h3><a class="anchor" id="news_30_gles"></a>
+OpenGL ES support</h3>
+<p >GLFW now supports the creation of OpenGL ES contexts, by setting the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint to <code>GLFW_OPENGL_ES_API</code>, where creation of such contexts are supported. Note that GLFW <em>does not implement</em> OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and WGL APIs, while AMD provides an EGL implementation instead.</p>
+<h3><a class="anchor" id="news_30_egl"></a>
+(Experimental) EGL support</h3>
+<p >GLFW now has an experimental EGL context creation back end that can be selected through CMake options.</p>
+<h3><a class="anchor" id="news_30_hidpi"></a>
+High-DPI support</h3>
+<p >GLFW now supports high-DPI monitors on both Windows and macOS, giving windows full resolution framebuffers where other UI elements are scaled up. To achieve this, <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> and <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> have been added. These work with pixels, while the rest of the GLFW API works with screen coordinates. This is important as OpenGL uses pixels, not screen coordinates.</p>
+<h3><a class="anchor" id="news_30_error"></a>
+Error callback</h3>
+<p >GLFW now has an error callback, which can provide your application with much more detailed diagnostics than was previously possible. The callback is passed an error code and a description string.</p>
+<h3><a class="anchor" id="news_30_wndptr"></a>
+Per-window user pointer</h3>
+<p >Each window now has a user-defined pointer, retrieved with <a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a> and set with <a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a>, to make it easier to integrate GLFW into C++ code.</p>
+<h3><a class="anchor" id="news_30_iconifyfun"></a>
+Window iconification callback</h3>
+<p >Each window now has a callback for iconification and restoration events, which is set with <a class="el" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>.</p>
+<h3><a class="anchor" id="news_30_wndposfun"></a>
+Window position callback</h3>
+<p >Each window now has a callback for position events, which is set with <a class="el" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>.</p>
+<h3><a class="anchor" id="news_30_wndpos"></a>
+Window position query</h3>
+<p >The position of a window can now be retrieved using <a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>.</p>
+<h3><a class="anchor" id="news_30_focusfun"></a>
+Window focus callback</h3>
+<p >Each windows now has a callback for focus events, which is set with <a class="el" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>.</p>
+<h3><a class="anchor" id="news_30_enterleave"></a>
+Cursor enter/leave callback</h3>
+<p >Each window now has a callback for when the mouse cursor enters or leaves its content area, which is set with <a class="el" href="group__input.html#gad27f8ad0142c038a281466c0966817d8">glfwSetCursorEnterCallback</a>.</p>
+<h3><a class="anchor" id="news_30_wndtitle"></a>
+Initial window title</h3>
+<p >The title of a window is now specified at creation time, as one of the arguments to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</p>
+<h3><a class="anchor" id="news_30_hidden"></a>
+Hidden windows</h3>
+<p >Windows can now be hidden with <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>, shown using <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> and created initially hidden with the <a class="el" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a> window hint and attribute. This allows for off-screen rendering in a way compatible with most drivers, as well as moving a window to a specific position before showing it.</p>
+<h3><a class="anchor" id="news_30_undecorated"></a>
+Undecorated windows</h3>
+<p >Windowed mode windows can now be created without decorations, e.g. things like a frame, a title bar, with the <a class="el" href="group__window.html#ga21b854d36314c94d65aed84405b2f25e">GLFW_DECORATED</a> window hint and attribute. This allows for the creation of things like splash screens.</p>
+<h3><a class="anchor" id="news_30_keymods"></a>
+Modifier key bit masks</h3>
+<p ><a class="el" href="group__mods.html">Modifier key bit mask</a> parameters have been added to the <a class="el" href="group__input.html#ga0184dcb59f6d85d735503dcaae809727">mouse button</a> and <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key</a> callbacks.</p>
+<h3><a class="anchor" id="news_30_scancode"></a>
+Platform-specific scancodes</h3>
+<p >A scancode parameter has been added to the <a class="el" href="group__input.html#ga5bd751b27b90f865d2ea613533f0453c">key callback</a>. Keys that don't have a <a class="el" href="group__keys.html">key token</a> still get passed on with the key parameter set to <code>GLFW_KEY_UNKNOWN</code>. These scancodes will vary between machines and are intended to be used for key bindings.</p>
+<h3><a class="anchor" id="news_30_jsname"></a>
+Joystick names</h3>
+<p >The name of a joystick can now be retrieved using <a class="el" href="group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978">glfwGetJoystickName</a>.</p>
+<h3><a class="anchor" id="news_30_doxygen"></a>
+Doxygen documentation</h3>
+<p >You are reading it. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/news_8dox.html b/libs/glfw-3.3.8/docs/html/news_8dox.html
new file mode 100644
index 0000000..e200170
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/news_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: news.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">news.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/open.png b/libs/glfw-3.3.8/docs/html/open.png
new file mode 100644
index 0000000..30f75c7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/open.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/pages.html b/libs/glfw-3.3.8/docs/html/pages.html
new file mode 100644
index 0000000..6f2d4eb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/pages.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Guides</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+ <div class="headertitle"><div class="title">Guides</div></div>
+</div><!--header-->
+<div class="contents">
+<div class="textblock">Here is a list of all related documentation pages:</div><div class="directory">
+<table class="directory">
+<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="news.html" target="_self">Release notes</a></td><td class="desc"></td></tr>
+<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="quick_guide.html" target="_self">Getting started</a></td><td class="desc"></td></tr>
+<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="moving_guide.html" target="_self">Moving from GLFW 2 to 3</a></td><td class="desc"></td></tr>
+<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="compile_guide.html" target="_self">Compiling GLFW</a></td><td class="desc"></td></tr>
+<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="build_guide.html" target="_self">Building applications</a></td><td class="desc"></td></tr>
+<tr id="row_5_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="intro_guide.html" target="_self">Introduction to the API</a></td><td class="desc"></td></tr>
+<tr id="row_6_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="context_guide.html" target="_self">Context guide</a></td><td class="desc"></td></tr>
+<tr id="row_7_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="monitor_guide.html" target="_self">Monitor guide</a></td><td class="desc"></td></tr>
+<tr id="row_8_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="window_guide.html" target="_self">Window guide</a></td><td class="desc"></td></tr>
+<tr id="row_9_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="input_guide.html" target="_self">Input guide</a></td><td class="desc"></td></tr>
+<tr id="row_10_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="vulkan_guide.html" target="_self">Vulkan guide</a></td><td class="desc"></td></tr>
+<tr id="row_11_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="compat_guide.html" target="_self">Standards conformance</a></td><td class="desc"></td></tr>
+<tr id="row_12_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="internals_guide.html" target="_self">Internal structure</a></td><td class="desc"></td></tr>
+<tr id="row_13_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><a class="el" href="deprecated.html" target="_self">Deprecated List</a></td><td class="desc"></td></tr>
+</table>
+</div><!-- directory -->
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/quick_8dox.html b/libs/glfw-3.3.8/docs/html/quick_8dox.html
new file mode 100644
index 0000000..f65bd4c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/quick_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: quick.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">quick.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/quick_guide.html b/libs/glfw-3.3.8/docs/html/quick_guide.html
new file mode 100644
index 0000000..6a31489
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/quick_guide.html
@@ -0,0 +1,391 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Getting started</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Getting started </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#quick_steps">Step by step</a><ul><li class="level2"><a href="#quick_include">Including the GLFW header</a></li>
+<li class="level2"><a href="#quick_init_term">Initializing and terminating GLFW</a></li>
+<li class="level2"><a href="#quick_capture_error">Setting an error callback</a></li>
+<li class="level2"><a href="#quick_create_window">Creating a window and context</a></li>
+<li class="level2"><a href="#quick_context_current">Making the OpenGL context current</a></li>
+<li class="level2"><a href="#quick_window_close">Checking the window close flag</a></li>
+<li class="level2"><a href="#quick_key_input">Receiving input events</a></li>
+<li class="level2"><a href="#quick_render">Rendering with OpenGL</a></li>
+<li class="level2"><a href="#quick_timer">Reading the timer</a></li>
+<li class="level2"><a href="#quick_swap_buffers">Swapping buffers</a></li>
+<li class="level2"><a href="#quick_process_events">Processing events</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#quick_example">Putting it together</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This guide takes you through writing a simple application using GLFW 3. The application will create a window and OpenGL context, render a rotating triangle and exit when the user closes the window or presses <em>Escape</em>. This guide will introduce a few of the most commonly used functions, but there are many more.</p>
+<p >This guide assumes no experience with earlier versions of GLFW. If you have used GLFW 2 in the past, read <a class="el" href="moving_guide.html">Moving from GLFW 2 to 3</a>, as some functions behave differently in GLFW 3.</p>
+<h1><a class="anchor" id="quick_steps"></a>
+Step by step</h1>
+<h2><a class="anchor" id="quick_include"></a>
+Including the GLFW header</h2>
+<p >In the source files of your application where you use GLFW, you need to include its header file.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
+</div><!-- fragment --><p >This header provides all the constants, types and function prototypes of the GLFW API.</p>
+<p >By default it also includes the OpenGL header from your development environment. On some platforms this header only supports older versions of OpenGL. The most extreme case is Windows, where it typically only supports OpenGL 1.2.</p>
+<p >Most programs will instead use an <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> and include its header. This example uses files generated by <a href="https://gen.glad.sh/">glad</a>. The GLFW header can detect most such headers if they are included first and will then not include the one from your development environment.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+</div><!-- fragment --><p >To make sure there will be no header conflicts, you can define <a class="el" href="build_guide.html#GLFW_INCLUDE_NONE">GLFW_INCLUDE_NONE</a> before the GLFW header to explicitly disable inclusion of the development environment header. This also allows the two headers to be included in any order.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
+</div><!-- fragment --><h2><a class="anchor" id="quick_init_term"></a>
+Initializing and terminating GLFW</h2>
+<p >Before you can use most GLFW functions, the library must be initialized. On successful initialization, <code>GLFW_TRUE</code> is returned. If an error occurred, <code>GLFW_FALSE</code> is returned.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Initialization failed</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__init_html_ga317aac130a235ab08c6db0834907d85e"><div class="ttname"><a href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a></div><div class="ttdeci">int glfwInit(void)</div><div class="ttdoc">Initializes the GLFW library.</div></div>
+</div><!-- fragment --><p >Note that <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code> are and will always be one and zero.</p>
+<p >When you are done using GLFW, typically just before the application exits, you need to terminate GLFW.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
+<div class="ttc" id="agroup__init_html_gaaae48c0a18607ea4a4ba951d939f0901"><div class="ttname"><a href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a></div><div class="ttdeci">void glfwTerminate(void)</div><div class="ttdoc">Terminates the GLFW library.</div></div>
+</div><!-- fragment --><p >This destroys any remaining windows and releases any other resources allocated by GLFW. After this call, you must initialize GLFW again before using any GLFW functions that require it.</p>
+<h2><a class="anchor" id="quick_capture_error"></a>
+Setting an error callback</h2>
+<p >Most events are reported through callbacks, whether it's a key being pressed, a GLFW window being moved, or an error occurring. Callbacks are C functions (or C++ static methods) that are called by GLFW with arguments describing the event.</p>
+<p >In case a GLFW function fails, an error is reported to the GLFW error callback. You can receive these reports with an error callback. This function must have the signature below but may do anything permitted in other callbacks.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> error, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
+<div class="line">{</div>
+<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;Error: %s\n&quot;</span>, description);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >Callback functions must be set, so GLFW knows to call them. The function to set the error callback is one of the few GLFW functions that may be called before initialization, which lets you be notified of errors both during and after initialization.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
+<div class="ttc" id="agroup__init_html_gaff45816610d53f0b83656092a4034f40"><div class="ttname"><a href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a></div><div class="ttdeci">GLFWerrorfun glfwSetErrorCallback(GLFWerrorfun callback)</div><div class="ttdoc">Sets the error callback.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="quick_create_window"></a>
+Creating a window and context</h2>
+<p >The window and its OpenGL context are created with a single call to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, which returns a handle to the created combined window and context object</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
+<div class="line"><span class="keywordflow">if</span> (!window)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Window or OpenGL context creation failed</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><p >This creates a 640 by 480 windowed mode window with an OpenGL context. If window or OpenGL context creation fails, <code>NULL</code> will be returned. You should always check the return value. While window creation rarely fails, context creation depends on properly installed drivers and may fail even on machines with the necessary hardware.</p>
+<p >By default, the OpenGL context GLFW creates may have any version. You can require a minimum OpenGL version by setting the <code>GLFW_CONTEXT_VERSION_MAJOR</code> and <code>GLFW_CONTEXT_VERSION_MINOR</code> hints <em>before</em> creation. If the required minimum version is not supported on the machine, context (and window) creation fails.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>, 2);</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>, 0);</div>
+<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
+<div class="line"><span class="keywordflow">if</span> (!window)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Window or context creation failed</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga31aca791e4b538c4e4a771eb95cc2d07"><div class="ttname"><a href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a></div><div class="ttdeci">#define GLFW_CONTEXT_VERSION_MINOR</div><div class="ttdoc">Context client API minor version hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:961</div></div>
+<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+<div class="ttc" id="agroup__window_html_gafe5e4922de1f9932d7e9849bb053b0c0"><div class="ttname"><a href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a></div><div class="ttdeci">#define GLFW_CONTEXT_VERSION_MAJOR</div><div class="ttdoc">Context client API major version hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:955</div></div>
+</div><!-- fragment --><p >The window handle is passed to all window related functions and is provided to along to all window related callbacks, so they can tell which window received the event.</p>
+<p >When a window and context is no longer needed, destroy it.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
+</div><!-- fragment --><p >Once this function is called, no more events will be delivered for that window and its handle becomes invalid.</p>
+<h2><a class="anchor" id="quick_context_current"></a>
+Making the OpenGL context current</h2>
+<p >Before you can use the OpenGL API, you must have a current OpenGL context.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
+<div class="ttc" id="agroup__context_html_ga1c04dc242268f827290fe40aa1c91157"><div class="ttname"><a href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a></div><div class="ttdeci">void glfwMakeContextCurrent(GLFWwindow *window)</div><div class="ttdoc">Makes the context of the specified window current for the calling thread.</div></div>
+</div><!-- fragment --><p >The context will remain current until you make another context current or until the window owning the current context is destroyed.</p>
+<p >If you are using an <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> to access modern OpenGL then this is when to initialize it, as the loader needs a current context to load from. This example uses <a href="https://github.com/Dav1dde/glad">glad</a>, but the same rule applies to all such libraries.</p>
+<div class="fragment"><div class="line">gladLoadGL(<a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
+<div class="ttc" id="agroup__context_html_ga35f1837e6f666781842483937612f163"><div class="ttname"><a href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a></div><div class="ttdeci">GLFWglproc glfwGetProcAddress(const char *procname)</div><div class="ttdoc">Returns the address of the specified function for the current context.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="quick_window_close"></a>
+Checking the window close flag</h2>
+<p >Each window has a flag indicating whether the window should be closed.</p>
+<p >When the user attempts to close the window, either by pressing the close widget in the title bar or using a key combination like Alt+F4, this flag is set to 1. Note that <b>the window isn't actually closed</b>, so you are expected to monitor this flag and either destroy the window or give some kind of feedback to the user.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Keep running</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
+</div><!-- fragment --><p >You can be notified when the user is attempting to close the window by setting a close callback with <a class="el" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>. The callback will be called immediately after the close flag has been set.</p>
+<p >You can also set it yourself with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>. This can be useful if you want to interpret other kinds of input as closing the window, like for example pressing the <em>Escape</em> key.</p>
+<h2><a class="anchor" id="quick_key_input"></a>
+Receiving input events</h2>
+<p >Each window has a large number of callbacks that can be set to receive all the various kinds of events. To receive key press and release events, create a key callback function.</p>
+<div class="fragment"><div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:312</div></div>
+<div class="ttc" id="agroup__input_html_ga2485743d0b59df3791c45951c4195265"><div class="ttname"><a href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a></div><div class="ttdeci">#define GLFW_PRESS</div><div class="ttdoc">The key or mouse button was pressed.</div><div class="ttdef"><b>Definition:</b> glfw3.h:338</div></div>
+<div class="ttc" id="agroup__keys_html_gaac6596c350b635c245113b81c2123b93"><div class="ttname"><a href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a></div><div class="ttdeci">#define GLFW_KEY_ESCAPE</div><div class="ttdef"><b>Definition:</b> glfw3.h:446</div></div>
+<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
+</div><!-- fragment --><p >The key callback, like other window related callbacks, are set per-window.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
+<div class="ttc" id="agroup__input_html_ga1caf18159767e761185e49a3be019f8d"><div class="ttname"><a href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a></div><div class="ttdeci">GLFWkeyfun glfwSetKeyCallback(GLFWwindow *window, GLFWkeyfun callback)</div><div class="ttdoc">Sets the key callback.</div></div>
+</div><!-- fragment --><p >In order for event callbacks to be called when events occur, you need to process events as described below.</p>
+<h2><a class="anchor" id="quick_render"></a>
+Rendering with OpenGL</h2>
+<p >Once you have a current OpenGL context, you can use OpenGL normally. In this tutorial, a multi-colored rotating triangle will be rendered. The framebuffer size needs to be retrieved for <code>glViewport</code>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
+<div class="line">glViewport(0, 0, width, height);</div>
+<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
+</div><!-- fragment --><p >You can also set a framebuffer size callback using <a class="el" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a> and be notified when the size changes.</p>
+<p >The details of how to render with OpenGL is outside the scope of this tutorial, but there are many excellent resources for learning modern OpenGL. Here are a few of them:</p>
+<ul>
+<li><a href="https://antongerdelan.net/opengl/">Anton's OpenGL 4 Tutorials</a></li>
+<li><a href="https://learnopengl.com/">Learn OpenGL</a></li>
+<li><a href="https://open.gl/">Open.GL</a></li>
+</ul>
+<p >These all happen to use GLFW, but OpenGL itself works the same whatever API you use to create the window and context.</p>
+<h2><a class="anchor" id="quick_timer"></a>
+Reading the timer</h2>
+<p >To create smooth animation, a time source is needed. GLFW provides a timer that returns the number of seconds since initialization. The time source used is the most accurate on each platform and generally has micro- or nanosecond resolution.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">double</span> time = <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>();</div>
+<div class="ttc" id="agroup__input_html_gaa6cf4e7a77158a3b8fd00328b1720a4a"><div class="ttname"><a href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a></div><div class="ttdeci">double glfwGetTime(void)</div><div class="ttdoc">Returns the GLFW time.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="quick_swap_buffers"></a>
+Swapping buffers</h2>
+<p >GLFW windows by default use double buffering. That means that each window has two rendering buffers; a front buffer and a back buffer. The front buffer is the one being displayed and the back buffer the one you render to.</p>
+<p >When the entire frame has been rendered, the buffers need to be swapped with one another, so the back buffer becomes the front buffer and vice versa.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
+</div><!-- fragment --><p >The swap interval indicates how many frames to wait until swapping the buffers, commonly known as <em>vsync</em>. By default, the swap interval is zero, meaning buffer swapping will occur immediately. On fast machines, many of those frames will never be seen, as the screen is still only updated typically 60-75 times per second, so this wastes a lot of CPU and GPU cycles.</p>
+<p >Also, because the buffers will be swapped in the middle the screen update, leading to <a href="https://en.wikipedia.org/wiki/Screen_tearing">screen tearing</a>.</p>
+<p >For these reasons, applications will typically want to set the swap interval to one. It can be set to higher values, but this is usually not recommended, because of the input latency it leads to.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
+<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
+</div><!-- fragment --><p >This function acts on the current context and will fail unless a context is current.</p>
+<h2><a class="anchor" id="quick_process_events"></a>
+Processing events</h2>
+<p >GLFW needs to communicate regularly with the window system both in order to receive events and to show that the application hasn't locked up. Event processing must be done regularly while you have visible windows and is normally done each frame after buffer swapping.</p>
+<p >There are two methods for processing pending events; polling and waiting. This example will use event polling, which processes only those events that have already been received and then returns immediately.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
+<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
+</div><!-- fragment --><p >This is the best choice when rendering continually, like most games do. If instead you only need to update your rendering once you have received new input, <a class="el" href="group__window.html#ga554e37d781f0a997656c26b2c56c835e">glfwWaitEvents</a> is a better choice. It waits until at least one event has been received, putting the thread to sleep in the meantime, and then processes all received events. This saves a great deal of CPU cycles and is useful for, for example, many kinds of editing tools.</p>
+<h1><a class="anchor" id="quick_example"></a>
+Putting it together</h1>
+<p >Now that you know how to initialize GLFW, create a window and poll for keyboard input, it's possible to create a simple program.</p>
+<p >This program creates a 640 by 480 windowed mode window and starts a loop that clears the screen, renders a triangle and processes events until the user either presses <em>Escape</em> or closes the window.</p>
+<div class="fragment"><div class="line"> </div>
+<div class="line"><span class="preprocessor">#include &lt;glad/gl.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#define GLFW_INCLUDE_NONE</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="line"> </div>
+<div class="line"><span class="preprocessor">#include &quot;linmath.h&quot;</span></div>
+<div class="line"> </div>
+<div class="line"><span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">struct</span></div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordtype">float</span> x, y;</div>
+<div class="line"> <span class="keywordtype">float</span> r, g, b;</div>
+<div class="line">} vertices[3] =</div>
+<div class="line">{</div>
+<div class="line"> { -0.6f, -0.4f, 1.f, 0.f, 0.f },</div>
+<div class="line"> { 0.6f, -0.4f, 0.f, 1.f, 0.f },</div>
+<div class="line"> { 0.f, 0.6f, 0.f, 0.f, 1.f }</div>
+<div class="line">};</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* vertex_shader_text =</div>
+<div class="line"><span class="stringliteral">&quot;#version 110\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;uniform mat4 MVP;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;attribute vec3 vCol;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;attribute vec2 vPos;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;varying vec3 color;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;void main()\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;{\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot; gl_Position = MVP * vec4(vPos, 0.0, 1.0);\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot; color = vCol;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;}\n&quot;</span>;</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* fragment_shader_text =</div>
+<div class="line"><span class="stringliteral">&quot;#version 110\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;varying vec3 color;\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;void main()\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;{\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot; gl_FragColor = vec4(color, 1.0);\n&quot;</span></div>
+<div class="line"><span class="stringliteral">&quot;}\n&quot;</span>;</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> error_callback(<span class="keywordtype">int</span> error, <span class="keyword">const</span> <span class="keywordtype">char</span>* description)</div>
+<div class="line">{</div>
+<div class="line"> fprintf(stderr, <span class="stringliteral">&quot;Error: %s\n&quot;</span>, description);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keyword">static</span> <span class="keywordtype">void</span> key_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> key, <span class="keywordtype">int</span> scancode, <span class="keywordtype">int</span> action, <span class="keywordtype">int</span> mods)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (key == <a class="code hl_define" href="group__keys.html#gaac6596c350b635c245113b81c2123b93">GLFW_KEY_ESCAPE</a> &amp;&amp; action == <a class="code hl_define" href="group__input.html#ga2485743d0b59df3791c45951c4195265">GLFW_PRESS</a>)</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)</div>
+<div class="line">{</div>
+<div class="line"> <a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window;</div>
+<div class="line"> GLuint vertex_buffer, vertex_shader, fragment_shader, program;</div>
+<div class="line"> GLint mvp_location, vpos_location, vcol_location;</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__init.html#gaff45816610d53f0b83656092a4034f40">glfwSetErrorCallback</a>(error_callback);</div>
+<div class="line"> </div>
+<div class="line"> <span class="keywordflow">if</span> (!<a class="code hl_function" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>())</div>
+<div class="line"> exit(EXIT_FAILURE);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0">GLFW_CONTEXT_VERSION_MAJOR</a>, 2);</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07">GLFW_CONTEXT_VERSION_MINOR</a>, 0);</div>
+<div class="line"> </div>
+<div class="line"> window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Simple example&quot;</span>, NULL, NULL);</div>
+<div class="line"> <span class="keywordflow">if</span> (!window)</div>
+<div class="line"> {</div>
+<div class="line"> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
+<div class="line"> exit(EXIT_FAILURE);</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__input.html#ga1caf18159767e761185e49a3be019f8d">glfwSetKeyCallback</a>(window, key_callback);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__context.html#ga1c04dc242268f827290fe40aa1c91157">glfwMakeContextCurrent</a>(window);</div>
+<div class="line"> gladLoadGL(<a class="code hl_function" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>);</div>
+<div class="line"> <a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
+<div class="line"> </div>
+<div class="line"> <span class="comment">// NOTE: OpenGL error checks have been omitted for brevity</span></div>
+<div class="line"> </div>
+<div class="line"> glGenBuffers(1, &amp;vertex_buffer);</div>
+<div class="line"> glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer);</div>
+<div class="line"> glBufferData(GL_ARRAY_BUFFER, <span class="keyword">sizeof</span>(vertices), vertices, GL_STATIC_DRAW);</div>
+<div class="line"> </div>
+<div class="line"> vertex_shader = glCreateShader(GL_VERTEX_SHADER);</div>
+<div class="line"> glShaderSource(vertex_shader, 1, &amp;vertex_shader_text, NULL);</div>
+<div class="line"> glCompileShader(vertex_shader);</div>
+<div class="line"> </div>
+<div class="line"> fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);</div>
+<div class="line"> glShaderSource(fragment_shader, 1, &amp;fragment_shader_text, NULL);</div>
+<div class="line"> glCompileShader(fragment_shader);</div>
+<div class="line"> </div>
+<div class="line"> program = glCreateProgram();</div>
+<div class="line"> glAttachShader(program, vertex_shader);</div>
+<div class="line"> glAttachShader(program, fragment_shader);</div>
+<div class="line"> glLinkProgram(program);</div>
+<div class="line"> </div>
+<div class="line"> mvp_location = glGetUniformLocation(program, <span class="stringliteral">&quot;MVP&quot;</span>);</div>
+<div class="line"> vpos_location = glGetAttribLocation(program, <span class="stringliteral">&quot;vPos&quot;</span>);</div>
+<div class="line"> vcol_location = glGetAttribLocation(program, <span class="stringliteral">&quot;vCol&quot;</span>);</div>
+<div class="line"> </div>
+<div class="line"> glEnableVertexAttribArray(vpos_location);</div>
+<div class="line"> glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE,</div>
+<div class="line"> <span class="keyword">sizeof</span>(vertices[0]), (<span class="keywordtype">void</span>*) 0);</div>
+<div class="line"> glEnableVertexAttribArray(vcol_location);</div>
+<div class="line"> glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE,</div>
+<div class="line"> <span class="keyword">sizeof</span>(vertices[0]), (<span class="keywordtype">void</span>*) (<span class="keyword">sizeof</span>(<span class="keywordtype">float</span>) * 2));</div>
+<div class="line"> </div>
+<div class="line"> <span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
+<div class="line"> {</div>
+<div class="line"> <span class="keywordtype">float</span> ratio;</div>
+<div class="line"> <span class="keywordtype">int</span> width, height;</div>
+<div class="line"> mat4x4 m, p, mvp;</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
+<div class="line"> ratio = width / (float) height;</div>
+<div class="line"> </div>
+<div class="line"> glViewport(0, 0, width, height);</div>
+<div class="line"> glClear(GL_COLOR_BUFFER_BIT);</div>
+<div class="line"> </div>
+<div class="line"> mat4x4_identity(m);</div>
+<div class="line"> mat4x4_rotate_Z(m, m, (<span class="keywordtype">float</span>) <a class="code hl_function" href="group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a">glfwGetTime</a>());</div>
+<div class="line"> mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f);</div>
+<div class="line"> mat4x4_mul(mvp, p, m);</div>
+<div class="line"> </div>
+<div class="line"> glUseProgram(program);</div>
+<div class="line"> glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (<span class="keyword">const</span> GLfloat*) mvp);</div>
+<div class="line"> glDrawArrays(GL_TRIANGLES, 0, 3);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
+<div class="line"> }</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>();</div>
+<div class="line"> exit(EXIT_SUCCESS);</div>
+<div class="line">}</div>
+<div class="line"> </div>
+</div><!-- fragment --><p >The program above can be found in the <a href="https://www.glfw.org/download.html">source package</a> as <code>examples/simple.c</code> and is compiled along with all other examples when you build GLFW. If you built GLFW from the source package then you already have this as <code>simple.exe</code> on Windows, <code>simple</code> on Linux or <code>simple.app</code> on macOS.</p>
+<p >This tutorial used only a few of the many functions GLFW provides. There are guides for each of the areas covered by GLFW. Each guide will introduce all the functions for that category.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<p >You can access reference documentation for any GLFW function by clicking it and the reference for each function links to related functions and guide sections.</p>
+<p >The tutorial ends here. Once you have written a program that uses GLFW, you will need to compile and link it. How to do that depends on the development environment you are using and is best explained by the documentation for that environment. To learn about the details that are specific to GLFW, see <a class="el" href="build_guide.html">Building applications</a>. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_0.html b/libs/glfw-3.3.8/docs/html/search/all_0.html
new file mode 100644
index 0000000..bb9e364
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_0.js b/libs/glfw-3.3.8/docs/html/search/all_0.js
new file mode 100644
index 0000000..c61320f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['axes_0',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_1.html b/libs/glfw-3.3.8/docs/html/search/all_1.html
new file mode 100644
index 0000000..8989416
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_1.js b/libs/glfw-3.3.8/docs/html/search/all_1.js
new file mode 100644
index 0000000..30bfd28
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_1.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['blue_0',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]],
+ ['bluebits_1',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]],
+ ['build_2edox_2',['build.dox',['../build_8dox.html',1,'']]],
+ ['building_20applications_3',['Building applications',['../build_guide.html',1,'']]],
+ ['buttons_4',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_10.html b/libs/glfw-3.3.8/docs/html/search/all_10.html
new file mode 100644
index 0000000..a7c1f9c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_10.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_10.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_10.js b/libs/glfw-3.3.8/docs/html/search/all_10.js
new file mode 100644
index 0000000..f129247
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_10.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['vulkan_20guide_0',['Vulkan guide',['../vulkan_guide.html',1,'']]],
+ ['vulkan_20support_20reference_1',['Vulkan support reference',['../group__vulkan.html',1,'']]],
+ ['vulkan_2edox_2',['vulkan.dox',['../vulkan_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_11.html b/libs/glfw-3.3.8/docs/html/search/all_11.html
new file mode 100644
index 0000000..8f86146
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_11.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_11.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_11.js b/libs/glfw-3.3.8/docs/html/search/all_11.js
new file mode 100644
index 0000000..c21189f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_11.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['width_0',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]],
+ ['window_20guide_1',['Window guide',['../window_guide.html',1,'']]],
+ ['window_20reference_2',['Window reference',['../group__window.html',1,'']]],
+ ['window_2edox_3',['window.dox',['../window_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_2.html b/libs/glfw-3.3.8/docs/html/search/all_2.html
new file mode 100644
index 0000000..98e648c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_2.js b/libs/glfw-3.3.8/docs/html/search/all_2.js
new file mode 100644
index 0000000..2055dca
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_2.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['compat_2edox_0',['compat.dox',['../compat_8dox.html',1,'']]],
+ ['compile_2edox_1',['compile.dox',['../compile_8dox.html',1,'']]],
+ ['compiling_20glfw_2',['Compiling GLFW',['../compile_guide.html',1,'']]],
+ ['context_20guide_3',['Context guide',['../context_guide.html',1,'']]],
+ ['context_20reference_4',['Context reference',['../group__context.html',1,'']]],
+ ['context_2edox_5',['context.dox',['../context_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_3.html b/libs/glfw-3.3.8/docs/html/search/all_3.html
new file mode 100644
index 0000000..f4e8da7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_3.js b/libs/glfw-3.3.8/docs/html/search/all_3.js
new file mode 100644
index 0000000..4d85845
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_4.html b/libs/glfw-3.3.8/docs/html/search/all_4.html
new file mode 100644
index 0000000..678d3a2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_4.js b/libs/glfw-3.3.8/docs/html/search/all_4.js
new file mode 100644
index 0000000..eedfab6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['error_20codes_0',['Error codes',['../group__errors.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_5.html b/libs/glfw-3.3.8/docs/html/search/all_5.html
new file mode 100644
index 0000000..aa9af78
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_5.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_5.js b/libs/glfw-3.3.8/docs/html/search/all_5.js
new file mode 100644
index 0000000..f73f5bc
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_5.js
@@ -0,0 +1,477 @@
+var searchData=
+[
+ ['gamepad_20axes_0',['Gamepad axes',['../group__gamepad__axes.html',1,'']]],
+ ['gamepad_20buttons_1',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]],
+ ['getting_20started_2',['Getting started',['../quick_guide.html',1,'']]],
+ ['glapientry_3',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]],
+ ['glfw3_2eh_4',['glfw3.h',['../glfw3_8h.html',1,'']]],
+ ['glfw3native_2eh_5',['glfw3native.h',['../glfw3native_8h.html',1,'']]],
+ ['glfw_5faccum_5falpha_5fbits_6',['GLFW_ACCUM_ALPHA_BITS',['../group__window.html#gae829b55591c18169a40ab4067a041b1f',1,'glfw3.h']]],
+ ['glfw_5faccum_5fblue_5fbits_7',['GLFW_ACCUM_BLUE_BITS',['../group__window.html#ga22bbe9104a8ce1f8b88fb4f186aa36ce',1,'glfw3.h']]],
+ ['glfw_5faccum_5fgreen_5fbits_8',['GLFW_ACCUM_GREEN_BITS',['../group__window.html#ga65713cee1326f8e9d806fdf93187b471',1,'glfw3.h']]],
+ ['glfw_5faccum_5fred_5fbits_9',['GLFW_ACCUM_RED_BITS',['../group__window.html#gaead34a9a683b2bc20eecf30ba738bfc6',1,'glfw3.h']]],
+ ['glfw_5falpha_5fbits_10',['GLFW_ALPHA_BITS',['../group__window.html#gafed79a3f468997877da86c449bd43e8c',1,'glfw3.h']]],
+ ['glfw_5fany_5frelease_5fbehavior_11',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]],
+ ['glfw_5fapi_5funavailable_12',['GLFW_API_UNAVAILABLE',['../group__errors.html#ga56882b290db23261cc6c053c40c2d08e',1,'glfw3.h']]],
+ ['glfw_5fapientry_5fdefined_13',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]],
+ ['glfw_5farrow_5fcursor_14',['GLFW_ARROW_CURSOR',['../group__shapes.html#ga8ab0e717245b85506cb0eaefdea39d0a',1,'glfw3.h']]],
+ ['glfw_5fauto_5ficonify_15',['GLFW_AUTO_ICONIFY',['../group__window.html#ga9d9874fc928200136a6dcdad726aa252',1,'glfw3.h']]],
+ ['glfw_5faux_5fbuffers_16',['GLFW_AUX_BUFFERS',['../group__window.html#gab05108c5029443b371112b031d1fa174',1,'glfw3.h']]],
+ ['glfw_5fblue_5fbits_17',['GLFW_BLUE_BITS',['../group__window.html#gab292ea403db6d514537b515311bf9ae3',1,'glfw3.h']]],
+ ['glfw_5fcenter_5fcursor_18',['GLFW_CENTER_CURSOR',['../group__window.html#ga5ac0847c0aa0b3619f2855707b8a7a77',1,'glfw3.h']]],
+ ['glfw_5fclient_5fapi_19',['GLFW_CLIENT_API',['../group__window.html#ga649309cf72a3d3de5b1348ca7936c95b',1,'glfw3.h']]],
+ ['glfw_5fcocoa_5fchdir_5fresources_20',['GLFW_COCOA_CHDIR_RESOURCES',['../group__init.html#gab937983147a3158d45f88fad7129d9f2',1,'glfw3.h']]],
+ ['glfw_5fcocoa_5fframe_5fname_21',['GLFW_COCOA_FRAME_NAME',['../group__window.html#ga70fa0fbc745de6aa824df79a580e84b5',1,'glfw3.h']]],
+ ['glfw_5fcocoa_5fgraphics_5fswitching_22',['GLFW_COCOA_GRAPHICS_SWITCHING',['../group__window.html#ga53c84ed2ddd94e15bbd44b1f6f7feafc',1,'glfw3.h']]],
+ ['glfw_5fcocoa_5fmenubar_23',['GLFW_COCOA_MENUBAR',['../group__init.html#ga71e0b4ce2f2696a84a9b8c5e12dc70cf',1,'glfw3.h']]],
+ ['glfw_5fcocoa_5fretina_5fframebuffer_24',['GLFW_COCOA_RETINA_FRAMEBUFFER',['../group__window.html#gab6ef2d02eb55800d249ccf1af253c35e',1,'glfw3.h']]],
+ ['glfw_5fconnected_25',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]],
+ ['glfw_5fcontext_5fcreation_5fapi_26',['GLFW_CONTEXT_CREATION_API',['../group__window.html#ga5154cebfcd831c1cc63a4d5ac9bb4486',1,'glfw3.h']]],
+ ['glfw_5fcontext_5fno_5ferror_27',['GLFW_CONTEXT_NO_ERROR',['../group__window.html#ga5a52fdfd46d8249c211f923675728082',1,'glfw3.h']]],
+ ['glfw_5fcontext_5frelease_5fbehavior_28',['GLFW_CONTEXT_RELEASE_BEHAVIOR',['../group__window.html#ga72b648a8378fe3310c7c7bbecc0f7be6',1,'glfw3.h']]],
+ ['glfw_5fcontext_5frevision_29',['GLFW_CONTEXT_REVISION',['../group__window.html#gafb9475071aa77c6fb05ca5a5c8678a08',1,'glfw3.h']]],
+ ['glfw_5fcontext_5frobustness_30',['GLFW_CONTEXT_ROBUSTNESS',['../group__window.html#gade3593916b4c507900aa2d6844810e00',1,'glfw3.h']]],
+ ['glfw_5fcontext_5fversion_5fmajor_31',['GLFW_CONTEXT_VERSION_MAJOR',['../group__window.html#gafe5e4922de1f9932d7e9849bb053b0c0',1,'glfw3.h']]],
+ ['glfw_5fcontext_5fversion_5fminor_32',['GLFW_CONTEXT_VERSION_MINOR',['../group__window.html#ga31aca791e4b538c4e4a771eb95cc2d07',1,'glfw3.h']]],
+ ['glfw_5fcrosshair_5fcursor_33',['GLFW_CROSSHAIR_CURSOR',['../group__shapes.html#ga8af88c0ea05ab9e8f9ac1530e8873c22',1,'glfw3.h']]],
+ ['glfw_5fcursor_34',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fdisabled_35',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fhidden_36',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fnormal_37',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]],
+ ['glfw_5fdecorated_38',['GLFW_DECORATED',['../group__window.html#ga21b854d36314c94d65aed84405b2f25e',1,'glfw3.h']]],
+ ['glfw_5fdepth_5fbits_39',['GLFW_DEPTH_BITS',['../group__window.html#ga318a55eac1fee57dfe593b6d38149d07',1,'glfw3.h']]],
+ ['glfw_5fdisconnected_40',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]],
+ ['glfw_5fdont_5fcare_41',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]],
+ ['glfw_5fdoublebuffer_42',['GLFW_DOUBLEBUFFER',['../group__window.html#ga714a5d569e8a274ea58fdfa020955339',1,'glfw3.h']]],
+ ['glfw_5fegl_5fcontext_5fapi_43',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]],
+ ['glfw_5ffalse_44',['GLFW_FALSE',['../group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5',1,'glfw3.h']]],
+ ['glfw_5ffloating_45',['GLFW_FLOATING',['../group__window.html#ga7fb0be51407783b41adbf5bec0b09d80',1,'glfw3.h']]],
+ ['glfw_5ffocus_5fon_5fshow_46',['GLFW_FOCUS_ON_SHOW',['../group__window.html#gafa94b1da34bfd6488c0d709761504dfc',1,'glfw3.h']]],
+ ['glfw_5ffocused_47',['GLFW_FOCUSED',['../group__window.html#ga54ddb14825a1541a56e22afb5f832a9e',1,'glfw3.h']]],
+ ['glfw_5fformat_5funavailable_48',['GLFW_FORMAT_UNAVAILABLE',['../group__errors.html#ga196e125ef261d94184e2b55c05762f14',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5flast_49',['GLFW_GAMEPAD_AXIS_LAST',['../group__gamepad__axes.html#ga0818fd9433e1359692b7443293e5ac86',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fleft_5ftrigger_50',['GLFW_GAMEPAD_AXIS_LEFT_TRIGGER',['../group__gamepad__axes.html#ga6d79561dd8907c37354426242901b86e',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fleft_5fx_51',['GLFW_GAMEPAD_AXIS_LEFT_X',['../group__gamepad__axes.html#ga544e396d092036a7d80c1e5f233f7a38',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fleft_5fy_52',['GLFW_GAMEPAD_AXIS_LEFT_Y',['../group__gamepad__axes.html#ga64dcf2c6e9be50b7c556ff7671996dd5',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fright_5ftrigger_53',['GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER',['../group__gamepad__axes.html#ga121a7d5d20589a423cd1634dd6ee6eab',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fright_5fx_54',['GLFW_GAMEPAD_AXIS_RIGHT_X',['../group__gamepad__axes.html#gabd6785106cd3c5a044a6e49a395ee2fc',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5faxis_5fright_5fy_55',['GLFW_GAMEPAD_AXIS_RIGHT_Y',['../group__gamepad__axes.html#ga1cc20566d44d521b7183681a8e88e2e4',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fa_56',['GLFW_GAMEPAD_BUTTON_A',['../group__gamepad__buttons.html#gae055a12fbf4b48b5954c8e1cd129b810',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fb_57',['GLFW_GAMEPAD_BUTTON_B',['../group__gamepad__buttons.html#ga2228a6512fd5950cdb51ba07846546fa',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fback_58',['GLFW_GAMEPAD_BUTTON_BACK',['../group__gamepad__buttons.html#gabc7c0264ce778835b516a472b47f6caf',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fcircle_59',['GLFW_GAMEPAD_BUTTON_CIRCLE',['../group__gamepad__buttons.html#gaaef094b3dacbf15f272b274516839b82',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fcross_60',['GLFW_GAMEPAD_BUTTON_CROSS',['../group__gamepad__buttons.html#gaf08d0df26527c9305253422bd98ed63a',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fdpad_5fdown_61',['GLFW_GAMEPAD_BUTTON_DPAD_DOWN',['../group__gamepad__buttons.html#ga8f2b731b97d80f90f11967a83207665c',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fdpad_5fleft_62',['GLFW_GAMEPAD_BUTTON_DPAD_LEFT',['../group__gamepad__buttons.html#gaf0697e0e8607b2ebe1c93b0c6befe301',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fdpad_5fright_63',['GLFW_GAMEPAD_BUTTON_DPAD_RIGHT',['../group__gamepad__buttons.html#gae2a780d2a8c79e0b77c0b7b601ca57c6',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fdpad_5fup_64',['GLFW_GAMEPAD_BUTTON_DPAD_UP',['../group__gamepad__buttons.html#ga4f1ed6f974a47bc8930d4874a283476a',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fguide_65',['GLFW_GAMEPAD_BUTTON_GUIDE',['../group__gamepad__buttons.html#ga7fa48c32e5b2f5db2f080aa0b8b573dc',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5flast_66',['GLFW_GAMEPAD_BUTTON_LAST',['../group__gamepad__buttons.html#ga5cc98882f4f81dacf761639a567f61eb',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fleft_5fbumper_67',['GLFW_GAMEPAD_BUTTON_LEFT_BUMPER',['../group__gamepad__buttons.html#ga17d67b4f39a39d6b813bd1567a3507c3',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fleft_5fthumb_68',['GLFW_GAMEPAD_BUTTON_LEFT_THUMB',['../group__gamepad__buttons.html#ga3e089787327454f7bfca7364d6ca206a',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fright_5fbumper_69',['GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER',['../group__gamepad__buttons.html#gadfbc9ea9bf3aae896b79fa49fdc85c7f',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fright_5fthumb_70',['GLFW_GAMEPAD_BUTTON_RIGHT_THUMB',['../group__gamepad__buttons.html#ga1c003f52b5aebb45272475b48953b21a',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fsquare_71',['GLFW_GAMEPAD_BUTTON_SQUARE',['../group__gamepad__buttons.html#gafc7821e87d77d41ed2cd3e1f726ec35f',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fstart_72',['GLFW_GAMEPAD_BUTTON_START',['../group__gamepad__buttons.html#ga04606949dd9139434b8a1bedf4ac1021',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5ftriangle_73',['GLFW_GAMEPAD_BUTTON_TRIANGLE',['../group__gamepad__buttons.html#ga3a7ef6bcb768a08cd3bf142f7f09f802',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fx_74',['GLFW_GAMEPAD_BUTTON_X',['../group__gamepad__buttons.html#ga52cc94785cf3fe9a12e246539259887c',1,'glfw3.h']]],
+ ['glfw_5fgamepad_5fbutton_5fy_75',['GLFW_GAMEPAD_BUTTON_Y',['../group__gamepad__buttons.html#gafc931248bda494b530cbe057f386a5ed',1,'glfw3.h']]],
+ ['glfw_5fglapientry_5fdefined_76',['GLFW_GLAPIENTRY_DEFINED',['../glfw3_8h.html#a3b526ac796be993406ea2f1642c25fc3',1,'glfw3.h']]],
+ ['glfw_5fgreen_5fbits_77',['GLFW_GREEN_BITS',['../group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d',1,'glfw3.h']]],
+ ['glfw_5fhand_5fcursor_78',['GLFW_HAND_CURSOR',['../group__shapes.html#ga1db35e20849e0837c82e3dc1fd797263',1,'glfw3.h']]],
+ ['glfw_5fhat_5fcentered_79',['GLFW_HAT_CENTERED',['../group__hat__state.html#gae2c0bcb7aec609e4736437554f6638fd',1,'glfw3.h']]],
+ ['glfw_5fhat_5fdown_80',['GLFW_HAT_DOWN',['../group__hat__state.html#gad60d1fd0dc85c18f2642cbae96d3deff',1,'glfw3.h']]],
+ ['glfw_5fhat_5fleft_81',['GLFW_HAT_LEFT',['../group__hat__state.html#gac775f4b3154fdf5db93eb432ba546dff',1,'glfw3.h']]],
+ ['glfw_5fhat_5fleft_5fdown_82',['GLFW_HAT_LEFT_DOWN',['../group__hat__state.html#ga76c02baf1ea345fcbe3e8ff176a73e19',1,'glfw3.h']]],
+ ['glfw_5fhat_5fleft_5fup_83',['GLFW_HAT_LEFT_UP',['../group__hat__state.html#ga638f0e20dc5de90de21a33564e8ce129',1,'glfw3.h']]],
+ ['glfw_5fhat_5fright_84',['GLFW_HAT_RIGHT',['../group__hat__state.html#ga252586e3bbde75f4b0e07ad3124867f5',1,'glfw3.h']]],
+ ['glfw_5fhat_5fright_5fdown_85',['GLFW_HAT_RIGHT_DOWN',['../group__hat__state.html#gad7f0e4f52fd68d734863aaeadab3a3f5',1,'glfw3.h']]],
+ ['glfw_5fhat_5fright_5fup_86',['GLFW_HAT_RIGHT_UP',['../group__hat__state.html#ga94aea0ae241a8b902883536c592ee693',1,'glfw3.h']]],
+ ['glfw_5fhat_5fup_87',['GLFW_HAT_UP',['../group__hat__state.html#ga8c9720c76cd1b912738159ed74c85b36',1,'glfw3.h']]],
+ ['glfw_5fhovered_88',['GLFW_HOVERED',['../group__window.html#ga8665c71c6fa3d22425c6a0e8a3f89d8a',1,'glfw3.h']]],
+ ['glfw_5fhresize_5fcursor_89',['GLFW_HRESIZE_CURSOR',['../group__shapes.html#gabb3eb0109f11bb808fc34659177ca962',1,'glfw3.h']]],
+ ['glfw_5fibeam_5fcursor_90',['GLFW_IBEAM_CURSOR',['../group__shapes.html#ga36185f4375eaada1b04e431244774c86',1,'glfw3.h']]],
+ ['glfw_5ficonified_91',['GLFW_ICONIFIED',['../group__window.html#ga39d44b7c056e55e581355a92d240b58a',1,'glfw3.h']]],
+ ['glfw_5finvalid_5fenum_92',['GLFW_INVALID_ENUM',['../group__errors.html#ga76f6bb9c4eea73db675f096b404593ce',1,'glfw3.h']]],
+ ['glfw_5finvalid_5fvalue_93',['GLFW_INVALID_VALUE',['../group__errors.html#gaaf2ef9aa8202c2b82ac2d921e554c687',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f1_94',['GLFW_JOYSTICK_1',['../group__joysticks.html#ga34a0443d059e9f22272cd4669073f73d',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f10_95',['GLFW_JOYSTICK_10',['../group__joysticks.html#gaef55389ee605d6dfc31aef6fe98c54ec',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f11_96',['GLFW_JOYSTICK_11',['../group__joysticks.html#gae7d26e3df447c2c14a569fcc18516af4',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f12_97',['GLFW_JOYSTICK_12',['../group__joysticks.html#gab91bbf5b7ca6be8d3ac5c4d89ff48ac7',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f13_98',['GLFW_JOYSTICK_13',['../group__joysticks.html#ga5c84fb4e49bf661d7d7c78eb4018c508',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f14_99',['GLFW_JOYSTICK_14',['../group__joysticks.html#ga89540873278ae5a42b3e70d64164dc74',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f15_100',['GLFW_JOYSTICK_15',['../group__joysticks.html#ga7b02ab70daf7a78bcc942d5d4cc1dcf9',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f16_101',['GLFW_JOYSTICK_16',['../group__joysticks.html#ga453edeeabf350827646b6857df4f80ce',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f2_102',['GLFW_JOYSTICK_2',['../group__joysticks.html#ga6eab65ec88e65e0850ef8413504cb50c',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f3_103',['GLFW_JOYSTICK_3',['../group__joysticks.html#gae6f3eedfeb42424c2f5e3161efb0b654',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f4_104',['GLFW_JOYSTICK_4',['../group__joysticks.html#ga97ddbcad02b7f48d74fad4ddb08fff59',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f5_105',['GLFW_JOYSTICK_5',['../group__joysticks.html#gae43281bc66d3fa5089fb50c3e7a28695',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f6_106',['GLFW_JOYSTICK_6',['../group__joysticks.html#ga74771620aa53bd68a487186dea66fd77',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f7_107',['GLFW_JOYSTICK_7',['../group__joysticks.html#ga20a9f4f3aaefed9ea5e66072fc588b87',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f8_108',['GLFW_JOYSTICK_8',['../group__joysticks.html#ga21a934c940bcf25db0e4c8fe9b364bdb',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5f9_109',['GLFW_JOYSTICK_9',['../group__joysticks.html#ga87689d47df0ba6f9f5fcbbcaf7b3cecf',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5fhat_5fbuttons_110',['GLFW_JOYSTICK_HAT_BUTTONS',['../group__init.html#gab9c0534709fda03ec8959201da3a9a18',1,'glfw3.h']]],
+ ['glfw_5fjoystick_5flast_111',['GLFW_JOYSTICK_LAST',['../group__joysticks.html#ga9ca13ebf24c331dd98df17d84a4b72c9',1,'glfw3.h']]],
+ ['glfw_5fkey_5f0_112',['GLFW_KEY_0',['../group__keys.html#ga50391730e9d7112ad4fd42d0bd1597c1',1,'glfw3.h']]],
+ ['glfw_5fkey_5f1_113',['GLFW_KEY_1',['../group__keys.html#ga05e4cae9ddb8d40cf6d82c8f11f2502f',1,'glfw3.h']]],
+ ['glfw_5fkey_5f2_114',['GLFW_KEY_2',['../group__keys.html#gadc8e66b3a4c4b5c39ad1305cf852863c',1,'glfw3.h']]],
+ ['glfw_5fkey_5f3_115',['GLFW_KEY_3',['../group__keys.html#ga812f0273fe1a981e1fa002ae73e92271',1,'glfw3.h']]],
+ ['glfw_5fkey_5f4_116',['GLFW_KEY_4',['../group__keys.html#ga9e14b6975a9cc8f66cdd5cb3d3861356',1,'glfw3.h']]],
+ ['glfw_5fkey_5f5_117',['GLFW_KEY_5',['../group__keys.html#ga4d74ddaa5d4c609993b4d4a15736c924',1,'glfw3.h']]],
+ ['glfw_5fkey_5f6_118',['GLFW_KEY_6',['../group__keys.html#ga9ea4ab80c313a227b14d0a7c6f810b5d',1,'glfw3.h']]],
+ ['glfw_5fkey_5f7_119',['GLFW_KEY_7',['../group__keys.html#gab79b1cfae7bd630cfc4604c1f263c666',1,'glfw3.h']]],
+ ['glfw_5fkey_5f8_120',['GLFW_KEY_8',['../group__keys.html#gadeaa109a0f9f5afc94fe4a108e686f6f',1,'glfw3.h']]],
+ ['glfw_5fkey_5f9_121',['GLFW_KEY_9',['../group__keys.html#ga2924cb5349ebbf97c8987f3521c44f39',1,'glfw3.h']]],
+ ['glfw_5fkey_5fa_122',['GLFW_KEY_A',['../group__keys.html#ga03e842608e1ea323370889d33b8f70ff',1,'glfw3.h']]],
+ ['glfw_5fkey_5fapostrophe_123',['GLFW_KEY_APOSTROPHE',['../group__keys.html#ga6059b0b048ba6980b6107fffbd3b4b24',1,'glfw3.h']]],
+ ['glfw_5fkey_5fb_124',['GLFW_KEY_B',['../group__keys.html#ga8e3fb647ff3aca9e8dbf14fe66332941',1,'glfw3.h']]],
+ ['glfw_5fkey_5fbackslash_125',['GLFW_KEY_BACKSLASH',['../group__keys.html#gab8155ea99d1ab27ff56f24f8dc73f8d1',1,'glfw3.h']]],
+ ['glfw_5fkey_5fbackspace_126',['GLFW_KEY_BACKSPACE',['../group__keys.html#ga6c0df1fe2f156bbd5a98c66d76ff3635',1,'glfw3.h']]],
+ ['glfw_5fkey_5fc_127',['GLFW_KEY_C',['../group__keys.html#ga00ccf3475d9ee2e679480d540d554669',1,'glfw3.h']]],
+ ['glfw_5fkey_5fcaps_5flock_128',['GLFW_KEY_CAPS_LOCK',['../group__keys.html#ga92c1d2c9d63485f3d70f94f688d48672',1,'glfw3.h']]],
+ ['glfw_5fkey_5fcomma_129',['GLFW_KEY_COMMA',['../group__keys.html#gab3d5d72e59d3055f494627b0a524926c',1,'glfw3.h']]],
+ ['glfw_5fkey_5fd_130',['GLFW_KEY_D',['../group__keys.html#ga011f7cdc9a654da984a2506479606933',1,'glfw3.h']]],
+ ['glfw_5fkey_5fdelete_131',['GLFW_KEY_DELETE',['../group__keys.html#gadb111e4df74b8a715f2c05dad58d2682',1,'glfw3.h']]],
+ ['glfw_5fkey_5fdown_132',['GLFW_KEY_DOWN',['../group__keys.html#gae2e3958c71595607416aa7bf082be2f9',1,'glfw3.h']]],
+ ['glfw_5fkey_5fe_133',['GLFW_KEY_E',['../group__keys.html#gabf48fcc3afbe69349df432b470c96ef2',1,'glfw3.h']]],
+ ['glfw_5fkey_5fend_134',['GLFW_KEY_END',['../group__keys.html#ga86587ea1df19a65978d3e3b8439bedd9',1,'glfw3.h']]],
+ ['glfw_5fkey_5fenter_135',['GLFW_KEY_ENTER',['../group__keys.html#ga9555a92ecbecdbc1f3435219c571d667',1,'glfw3.h']]],
+ ['glfw_5fkey_5fequal_136',['GLFW_KEY_EQUAL',['../group__keys.html#gae1a2de47240d6664423c204bdd91bd17',1,'glfw3.h']]],
+ ['glfw_5fkey_5fescape_137',['GLFW_KEY_ESCAPE',['../group__keys.html#gaac6596c350b635c245113b81c2123b93',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff_138',['GLFW_KEY_F',['../group__keys.html#ga5df402e02aca08444240058fd9b42a55',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff1_139',['GLFW_KEY_F1',['../group__keys.html#gafb8d66c573acf22e364049477dcbea30',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff10_140',['GLFW_KEY_F10',['../group__keys.html#ga718d11d2f7d57471a2f6a894235995b1',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff11_141',['GLFW_KEY_F11',['../group__keys.html#ga0bc04b11627e7d69339151e7306b2832',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff12_142',['GLFW_KEY_F12',['../group__keys.html#gaf5908fa9b0a906ae03fc2c61ac7aa3e2',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff13_143',['GLFW_KEY_F13',['../group__keys.html#gad637f4308655e1001bd6ad942bc0fd4b',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff14_144',['GLFW_KEY_F14',['../group__keys.html#gaf14c66cff3396e5bd46e803c035e6c1f',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff15_145',['GLFW_KEY_F15',['../group__keys.html#ga7f70970db6e8be1794da8516a6d14058',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff16_146',['GLFW_KEY_F16',['../group__keys.html#gaa582dbb1d2ba2050aa1dca0838095b27',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff17_147',['GLFW_KEY_F17',['../group__keys.html#ga972ce5c365e2394b36104b0e3125c748',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff18_148',['GLFW_KEY_F18',['../group__keys.html#gaebf6391058d5566601e357edc5ea737c',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff19_149',['GLFW_KEY_F19',['../group__keys.html#gaec011d9ba044058cb54529da710e9791',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff2_150',['GLFW_KEY_F2',['../group__keys.html#ga0900750aff94889b940f5e428c07daee',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff20_151',['GLFW_KEY_F20',['../group__keys.html#ga82b9c721ada04cd5ca8de767da38022f',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff21_152',['GLFW_KEY_F21',['../group__keys.html#ga356afb14d3440ff2bb378f74f7ebc60f',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff22_153',['GLFW_KEY_F22',['../group__keys.html#ga90960bd2a155f2b09675324d3dff1565',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff23_154',['GLFW_KEY_F23',['../group__keys.html#ga43c21099aac10952d1be909a8ddee4d5',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff24_155',['GLFW_KEY_F24',['../group__keys.html#ga8150374677b5bed3043408732152dea2',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff25_156',['GLFW_KEY_F25',['../group__keys.html#gaa4bbd93ed73bb4c6ae7d83df880b7199',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff3_157',['GLFW_KEY_F3',['../group__keys.html#gaed7cd729c0147a551bb8b7bb36c17015',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff4_158',['GLFW_KEY_F4',['../group__keys.html#ga9b61ebd0c63b44b7332fda2c9763eaa6',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff5_159',['GLFW_KEY_F5',['../group__keys.html#gaf258dda9947daa428377938ed577c8c2',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff6_160',['GLFW_KEY_F6',['../group__keys.html#ga6dc2d3f87b9d51ffbbbe2ef0299d8e1d',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff7_161',['GLFW_KEY_F7',['../group__keys.html#gacca6ef8a2162c52a0ac1d881e8d9c38a',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff8_162',['GLFW_KEY_F8',['../group__keys.html#gac9d39390336ae14e4a93e295de43c7e8',1,'glfw3.h']]],
+ ['glfw_5fkey_5ff9_163',['GLFW_KEY_F9',['../group__keys.html#gae40de0de1c9f21cd26c9afa3d7050851',1,'glfw3.h']]],
+ ['glfw_5fkey_5fg_164',['GLFW_KEY_G',['../group__keys.html#gae74ecddf7cc96104ab23989b1cdab536',1,'glfw3.h']]],
+ ['glfw_5fkey_5fgrave_5faccent_165',['GLFW_KEY_GRAVE_ACCENT',['../group__keys.html#ga7a3701fb4e2a0b136ff4b568c3c8d668',1,'glfw3.h']]],
+ ['glfw_5fkey_5fh_166',['GLFW_KEY_H',['../group__keys.html#gad4cc98fc8f35f015d9e2fb94bf136076',1,'glfw3.h']]],
+ ['glfw_5fkey_5fhome_167',['GLFW_KEY_HOME',['../group__keys.html#ga41452c7287195d481e43207318c126a7',1,'glfw3.h']]],
+ ['glfw_5fkey_5fi_168',['GLFW_KEY_I',['../group__keys.html#ga274655c8bfe39742684ca393cf8ed093',1,'glfw3.h']]],
+ ['glfw_5fkey_5finsert_169',['GLFW_KEY_INSERT',['../group__keys.html#ga373ac7365435d6b0eb1068f470e34f47',1,'glfw3.h']]],
+ ['glfw_5fkey_5fj_170',['GLFW_KEY_J',['../group__keys.html#ga65ff2aedb129a3149ad9cb3e4159a75f',1,'glfw3.h']]],
+ ['glfw_5fkey_5fk_171',['GLFW_KEY_K',['../group__keys.html#ga4ae8debadf6d2a691badae0b53ea3ba0',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f0_172',['GLFW_KEY_KP_0',['../group__keys.html#ga10515dafc55b71e7683f5b4fedd1c70d',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f1_173',['GLFW_KEY_KP_1',['../group__keys.html#gaf3a29a334402c5eaf0b3439edf5587c3',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f2_174',['GLFW_KEY_KP_2',['../group__keys.html#gaf82d5a802ab8213c72653d7480c16f13',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f3_175',['GLFW_KEY_KP_3',['../group__keys.html#ga7e25ff30d56cd512828c1d4ae8d54ef2',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f4_176',['GLFW_KEY_KP_4',['../group__keys.html#gada7ec86778b85e0b4de0beea72234aea',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f5_177',['GLFW_KEY_KP_5',['../group__keys.html#ga9a5be274434866c51738cafbb6d26b45',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f6_178',['GLFW_KEY_KP_6',['../group__keys.html#gafc141b0f8450519084c01092a3157faa',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f7_179',['GLFW_KEY_KP_7',['../group__keys.html#ga8882f411f05d04ec77a9563974bbfa53',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f8_180',['GLFW_KEY_KP_8',['../group__keys.html#gab2ea2e6a12f89d315045af520ac78cec',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5f9_181',['GLFW_KEY_KP_9',['../group__keys.html#gafb21426b630ed4fcc084868699ba74c1',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fadd_182',['GLFW_KEY_KP_ADD',['../group__keys.html#gad09c7c98acc79e89aa6a0a91275becac',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fdecimal_183',['GLFW_KEY_KP_DECIMAL',['../group__keys.html#ga4e231d968796331a9ea0dbfb98d4005b',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fdivide_184',['GLFW_KEY_KP_DIVIDE',['../group__keys.html#gabca1733780a273d549129ad0f250d1e5',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fenter_185',['GLFW_KEY_KP_ENTER',['../group__keys.html#ga4f728f8738f2986bd63eedd3d412e8cf',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fequal_186',['GLFW_KEY_KP_EQUAL',['../group__keys.html#gaebdc76d4a808191e6d21b7e4ad2acd97',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fmultiply_187',['GLFW_KEY_KP_MULTIPLY',['../group__keys.html#ga9ada267eb0e78ed2ada8701dd24a56ef',1,'glfw3.h']]],
+ ['glfw_5fkey_5fkp_5fsubtract_188',['GLFW_KEY_KP_SUBTRACT',['../group__keys.html#gaa3dbd60782ff93d6082a124bce1fa236',1,'glfw3.h']]],
+ ['glfw_5fkey_5fl_189',['GLFW_KEY_L',['../group__keys.html#gaaa8b54a13f6b1eed85ac86f82d550db2',1,'glfw3.h']]],
+ ['glfw_5fkey_5flast_190',['GLFW_KEY_LAST',['../group__keys.html#ga442cbaef7bfb9a4ba13594dd7fbf2789',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_191',['GLFW_KEY_LEFT',['../group__keys.html#gae12a010d33c309a67ab9460c51eb2462',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_5falt_192',['GLFW_KEY_LEFT_ALT',['../group__keys.html#ga7f27dabf63a7789daa31e1c96790219b',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_5fbracket_193',['GLFW_KEY_LEFT_BRACKET',['../group__keys.html#gad1c8d9adac53925276ecb1d592511d8a',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_5fcontrol_194',['GLFW_KEY_LEFT_CONTROL',['../group__keys.html#ga9f97b743e81460ac4b2deddecd10a464',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_5fshift_195',['GLFW_KEY_LEFT_SHIFT',['../group__keys.html#ga8a530a28a65c44ab5d00b759b756d3f6',1,'glfw3.h']]],
+ ['glfw_5fkey_5fleft_5fsuper_196',['GLFW_KEY_LEFT_SUPER',['../group__keys.html#gafb1207c91997fc295afd1835fbc5641a',1,'glfw3.h']]],
+ ['glfw_5fkey_5fm_197',['GLFW_KEY_M',['../group__keys.html#ga4d7f0260c82e4ea3d6ebc7a21d6e3716',1,'glfw3.h']]],
+ ['glfw_5fkey_5fmenu_198',['GLFW_KEY_MENU',['../group__keys.html#ga9845be48a745fc232045c9ec174d8820',1,'glfw3.h']]],
+ ['glfw_5fkey_5fminus_199',['GLFW_KEY_MINUS',['../group__keys.html#gac556b360f7f6fca4b70ba0aecf313fd4',1,'glfw3.h']]],
+ ['glfw_5fkey_5fn_200',['GLFW_KEY_N',['../group__keys.html#gae00856dfeb5d13aafebf59d44de5cdda',1,'glfw3.h']]],
+ ['glfw_5fkey_5fnum_5flock_201',['GLFW_KEY_NUM_LOCK',['../group__keys.html#ga3946edc362aeff213b2be6304296cf43',1,'glfw3.h']]],
+ ['glfw_5fkey_5fo_202',['GLFW_KEY_O',['../group__keys.html#gaecbbb79130df419d58dd7f09a169efe9',1,'glfw3.h']]],
+ ['glfw_5fkey_5fp_203',['GLFW_KEY_P',['../group__keys.html#ga8fc15819c1094fb2afa01d84546b33e1',1,'glfw3.h']]],
+ ['glfw_5fkey_5fpage_5fdown_204',['GLFW_KEY_PAGE_DOWN',['../group__keys.html#gaee0a8fa442001cc2147812f84b59041c',1,'glfw3.h']]],
+ ['glfw_5fkey_5fpage_5fup_205',['GLFW_KEY_PAGE_UP',['../group__keys.html#ga3ab731f9622f0db280178a5f3cc6d586',1,'glfw3.h']]],
+ ['glfw_5fkey_5fpause_206',['GLFW_KEY_PAUSE',['../group__keys.html#ga8116b9692d87382afb5849b6d8907f18',1,'glfw3.h']]],
+ ['glfw_5fkey_5fperiod_207',['GLFW_KEY_PERIOD',['../group__keys.html#ga37e296b650eab419fc474ff69033d927',1,'glfw3.h']]],
+ ['glfw_5fkey_5fprint_5fscreen_208',['GLFW_KEY_PRINT_SCREEN',['../group__keys.html#gaf964c2e65e97d0cf785a5636ee8df642',1,'glfw3.h']]],
+ ['glfw_5fkey_5fq_209',['GLFW_KEY_Q',['../group__keys.html#gafdd01e38b120d67cf51e348bb47f3964',1,'glfw3.h']]],
+ ['glfw_5fkey_5fr_210',['GLFW_KEY_R',['../group__keys.html#ga4ce6c70a0c98c50b3fe4ab9a728d4d36',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_211',['GLFW_KEY_RIGHT',['../group__keys.html#ga06ba07662e8c291a4a84535379ffc7ac',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_5falt_212',['GLFW_KEY_RIGHT_ALT',['../group__keys.html#ga687b38009131cfdd07a8d05fff8fa446',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_5fbracket_213',['GLFW_KEY_RIGHT_BRACKET',['../group__keys.html#ga86ef225fd6a66404caae71044cdd58d8',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_5fcontrol_214',['GLFW_KEY_RIGHT_CONTROL',['../group__keys.html#gad1ca2094b2694e7251d0ab1fd34f8519',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_5fshift_215',['GLFW_KEY_RIGHT_SHIFT',['../group__keys.html#gaffca36b99c9dce1a19cb9befbadce691',1,'glfw3.h']]],
+ ['glfw_5fkey_5fright_5fsuper_216',['GLFW_KEY_RIGHT_SUPER',['../group__keys.html#gad4547a3e8e247594acb60423fe6502db',1,'glfw3.h']]],
+ ['glfw_5fkey_5fs_217',['GLFW_KEY_S',['../group__keys.html#ga1570e2ccaab036ea82bed66fc1dab2a9',1,'glfw3.h']]],
+ ['glfw_5fkey_5fscroll_5flock_218',['GLFW_KEY_SCROLL_LOCK',['../group__keys.html#gaf622b63b9537f7084c2ab649b8365630',1,'glfw3.h']]],
+ ['glfw_5fkey_5fsemicolon_219',['GLFW_KEY_SEMICOLON',['../group__keys.html#ga84233de9ee5bb3e8788a5aa07d80af7d',1,'glfw3.h']]],
+ ['glfw_5fkey_5fslash_220',['GLFW_KEY_SLASH',['../group__keys.html#gadf3d753b2d479148d711de34b83fd0db',1,'glfw3.h']]],
+ ['glfw_5fkey_5fspace_221',['GLFW_KEY_SPACE',['../group__keys.html#gaddb2c23772b97fd7e26e8ee66f1ad014',1,'glfw3.h']]],
+ ['glfw_5fkey_5ft_222',['GLFW_KEY_T',['../group__keys.html#ga90e0560422ec7a30e7f3f375bc9f37f9',1,'glfw3.h']]],
+ ['glfw_5fkey_5ftab_223',['GLFW_KEY_TAB',['../group__keys.html#ga6908a4bda9950a3e2b73f794bbe985df',1,'glfw3.h']]],
+ ['glfw_5fkey_5fu_224',['GLFW_KEY_U',['../group__keys.html#gacad52f3bf7d378fc0ffa72a76769256d',1,'glfw3.h']]],
+ ['glfw_5fkey_5funknown_225',['GLFW_KEY_UNKNOWN',['../group__keys.html#ga99aacc875b6b27a072552631e13775c7',1,'glfw3.h']]],
+ ['glfw_5fkey_5fup_226',['GLFW_KEY_UP',['../group__keys.html#ga2f3342b194020d3544c67e3506b6f144',1,'glfw3.h']]],
+ ['glfw_5fkey_5fv_227',['GLFW_KEY_V',['../group__keys.html#ga22c7763899ecf7788862e5f90eacce6b',1,'glfw3.h']]],
+ ['glfw_5fkey_5fw_228',['GLFW_KEY_W',['../group__keys.html#gaa06a712e6202661fc03da5bdb7b6e545',1,'glfw3.h']]],
+ ['glfw_5fkey_5fworld_5f1_229',['GLFW_KEY_WORLD_1',['../group__keys.html#gadc78dad3dab76bcd4b5c20114052577a',1,'glfw3.h']]],
+ ['glfw_5fkey_5fworld_5f2_230',['GLFW_KEY_WORLD_2',['../group__keys.html#ga20494bfebf0bb4fc9503afca18ab2c5e',1,'glfw3.h']]],
+ ['glfw_5fkey_5fx_231',['GLFW_KEY_X',['../group__keys.html#gac1c42c0bf4192cea713c55598b06b744',1,'glfw3.h']]],
+ ['glfw_5fkey_5fy_232',['GLFW_KEY_Y',['../group__keys.html#gafd9f115a549effdf8e372a787c360313',1,'glfw3.h']]],
+ ['glfw_5fkey_5fz_233',['GLFW_KEY_Z',['../group__keys.html#gac489e208c26afda8d4938ed88718760a',1,'glfw3.h']]],
+ ['glfw_5flock_5fkey_5fmods_234',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]],
+ ['glfw_5flose_5fcontext_5fon_5freset_235',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]],
+ ['glfw_5fmaximized_236',['GLFW_MAXIMIZED',['../group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03',1,'glfw3.h']]],
+ ['glfw_5fmod_5falt_237',['GLFW_MOD_ALT',['../group__mods.html#gad2acd5633463c29e07008687ea73c0f4',1,'glfw3.h']]],
+ ['glfw_5fmod_5fcaps_5flock_238',['GLFW_MOD_CAPS_LOCK',['../group__mods.html#gaefeef8fcf825a6e43e241b337897200f',1,'glfw3.h']]],
+ ['glfw_5fmod_5fcontrol_239',['GLFW_MOD_CONTROL',['../group__mods.html#ga6ed94871c3208eefd85713fa929d45aa',1,'glfw3.h']]],
+ ['glfw_5fmod_5fnum_5flock_240',['GLFW_MOD_NUM_LOCK',['../group__mods.html#ga64e020b8a42af8376e944baf61feecbe',1,'glfw3.h']]],
+ ['glfw_5fmod_5fshift_241',['GLFW_MOD_SHIFT',['../group__mods.html#ga14994d3196c290aaa347248e51740274',1,'glfw3.h']]],
+ ['glfw_5fmod_5fsuper_242',['GLFW_MOD_SUPER',['../group__mods.html#ga6b64ba10ea0227cf6f42efd0a220aba1',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f1_243',['GLFW_MOUSE_BUTTON_1',['../group__buttons.html#ga181a6e875251fd8671654eff00f9112e',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f2_244',['GLFW_MOUSE_BUTTON_2',['../group__buttons.html#ga604b39b92c88ce9bd332e97fc3f4156c',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f3_245',['GLFW_MOUSE_BUTTON_3',['../group__buttons.html#ga0130d505563d0236a6f85545f19e1721',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f4_246',['GLFW_MOUSE_BUTTON_4',['../group__buttons.html#ga53f4097bb01d5521c7d9513418c91ca9',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f5_247',['GLFW_MOUSE_BUTTON_5',['../group__buttons.html#gaf08c4ddecb051d3d9667db1d5e417c9c',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f6_248',['GLFW_MOUSE_BUTTON_6',['../group__buttons.html#gae8513e06aab8aa393b595f22c6d8257a',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f7_249',['GLFW_MOUSE_BUTTON_7',['../group__buttons.html#ga8b02a1ab55dde45b3a3883d54ffd7dc7',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5f8_250',['GLFW_MOUSE_BUTTON_8',['../group__buttons.html#ga35d5c4263e0dc0d0a4731ca6c562f32c',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5flast_251',['GLFW_MOUSE_BUTTON_LAST',['../group__buttons.html#gab1fd86a4518a9141ec7bcde2e15a2fdf',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5fleft_252',['GLFW_MOUSE_BUTTON_LEFT',['../group__buttons.html#gaf37100431dcd5082d48f95ee8bc8cd56',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5fmiddle_253',['GLFW_MOUSE_BUTTON_MIDDLE',['../group__buttons.html#ga34a4d2a701434f763fd93a2ff842b95a',1,'glfw3.h']]],
+ ['glfw_5fmouse_5fbutton_5fright_254',['GLFW_MOUSE_BUTTON_RIGHT',['../group__buttons.html#ga3e2f2cf3c4942df73cc094247d275e74',1,'glfw3.h']]],
+ ['glfw_5fnative_5fcontext_5fapi_255',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]],
+ ['glfw_5fno_5fapi_256',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]],
+ ['glfw_5fno_5fcurrent_5fcontext_257',['GLFW_NO_CURRENT_CONTEXT',['../group__errors.html#gaa8290386e9528ccb9e42a3a4e16fc0d0',1,'glfw3.h']]],
+ ['glfw_5fno_5ferror_258',['GLFW_NO_ERROR',['../group__errors.html#gafa30deee5db4d69c4c93d116ed87dbf4',1,'glfw3.h']]],
+ ['glfw_5fno_5freset_5fnotification_259',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]],
+ ['glfw_5fno_5frobustness_260',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]],
+ ['glfw_5fno_5fwindow_5fcontext_261',['GLFW_NO_WINDOW_CONTEXT',['../group__errors.html#gacff24d2757da752ae4c80bf452356487',1,'glfw3.h']]],
+ ['glfw_5fnot_5finitialized_262',['GLFW_NOT_INITIALIZED',['../group__errors.html#ga2374ee02c177f12e1fa76ff3ed15e14a',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fany_5fprofile_263',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fapi_264',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fcompat_5fprofile_265',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fcore_5fprofile_266',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fdebug_5fcontext_267',['GLFW_OPENGL_DEBUG_CONTEXT',['../group__window.html#ga87ec2df0b915201e950ca42d5d0831e1',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fes_5fapi_268',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fforward_5fcompat_269',['GLFW_OPENGL_FORWARD_COMPAT',['../group__window.html#ga13d24b12465da8b28985f46c8557925b',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fprofile_270',['GLFW_OPENGL_PROFILE',['../group__window.html#ga44f3a6b4261fbe351e0b950b0f372e12',1,'glfw3.h']]],
+ ['glfw_5fosmesa_5fcontext_5fapi_271',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]],
+ ['glfw_5fout_5fof_5fmemory_272',['GLFW_OUT_OF_MEMORY',['../group__errors.html#ga9023953a2bcb98c2906afd071d21ee7f',1,'glfw3.h']]],
+ ['glfw_5fplatform_5ferror_273',['GLFW_PLATFORM_ERROR',['../group__errors.html#gad44162d78100ea5e87cdd38426b8c7a1',1,'glfw3.h']]],
+ ['glfw_5fpress_274',['GLFW_PRESS',['../group__input.html#ga2485743d0b59df3791c45951c4195265',1,'glfw3.h']]],
+ ['glfw_5fraw_5fmouse_5fmotion_275',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]],
+ ['glfw_5fred_5fbits_276',['GLFW_RED_BITS',['../group__window.html#gaf78ed8e417dbcc1e354906cc2708c982',1,'glfw3.h']]],
+ ['glfw_5frefresh_5frate_277',['GLFW_REFRESH_RATE',['../group__window.html#ga0f20825e6e47ee8ba389024519682212',1,'glfw3.h']]],
+ ['glfw_5frelease_278',['GLFW_RELEASE',['../group__input.html#gada11d965c4da13090ad336e030e4d11f',1,'glfw3.h']]],
+ ['glfw_5frelease_5fbehavior_5fflush_279',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]],
+ ['glfw_5frelease_5fbehavior_5fnone_280',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]],
+ ['glfw_5frepeat_281',['GLFW_REPEAT',['../group__input.html#gac96fd3b9fc66c6f0eebaf6532595338f',1,'glfw3.h']]],
+ ['glfw_5fresizable_282',['GLFW_RESIZABLE',['../group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d',1,'glfw3.h']]],
+ ['glfw_5fsamples_283',['GLFW_SAMPLES',['../group__window.html#ga2cdf86fdcb7722fb8829c4e201607535',1,'glfw3.h']]],
+ ['glfw_5fscale_5fto_5fmonitor_284',['GLFW_SCALE_TO_MONITOR',['../group__window.html#ga620bc4280c7eab81ac9f02204500ed47',1,'glfw3.h']]],
+ ['glfw_5fsrgb_5fcapable_285',['GLFW_SRGB_CAPABLE',['../group__window.html#ga444a8f00414a63220591f9fdb7b5642b',1,'glfw3.h']]],
+ ['glfw_5fstencil_5fbits_286',['GLFW_STENCIL_BITS',['../group__window.html#ga5339890a45a1fb38e93cb9fcc5fd069d',1,'glfw3.h']]],
+ ['glfw_5fstereo_287',['GLFW_STEREO',['../group__window.html#ga83d991efca02537e2d69969135b77b03',1,'glfw3.h']]],
+ ['glfw_5fsticky_5fkeys_288',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]],
+ ['glfw_5fsticky_5fmouse_5fbuttons_289',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]],
+ ['glfw_5ftransparent_5fframebuffer_290',['GLFW_TRANSPARENT_FRAMEBUFFER',['../group__window.html#ga60a0578c3b9449027d683a9c6abb9f14',1,'glfw3.h']]],
+ ['glfw_5ftrue_291',['GLFW_TRUE',['../group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba',1,'glfw3.h']]],
+ ['glfw_5fversion_5fmajor_292',['GLFW_VERSION_MAJOR',['../group__init.html#ga6337d9ea43b22fc529b2bba066b4a576',1,'glfw3.h']]],
+ ['glfw_5fversion_5fminor_293',['GLFW_VERSION_MINOR',['../group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3',1,'glfw3.h']]],
+ ['glfw_5fversion_5frevision_294',['GLFW_VERSION_REVISION',['../group__init.html#gab72ae2e2035d9ea461abc3495eac0502',1,'glfw3.h']]],
+ ['glfw_5fversion_5funavailable_295',['GLFW_VERSION_UNAVAILABLE',['../group__errors.html#gad16c5565b4a69f9c2a9ac2c0dbc89462',1,'glfw3.h']]],
+ ['glfw_5fvisible_296',['GLFW_VISIBLE',['../group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4',1,'glfw3.h']]],
+ ['glfw_5fvresize_5fcursor_297',['GLFW_VRESIZE_CURSOR',['../group__shapes.html#gaf024f0e1ff8366fb2b5c260509a1fce5',1,'glfw3.h']]],
+ ['glfw_5fx11_5fclass_5fname_298',['GLFW_X11_CLASS_NAME',['../group__window.html#gae5a9ea2fccccd92edbd343fc56461114',1,'glfw3.h']]],
+ ['glfw_5fx11_5finstance_5fname_299',['GLFW_X11_INSTANCE_NAME',['../group__window.html#ga494c3c0d911e4b860b946530a3e389e8',1,'glfw3.h']]],
+ ['glfwcharfun_300',['GLFWcharfun',['../group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e',1,'glfw3.h']]],
+ ['glfwcharmodsfun_301',['GLFWcharmodsfun',['../group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f',1,'glfw3.h']]],
+ ['glfwcreatecursor_302',['glfwCreateCursor',['../group__input.html#ga556f604f73af156c0db0e97c081373c3',1,'glfw3.h']]],
+ ['glfwcreatestandardcursor_303',['glfwCreateStandardCursor',['../group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e',1,'glfw3.h']]],
+ ['glfwcreatewindow_304',['glfwCreateWindow',['../group__window.html#ga3555a418df92ad53f917597fe2f64aeb',1,'glfw3.h']]],
+ ['glfwcreatewindowsurface_305',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]],
+ ['glfwcursor_306',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]],
+ ['glfwcursorenterfun_307',['GLFWcursorenterfun',['../group__input.html#gaa93dc4818ac9ab32532909d53a337cbe',1,'glfw3.h']]],
+ ['glfwcursorposfun_308',['GLFWcursorposfun',['../group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68',1,'glfw3.h']]],
+ ['glfwdefaultwindowhints_309',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]],
+ ['glfwdestroycursor_310',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]],
+ ['glfwdestroywindow_311',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]],
+ ['glfwdropfun_312',['GLFWdropfun',['../group__input.html#gaaba73c3274062c18723b7f05862d94b2',1,'glfw3.h']]],
+ ['glfwerrorfun_313',['GLFWerrorfun',['../group__init.html#ga8184701785c096b3862a75cda1bf44a3',1,'glfw3.h']]],
+ ['glfwextensionsupported_314',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]],
+ ['glfwfocuswindow_315',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]],
+ ['glfwframebuffersizefun_316',['GLFWframebuffersizefun',['../group__window.html#gae18026e294dde685ed2e5f759533144d',1,'glfw3.h']]],
+ ['glfwgamepadstate_317',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'GLFWgamepadstate():&#160;glfw3.h'],['../structGLFWgamepadstate.html',1,'GLFWgamepadstate']]],
+ ['glfwgammaramp_318',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'GLFWgammaramp'],['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'GLFWgammaramp():&#160;glfw3.h']]],
+ ['glfwgetclipboardstring_319',['glfwGetClipboardString',['../group__input.html#ga71a5b20808ea92193d65c21b82580355',1,'glfw3.h']]],
+ ['glfwgetcocoamonitor_320',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]],
+ ['glfwgetcocoawindow_321',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]],
+ ['glfwgetcurrentcontext_322',['glfwGetCurrentContext',['../group__context.html#gad94e80185397a6cf5fe2ab30567af71c',1,'glfw3.h']]],
+ ['glfwgetcursorpos_323',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]],
+ ['glfwgeteglcontext_324',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]],
+ ['glfwgetegldisplay_325',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]],
+ ['glfwgeteglsurface_326',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]],
+ ['glfwgeterror_327',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]],
+ ['glfwgetframebuffersize_328',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]],
+ ['glfwgetgamepadname_329',['glfwGetGamepadName',['../group__input.html#ga8aea73a1a25cc6c0486a617019f56728',1,'glfw3.h']]],
+ ['glfwgetgamepadstate_330',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]],
+ ['glfwgetgammaramp_331',['glfwGetGammaRamp',['../group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f',1,'glfw3.h']]],
+ ['glfwgetglxcontext_332',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]],
+ ['glfwgetglxwindow_333',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]],
+ ['glfwgetinputmode_334',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]],
+ ['glfwgetinstanceprocaddress_335',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]],
+ ['glfwgetjoystickaxes_336',['glfwGetJoystickAxes',['../group__input.html#gaeb1c0191d3140a233a682987c61eb408',1,'glfw3.h']]],
+ ['glfwgetjoystickbuttons_337',['glfwGetJoystickButtons',['../group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938',1,'glfw3.h']]],
+ ['glfwgetjoystickguid_338',['glfwGetJoystickGUID',['../group__input.html#ga6659411aec3c7fcef27780e2cb2d9600',1,'glfw3.h']]],
+ ['glfwgetjoystickhats_339',['glfwGetJoystickHats',['../group__input.html#ga06e660841b3e79c54da4f54a932c5a2c',1,'glfw3.h']]],
+ ['glfwgetjoystickname_340',['glfwGetJoystickName',['../group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978',1,'glfw3.h']]],
+ ['glfwgetjoystickuserpointer_341',['glfwGetJoystickUserPointer',['../group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3',1,'glfw3.h']]],
+ ['glfwgetkey_342',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]],
+ ['glfwgetkeyname_343',['glfwGetKeyName',['../group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f',1,'glfw3.h']]],
+ ['glfwgetkeyscancode_344',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]],
+ ['glfwgetmonitorcontentscale_345',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]],
+ ['glfwgetmonitorname_346',['glfwGetMonitorName',['../group__monitor.html#ga7af83e13489d90379588fb331b9e4b68',1,'glfw3.h']]],
+ ['glfwgetmonitorphysicalsize_347',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]],
+ ['glfwgetmonitorpos_348',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]],
+ ['glfwgetmonitors_349',['glfwGetMonitors',['../group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2',1,'glfw3.h']]],
+ ['glfwgetmonitoruserpointer_350',['glfwGetMonitorUserPointer',['../group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5',1,'glfw3.h']]],
+ ['glfwgetmonitorworkarea_351',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]],
+ ['glfwgetmousebutton_352',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]],
+ ['glfwgetnsglcontext_353',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]],
+ ['glfwgetosmesacolorbuffer_354',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]],
+ ['glfwgetosmesacontext_355',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]],
+ ['glfwgetosmesadepthbuffer_356',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]],
+ ['glfwgetphysicaldevicepresentationsupport_357',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]],
+ ['glfwgetprimarymonitor_358',['glfwGetPrimaryMonitor',['../group__monitor.html#gac3adb24947eb709e1874028272e5dfc5',1,'glfw3.h']]],
+ ['glfwgetprocaddress_359',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]],
+ ['glfwgetrequiredinstanceextensions_360',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6',1,'glfw3.h']]],
+ ['glfwgettime_361',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]],
+ ['glfwgettimerfrequency_362',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]],
+ ['glfwgettimervalue_363',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]],
+ ['glfwgetversion_364',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]],
+ ['glfwgetversionstring_365',['glfwGetVersionString',['../group__init.html#ga026abd003c8e6501981ab1662062f1c0',1,'glfw3.h']]],
+ ['glfwgetvideomode_366',['glfwGetVideoMode',['../group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5',1,'glfw3.h']]],
+ ['glfwgetvideomodes_367',['glfwGetVideoModes',['../group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b',1,'glfw3.h']]],
+ ['glfwgetwaylanddisplay_368',['glfwGetWaylandDisplay',['../group__native.html#gacbe11f93ce20621de82989bbba94e62a',1,'glfw3native.h']]],
+ ['glfwgetwaylandmonitor_369',['glfwGetWaylandMonitor',['../group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16',1,'glfw3native.h']]],
+ ['glfwgetwaylandwindow_370',['glfwGetWaylandWindow',['../group__native.html#ga5c597f2841229d9626f0811cca41ceb3',1,'glfw3native.h']]],
+ ['glfwgetwglcontext_371',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]],
+ ['glfwgetwin32adapter_372',['glfwGetWin32Adapter',['../group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41',1,'glfw3native.h']]],
+ ['glfwgetwin32monitor_373',['glfwGetWin32Monitor',['../group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766',1,'glfw3native.h']]],
+ ['glfwgetwin32window_374',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]],
+ ['glfwgetwindowattrib_375',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]],
+ ['glfwgetwindowcontentscale_376',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]],
+ ['glfwgetwindowframesize_377',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]],
+ ['glfwgetwindowmonitor_378',['glfwGetWindowMonitor',['../group__window.html#ga4d766499ac02c60f02221a9dfab87299',1,'glfw3.h']]],
+ ['glfwgetwindowopacity_379',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]],
+ ['glfwgetwindowpos_380',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]],
+ ['glfwgetwindowsize_381',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]],
+ ['glfwgetwindowuserpointer_382',['glfwGetWindowUserPointer',['../group__window.html#gae77a4add0d2023ca21ff1443ced01653',1,'glfw3.h']]],
+ ['glfwgetx11adapter_383',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]],
+ ['glfwgetx11display_384',['glfwGetX11Display',['../group__native.html#ga6e7822385cc8a1cc3b18f60352830189',1,'glfw3native.h']]],
+ ['glfwgetx11monitor_385',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]],
+ ['glfwgetx11selectionstring_386',['glfwGetX11SelectionString',['../group__native.html#gae084ef64dc0db140b455b1427256d3f7',1,'glfw3native.h']]],
+ ['glfwgetx11window_387',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]],
+ ['glfwglproc_388',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]],
+ ['glfwhidewindow_389',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]],
+ ['glfwiconifywindow_390',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]],
+ ['glfwimage_391',['GLFWimage',['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'GLFWimage():&#160;glfw3.h'],['../structGLFWimage.html',1,'GLFWimage']]],
+ ['glfwinit_392',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]],
+ ['glfwinithint_393',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]],
+ ['glfwjoystickfun_394',['GLFWjoystickfun',['../group__input.html#gaa21ad5986ae9a26077a40142efb56243',1,'glfw3.h']]],
+ ['glfwjoystickisgamepad_395',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]],
+ ['glfwjoystickpresent_396',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]],
+ ['glfwkeyfun_397',['GLFWkeyfun',['../group__input.html#ga5bd751b27b90f865d2ea613533f0453c',1,'glfw3.h']]],
+ ['glfwmakecontextcurrent_398',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]],
+ ['glfwmaximizewindow_399',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]],
+ ['glfwmonitor_400',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]],
+ ['glfwmonitorfun_401',['GLFWmonitorfun',['../group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249',1,'glfw3.h']]],
+ ['glfwmousebuttonfun_402',['GLFWmousebuttonfun',['../group__input.html#ga0184dcb59f6d85d735503dcaae809727',1,'glfw3.h']]],
+ ['glfwpollevents_403',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]],
+ ['glfwpostemptyevent_404',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]],
+ ['glfwrawmousemotionsupported_405',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]],
+ ['glfwrequestwindowattention_406',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]],
+ ['glfwrestorewindow_407',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]],
+ ['glfwscrollfun_408',['GLFWscrollfun',['../group__input.html#gaf656112c33de3efdb227fa58f0134cf5',1,'glfw3.h']]],
+ ['glfwsetcharcallback_409',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]],
+ ['glfwsetcharmodscallback_410',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]],
+ ['glfwsetclipboardstring_411',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]],
+ ['glfwsetcursor_412',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]],
+ ['glfwsetcursorentercallback_413',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]],
+ ['glfwsetcursorpos_414',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]],
+ ['glfwsetcursorposcallback_415',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]],
+ ['glfwsetdropcallback_416',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]],
+ ['glfwseterrorcallback_417',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]],
+ ['glfwsetframebuffersizecallback_418',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]],
+ ['glfwsetgamma_419',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]],
+ ['glfwsetgammaramp_420',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]],
+ ['glfwsetinputmode_421',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]],
+ ['glfwsetjoystickcallback_422',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]],
+ ['glfwsetjoystickuserpointer_423',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]],
+ ['glfwsetkeycallback_424',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]],
+ ['glfwsetmonitorcallback_425',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]],
+ ['glfwsetmonitoruserpointer_426',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]],
+ ['glfwsetmousebuttoncallback_427',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]],
+ ['glfwsetscrollcallback_428',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]],
+ ['glfwsettime_429',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]],
+ ['glfwsetwindowaspectratio_430',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]],
+ ['glfwsetwindowattrib_431',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]],
+ ['glfwsetwindowclosecallback_432',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]],
+ ['glfwsetwindowcontentscalecallback_433',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]],
+ ['glfwsetwindowfocuscallback_434',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]],
+ ['glfwsetwindowicon_435',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]],
+ ['glfwsetwindowiconifycallback_436',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]],
+ ['glfwsetwindowmaximizecallback_437',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]],
+ ['glfwsetwindowmonitor_438',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]],
+ ['glfwsetwindowopacity_439',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]],
+ ['glfwsetwindowpos_440',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]],
+ ['glfwsetwindowposcallback_441',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]],
+ ['glfwsetwindowrefreshcallback_442',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]],
+ ['glfwsetwindowshouldclose_443',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]],
+ ['glfwsetwindowsize_444',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]],
+ ['glfwsetwindowsizecallback_445',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]],
+ ['glfwsetwindowsizelimits_446',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]],
+ ['glfwsetwindowtitle_447',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]],
+ ['glfwsetwindowuserpointer_448',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]],
+ ['glfwsetx11selectionstring_449',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]],
+ ['glfwshowwindow_450',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]],
+ ['glfwswapbuffers_451',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]],
+ ['glfwswapinterval_452',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]],
+ ['glfwterminate_453',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]],
+ ['glfwupdategamepadmappings_454',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]],
+ ['glfwvidmode_455',['GLFWvidmode',['../structGLFWvidmode.html',1,'GLFWvidmode'],['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'GLFWvidmode():&#160;glfw3.h']]],
+ ['glfwvkproc_456',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]],
+ ['glfwvulkansupported_457',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]],
+ ['glfwwaitevents_458',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]],
+ ['glfwwaiteventstimeout_459',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]],
+ ['glfwwindow_460',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]],
+ ['glfwwindowclosefun_461',['GLFWwindowclosefun',['../group__window.html#gabf859b936d80961b7d39013a9694cc3e',1,'glfw3.h']]],
+ ['glfwwindowcontentscalefun_462',['GLFWwindowcontentscalefun',['../group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e',1,'glfw3.h']]],
+ ['glfwwindowfocusfun_463',['GLFWwindowfocusfun',['../group__window.html#gabc58c47e9d93f6eb1862d615c3680f46',1,'glfw3.h']]],
+ ['glfwwindowhint_464',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]],
+ ['glfwwindowhintstring_465',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]],
+ ['glfwwindowiconifyfun_466',['GLFWwindowiconifyfun',['../group__window.html#ga35c658cccba236f26e7adee0e25f6a4f',1,'glfw3.h']]],
+ ['glfwwindowmaximizefun_467',['GLFWwindowmaximizefun',['../group__window.html#ga3017196fdaec33ac3e095765176c2a90',1,'glfw3.h']]],
+ ['glfwwindowposfun_468',['GLFWwindowposfun',['../group__window.html#gabe287973a21a8f927cde4db06b8dcbe9',1,'glfw3.h']]],
+ ['glfwwindowrefreshfun_469',['GLFWwindowrefreshfun',['../group__window.html#ga431663a1427d2eb3a273bc398b6737b5',1,'glfw3.h']]],
+ ['glfwwindowshouldclose_470',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]],
+ ['glfwwindowsizefun_471',['GLFWwindowsizefun',['../group__window.html#gaec0282944bb810f6f3163ec02da90350',1,'glfw3.h']]],
+ ['green_472',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]],
+ ['greenbits_473',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_6.html b/libs/glfw-3.3.8/docs/html/search/all_6.html
new file mode 100644
index 0000000..d3026a7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_6.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_6.js b/libs/glfw-3.3.8/docs/html/search/all_6.js
new file mode 100644
index 0000000..c7cee75
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['height_0',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_7.html b/libs/glfw-3.3.8/docs/html/search/all_7.html
new file mode 100644
index 0000000..b2ee042
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_7.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_7.js b/libs/glfw-3.3.8/docs/html/search/all_7.js
new file mode 100644
index 0000000..e3d9927
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_7.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['initialization_2c_20version_20and_20error_20reference_0',['Initialization, version and error reference',['../group__init.html',1,'']]],
+ ['input_20guide_1',['Input guide',['../input_guide.html',1,'']]],
+ ['input_20reference_2',['Input reference',['../group__input.html',1,'']]],
+ ['input_2edox_3',['input.dox',['../input_8dox.html',1,'']]],
+ ['internal_20structure_4',['Internal structure',['../internals_guide.html',1,'']]],
+ ['internal_2edox_5',['internal.dox',['../internal_8dox.html',1,'']]],
+ ['intro_2edox_6',['intro.dox',['../intro_8dox.html',1,'']]],
+ ['introduction_20to_20the_20api_7',['Introduction to the API',['../intro_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_8.html b/libs/glfw-3.3.8/docs/html/search/all_8.html
new file mode 100644
index 0000000..40a0b3f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_8.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_8.js b/libs/glfw-3.3.8/docs/html/search/all_8.js
new file mode 100644
index 0000000..13c7e1c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['joystick_20hat_20states_0',['Joystick hat states',['../group__hat__state.html',1,'']]],
+ ['joysticks_1',['Joysticks',['../group__joysticks.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_9.html b/libs/glfw-3.3.8/docs/html/search/all_9.html
new file mode 100644
index 0000000..7c49144
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_9.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_9.js b/libs/glfw-3.3.8/docs/html/search/all_9.js
new file mode 100644
index 0000000..85dae9f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['keyboard_20keys_0',['Keyboard keys',['../group__keys.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_a.html b/libs/glfw-3.3.8/docs/html/search/all_a.html
new file mode 100644
index 0000000..fc9d79c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_a.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_a.js b/libs/glfw-3.3.8/docs/html/search/all_a.js
new file mode 100644
index 0000000..07d4bf9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_a.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['main_2edox_0',['main.dox',['../main_8dox.html',1,'']]],
+ ['modifier_20key_20flags_1',['Modifier key flags',['../group__mods.html',1,'']]],
+ ['monitor_20guide_2',['Monitor guide',['../monitor_guide.html',1,'']]],
+ ['monitor_20reference_3',['Monitor reference',['../group__monitor.html',1,'']]],
+ ['monitor_2edox_4',['monitor.dox',['../monitor_8dox.html',1,'']]],
+ ['mouse_20buttons_5',['Mouse buttons',['../group__buttons.html',1,'']]],
+ ['moving_20from_20glfw_202_20to_203_6',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]],
+ ['moving_2edox_7',['moving.dox',['../moving_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_b.html b/libs/glfw-3.3.8/docs/html/search/all_b.html
new file mode 100644
index 0000000..dafb1fa
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_b.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_b.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_b.js b/libs/glfw-3.3.8/docs/html/search/all_b.js
new file mode 100644
index 0000000..acfdc50
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_b.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['native_20access_0',['Native access',['../group__native.html',1,'']]],
+ ['news_2edox_1',['news.dox',['../news_8dox.html',1,'']]],
+ ['notitle_2',['notitle',['../index.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_c.html b/libs/glfw-3.3.8/docs/html/search/all_c.html
new file mode 100644
index 0000000..9df619d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_c.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_c.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_c.js b/libs/glfw-3.3.8/docs/html/search/all_c.js
new file mode 100644
index 0000000..6414492
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['pixels_0',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_d.html b/libs/glfw-3.3.8/docs/html/search/all_d.html
new file mode 100644
index 0000000..95d8eec
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_d.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_d.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_d.js b/libs/glfw-3.3.8/docs/html/search/all_d.js
new file mode 100644
index 0000000..65523fe
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_d.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['quick_2edox_0',['quick.dox',['../quick_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_e.html b/libs/glfw-3.3.8/docs/html/search/all_e.html
new file mode 100644
index 0000000..a54e120
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_e.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_e.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_e.js b/libs/glfw-3.3.8/docs/html/search/all_e.js
new file mode 100644
index 0000000..7d07f0f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_e.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['red_0',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]],
+ ['redbits_1',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]],
+ ['refreshrate_2',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]],
+ ['release_20notes_3',['Release notes',['../news.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/all_f.html b/libs/glfw-3.3.8/docs/html/search/all_f.html
new file mode 100644
index 0000000..8d0aed3
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_f.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="all_f.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/all_f.js b/libs/glfw-3.3.8/docs/html/search/all_f.js
new file mode 100644
index 0000000..58da740
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/all_f.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['size_0',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]],
+ ['standard_20cursor_20shapes_1',['Standard cursor shapes',['../group__shapes.html',1,'']]],
+ ['standards_20conformance_2',['Standards conformance',['../compat_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/classes_0.html b/libs/glfw-3.3.8/docs/html/search/classes_0.html
new file mode 100644
index 0000000..9d4f871
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/classes_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="classes_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/classes_0.js b/libs/glfw-3.3.8/docs/html/search/classes_0.js
new file mode 100644
index 0000000..14cc25b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/classes_0.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['glfwgamepadstate_0',['GLFWgamepadstate',['../structGLFWgamepadstate.html',1,'']]],
+ ['glfwgammaramp_1',['GLFWgammaramp',['../structGLFWgammaramp.html',1,'']]],
+ ['glfwimage_2',['GLFWimage',['../structGLFWimage.html',1,'']]],
+ ['glfwvidmode_3',['GLFWvidmode',['../structGLFWvidmode.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/close.svg b/libs/glfw-3.3.8/docs/html/search/close.svg
new file mode 100644
index 0000000..a933eea
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/close.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ viewBox="0 0 11 11"
+ height="11"
+ width="11"
+ id="svg2"
+ version="1.1">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <path
+ id="path12"
+ d="M 5.5 0.5 A 5 5 0 0 0 0.5 5.5 A 5 5 0 0 0 5.5 10.5 A 5 5 0 0 0 10.5 5.5 A 5 5 0 0 0 5.5 0.5 z M 3.5820312 3 A 0.58291923 0.58291923 0 0 1 4 3.1757812 L 5.5 4.6757812 L 7 3.1757812 A 0.58291923 0.58291923 0 0 1 7.4003906 3 A 0.58291923 0.58291923 0 0 1 7.8242188 4 L 6.3242188 5.5 L 7.8242188 7 A 0.58291923 0.58291923 0 1 1 7 7.8242188 L 5.5 6.3242188 L 4 7.8242188 A 0.58291923 0.58291923 0 1 1 3.1757812 7 L 4.6757812 5.5 L 3.1757812 4 A 0.58291923 0.58291923 0 0 1 3.5820312 3 z "
+ style="stroke-width:1.09870648;fill:#bababa;fill-opacity:1" />
+</svg>
diff --git a/libs/glfw-3.3.8/docs/html/search/defines_0.html b/libs/glfw-3.3.8/docs/html/search/defines_0.html
new file mode 100644
index 0000000..d0cf633
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/defines_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="defines_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/defines_0.js b/libs/glfw-3.3.8/docs/html/search/defines_0.js
new file mode 100644
index 0000000..13e688a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/defines_0.js
@@ -0,0 +1,32 @@
+var searchData=
+[
+ ['glapientry_0',['GLAPIENTRY',['../glfw3_8h.html#aa97755eb47e4bf2727ad45d610e18206',1,'glfw3.h']]],
+ ['glfw_5fany_5frelease_5fbehavior_1',['GLFW_ANY_RELEASE_BEHAVIOR',['../glfw3_8h.html#a6b47d806f285efe9bfd7aeec667297ee',1,'glfw3.h']]],
+ ['glfw_5fapientry_5fdefined_2',['GLFW_APIENTRY_DEFINED',['../glfw3_8h.html#a8a8538c5500308b4211844f2fb26c7b9',1,'glfw3.h']]],
+ ['glfw_5fconnected_3',['GLFW_CONNECTED',['../glfw3_8h.html#abe11513fd1ffbee5bb9b173f06028b9e',1,'glfw3.h']]],
+ ['glfw_5fcursor_4',['GLFW_CURSOR',['../glfw3_8h.html#aade31da5b884a84a7625c6b059b9132c',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fdisabled_5',['GLFW_CURSOR_DISABLED',['../glfw3_8h.html#a2315b99a329ce53e6a13a9d46fd5ca88',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fhidden_6',['GLFW_CURSOR_HIDDEN',['../glfw3_8h.html#ac4d5cb9d78de8573349c58763d53bf11',1,'glfw3.h']]],
+ ['glfw_5fcursor_5fnormal_7',['GLFW_CURSOR_NORMAL',['../glfw3_8h.html#ae04dd25c8577e19fa8c97368561f6c68',1,'glfw3.h']]],
+ ['glfw_5fdisconnected_8',['GLFW_DISCONNECTED',['../glfw3_8h.html#aab64b25921ef21d89252d6f0a71bfc32',1,'glfw3.h']]],
+ ['glfw_5fdont_5fcare_9',['GLFW_DONT_CARE',['../glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571',1,'glfw3.h']]],
+ ['glfw_5fegl_5fcontext_5fapi_10',['GLFW_EGL_CONTEXT_API',['../glfw3_8h.html#a03cf65c9ab01fc8b872ba58842c531c9',1,'glfw3.h']]],
+ ['glfw_5fglapientry_5fdefined_11',['GLFW_GLAPIENTRY_DEFINED',['../glfw3_8h.html#a3b526ac796be993406ea2f1642c25fc3',1,'glfw3.h']]],
+ ['glfw_5flock_5fkey_5fmods_12',['GLFW_LOCK_KEY_MODS',['../glfw3_8h.html#a07b84de0b52143e1958f88a7d9105947',1,'glfw3.h']]],
+ ['glfw_5flose_5fcontext_5fon_5freset_13',['GLFW_LOSE_CONTEXT_ON_RESET',['../glfw3_8h.html#aec1132f245143fc915b2f0995228564c',1,'glfw3.h']]],
+ ['glfw_5fnative_5fcontext_5fapi_14',['GLFW_NATIVE_CONTEXT_API',['../glfw3_8h.html#a0494c9bfd3f584ab41e6dbeeaa0e6a19',1,'glfw3.h']]],
+ ['glfw_5fno_5fapi_15',['GLFW_NO_API',['../glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264',1,'glfw3.h']]],
+ ['glfw_5fno_5freset_5fnotification_16',['GLFW_NO_RESET_NOTIFICATION',['../glfw3_8h.html#aee84a679230d205005e22487ff678a85',1,'glfw3.h']]],
+ ['glfw_5fno_5frobustness_17',['GLFW_NO_ROBUSTNESS',['../glfw3_8h.html#a8b306cb27f5bb0d6d67c7356a0e0fc34',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fany_5fprofile_18',['GLFW_OPENGL_ANY_PROFILE',['../glfw3_8h.html#ad6f2335d6f21cc9bab96633b1c111d5f',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fapi_19',['GLFW_OPENGL_API',['../glfw3_8h.html#a01b3f66db266341425e9abee6b257db2',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fcompat_5fprofile_20',['GLFW_OPENGL_COMPAT_PROFILE',['../glfw3_8h.html#ac06b663d79c8fcf04669cc8fcc0b7670',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fcore_5fprofile_21',['GLFW_OPENGL_CORE_PROFILE',['../glfw3_8h.html#af094bb16da76f66ebceb19ee213b3de8',1,'glfw3.h']]],
+ ['glfw_5fopengl_5fes_5fapi_22',['GLFW_OPENGL_ES_API',['../glfw3_8h.html#a28d9b3bc6c2a522d815c8e146595051f',1,'glfw3.h']]],
+ ['glfw_5fosmesa_5fcontext_5fapi_23',['GLFW_OSMESA_CONTEXT_API',['../glfw3_8h.html#afd34a473af9fa81f317910ea371b19e3',1,'glfw3.h']]],
+ ['glfw_5fraw_5fmouse_5fmotion_24',['GLFW_RAW_MOUSE_MOTION',['../glfw3_8h.html#aeeda1be76a44a1fc97c1282e06281fbb',1,'glfw3.h']]],
+ ['glfw_5frelease_5fbehavior_5fflush_25',['GLFW_RELEASE_BEHAVIOR_FLUSH',['../glfw3_8h.html#a999961d391db49cb4f949c1dece0e13b',1,'glfw3.h']]],
+ ['glfw_5frelease_5fbehavior_5fnone_26',['GLFW_RELEASE_BEHAVIOR_NONE',['../glfw3_8h.html#afca09088eccacdce4b59036cfae349c5',1,'glfw3.h']]],
+ ['glfw_5fsticky_5fkeys_27',['GLFW_STICKY_KEYS',['../glfw3_8h.html#ae3bbe2315b7691ab088159eb6c9110fc',1,'glfw3.h']]],
+ ['glfw_5fsticky_5fmouse_5fbuttons_28',['GLFW_STICKY_MOUSE_BUTTONS',['../glfw3_8h.html#a4d7ce8ce71030c3b04e2b78145bc59d1',1,'glfw3.h']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_0.html b/libs/glfw-3.3.8/docs/html/search/files_0.html
new file mode 100644
index 0000000..2dbb4c2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_0.js b/libs/glfw-3.3.8/docs/html/search/files_0.js
new file mode 100644
index 0000000..cb6c601
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['build_2edox_0',['build.dox',['../build_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_1.html b/libs/glfw-3.3.8/docs/html/search/files_1.html
new file mode 100644
index 0000000..18ccd15
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_1.js b/libs/glfw-3.3.8/docs/html/search/files_1.js
new file mode 100644
index 0000000..73b293d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['compat_2edox_0',['compat.dox',['../compat_8dox.html',1,'']]],
+ ['compile_2edox_1',['compile.dox',['../compile_8dox.html',1,'']]],
+ ['context_2edox_2',['context.dox',['../context_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_2.html b/libs/glfw-3.3.8/docs/html/search/files_2.html
new file mode 100644
index 0000000..a4c2be4
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_2.js b/libs/glfw-3.3.8/docs/html/search/files_2.js
new file mode 100644
index 0000000..f35780d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['glfw3_2eh_0',['glfw3.h',['../glfw3_8h.html',1,'']]],
+ ['glfw3native_2eh_1',['glfw3native.h',['../glfw3native_8h.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_3.html b/libs/glfw-3.3.8/docs/html/search/files_3.html
new file mode 100644
index 0000000..3ac4cfb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_3.js b/libs/glfw-3.3.8/docs/html/search/files_3.js
new file mode 100644
index 0000000..f3b77c0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_3.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['input_2edox_0',['input.dox',['../input_8dox.html',1,'']]],
+ ['internal_2edox_1',['internal.dox',['../internal_8dox.html',1,'']]],
+ ['intro_2edox_2',['intro.dox',['../intro_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_4.html b/libs/glfw-3.3.8/docs/html/search/files_4.html
new file mode 100644
index 0000000..eb19ecf
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_4.js b/libs/glfw-3.3.8/docs/html/search/files_4.js
new file mode 100644
index 0000000..03c9f8e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_4.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['main_2edox_0',['main.dox',['../main_8dox.html',1,'']]],
+ ['monitor_2edox_1',['monitor.dox',['../monitor_8dox.html',1,'']]],
+ ['moving_2edox_2',['moving.dox',['../moving_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_5.html b/libs/glfw-3.3.8/docs/html/search/files_5.html
new file mode 100644
index 0000000..61d86d0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_5.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_5.js b/libs/glfw-3.3.8/docs/html/search/files_5.js
new file mode 100644
index 0000000..6f6eee1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['news_2edox_0',['news.dox',['../news_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_6.html b/libs/glfw-3.3.8/docs/html/search/files_6.html
new file mode 100644
index 0000000..333517d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_6.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_6.js b/libs/glfw-3.3.8/docs/html/search/files_6.js
new file mode 100644
index 0000000..65523fe
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['quick_2edox_0',['quick.dox',['../quick_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_7.html b/libs/glfw-3.3.8/docs/html/search/files_7.html
new file mode 100644
index 0000000..ad481b0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_7.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_7.js b/libs/glfw-3.3.8/docs/html/search/files_7.js
new file mode 100644
index 0000000..82f1459
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['vulkan_2edox_0',['vulkan.dox',['../vulkan_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/files_8.html b/libs/glfw-3.3.8/docs/html/search/files_8.html
new file mode 100644
index 0000000..2af8404
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_8.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="files_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/files_8.js b/libs/glfw-3.3.8/docs/html/search/files_8.js
new file mode 100644
index 0000000..cb9a6d6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/files_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['window_2edox_0',['window.dox',['../window_8dox.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/functions_0.html b/libs/glfw-3.3.8/docs/html/search/functions_0.html
new file mode 100644
index 0000000..3b739c7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/functions_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="functions_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/functions_0.js b/libs/glfw-3.3.8/docs/html/search/functions_0.js
new file mode 100644
index 0000000..07b0dcd
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/functions_0.js
@@ -0,0 +1,146 @@
+var searchData=
+[
+ ['glfwcreatecursor_0',['glfwCreateCursor',['../group__input.html#ga556f604f73af156c0db0e97c081373c3',1,'glfw3.h']]],
+ ['glfwcreatestandardcursor_1',['glfwCreateStandardCursor',['../group__input.html#gaf2fb2eb2c9dd842d1cef8a34e3c6403e',1,'glfw3.h']]],
+ ['glfwcreatewindow_2',['glfwCreateWindow',['../group__window.html#ga3555a418df92ad53f917597fe2f64aeb',1,'glfw3.h']]],
+ ['glfwcreatewindowsurface_3',['glfwCreateWindowSurface',['../group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965',1,'glfw3.h']]],
+ ['glfwdefaultwindowhints_4',['glfwDefaultWindowHints',['../group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a',1,'glfw3.h']]],
+ ['glfwdestroycursor_5',['glfwDestroyCursor',['../group__input.html#ga81b952cd1764274d0db7fb3c5a79ba6a',1,'glfw3.h']]],
+ ['glfwdestroywindow_6',['glfwDestroyWindow',['../group__window.html#gacdf43e51376051d2c091662e9fe3d7b2',1,'glfw3.h']]],
+ ['glfwextensionsupported_7',['glfwExtensionSupported',['../group__context.html#ga87425065c011cef1ebd6aac75e059dfa',1,'glfw3.h']]],
+ ['glfwfocuswindow_8',['glfwFocusWindow',['../group__window.html#ga873780357abd3f3a081d71a40aae45a1',1,'glfw3.h']]],
+ ['glfwgetclipboardstring_9',['glfwGetClipboardString',['../group__input.html#ga71a5b20808ea92193d65c21b82580355',1,'glfw3.h']]],
+ ['glfwgetcocoamonitor_10',['glfwGetCocoaMonitor',['../group__native.html#gaf22f429aec4b1aab316142d66d9be3e6',1,'glfw3native.h']]],
+ ['glfwgetcocoawindow_11',['glfwGetCocoaWindow',['../group__native.html#gac3ed9d495d0c2bb9652de5a50c648715',1,'glfw3native.h']]],
+ ['glfwgetcurrentcontext_12',['glfwGetCurrentContext',['../group__context.html#gad94e80185397a6cf5fe2ab30567af71c',1,'glfw3.h']]],
+ ['glfwgetcursorpos_13',['glfwGetCursorPos',['../group__input.html#ga01d37b6c40133676b9cea60ca1d7c0cc',1,'glfw3.h']]],
+ ['glfwgeteglcontext_14',['glfwGetEGLContext',['../group__native.html#ga671c5072becd085f4ab5771a9c8efcf1',1,'glfw3native.h']]],
+ ['glfwgetegldisplay_15',['glfwGetEGLDisplay',['../group__native.html#ga1cd8d973f47aacb5532d368147cc3138',1,'glfw3native.h']]],
+ ['glfwgeteglsurface_16',['glfwGetEGLSurface',['../group__native.html#ga2199b36117a6a695fec8441d8052eee6',1,'glfw3native.h']]],
+ ['glfwgeterror_17',['glfwGetError',['../group__init.html#ga944986b4ec0b928d488141f92982aa18',1,'glfw3.h']]],
+ ['glfwgetframebuffersize_18',['glfwGetFramebufferSize',['../group__window.html#ga0e2637a4161afb283f5300c7f94785c9',1,'glfw3.h']]],
+ ['glfwgetgamepadname_19',['glfwGetGamepadName',['../group__input.html#ga8aea73a1a25cc6c0486a617019f56728',1,'glfw3.h']]],
+ ['glfwgetgamepadstate_20',['glfwGetGamepadState',['../group__input.html#gadccddea8bce6113fa459de379ddaf051',1,'glfw3.h']]],
+ ['glfwgetgammaramp_21',['glfwGetGammaRamp',['../group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f',1,'glfw3.h']]],
+ ['glfwgetglxcontext_22',['glfwGetGLXContext',['../group__native.html#ga62d884114b0abfcdc2930e89f20867e2',1,'glfw3native.h']]],
+ ['glfwgetglxwindow_23',['glfwGetGLXWindow',['../group__native.html#ga1ed27b8766e859a21381e8f8ce18d049',1,'glfw3native.h']]],
+ ['glfwgetinputmode_24',['glfwGetInputMode',['../group__input.html#gaf5b859dbe19bdf434e42695ea45cc5f4',1,'glfw3.h']]],
+ ['glfwgetinstanceprocaddress_25',['glfwGetInstanceProcAddress',['../group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9',1,'glfw3.h']]],
+ ['glfwgetjoystickaxes_26',['glfwGetJoystickAxes',['../group__input.html#gaeb1c0191d3140a233a682987c61eb408',1,'glfw3.h']]],
+ ['glfwgetjoystickbuttons_27',['glfwGetJoystickButtons',['../group__input.html#ga5ffe34739d3dc97efe432ed2d81d9938',1,'glfw3.h']]],
+ ['glfwgetjoystickguid_28',['glfwGetJoystickGUID',['../group__input.html#ga6659411aec3c7fcef27780e2cb2d9600',1,'glfw3.h']]],
+ ['glfwgetjoystickhats_29',['glfwGetJoystickHats',['../group__input.html#ga06e660841b3e79c54da4f54a932c5a2c',1,'glfw3.h']]],
+ ['glfwgetjoystickname_30',['glfwGetJoystickName',['../group__input.html#gac6a8e769e18e0bcfa9097793fc2c3978',1,'glfw3.h']]],
+ ['glfwgetjoystickuserpointer_31',['glfwGetJoystickUserPointer',['../group__input.html#ga18cefd7265d1fa04f3fd38a6746db5f3',1,'glfw3.h']]],
+ ['glfwgetkey_32',['glfwGetKey',['../group__input.html#gadd341da06bc8d418b4dc3a3518af9ad2',1,'glfw3.h']]],
+ ['glfwgetkeyname_33',['glfwGetKeyName',['../group__input.html#gaeaed62e69c3bd62b7ff8f7b19913ce4f',1,'glfw3.h']]],
+ ['glfwgetkeyscancode_34',['glfwGetKeyScancode',['../group__input.html#ga67ddd1b7dcbbaff03e4a76c0ea67103a',1,'glfw3.h']]],
+ ['glfwgetmonitorcontentscale_35',['glfwGetMonitorContentScale',['../group__monitor.html#gad3152e84465fa620b601265ebfcdb21b',1,'glfw3.h']]],
+ ['glfwgetmonitorname_36',['glfwGetMonitorName',['../group__monitor.html#ga7af83e13489d90379588fb331b9e4b68',1,'glfw3.h']]],
+ ['glfwgetmonitorphysicalsize_37',['glfwGetMonitorPhysicalSize',['../group__monitor.html#ga7d8bffc6c55539286a6bd20d32a8d7ea',1,'glfw3.h']]],
+ ['glfwgetmonitorpos_38',['glfwGetMonitorPos',['../group__monitor.html#ga102f54e7acc9149edbcf0997152df8c9',1,'glfw3.h']]],
+ ['glfwgetmonitors_39',['glfwGetMonitors',['../group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2',1,'glfw3.h']]],
+ ['glfwgetmonitoruserpointer_40',['glfwGetMonitorUserPointer',['../group__monitor.html#ga1adbfbfb8cd58b23cfee82e574fbbdc5',1,'glfw3.h']]],
+ ['glfwgetmonitorworkarea_41',['glfwGetMonitorWorkarea',['../group__monitor.html#ga7387a3bdb64bfe8ebf2b9e54f5b6c9d0',1,'glfw3.h']]],
+ ['glfwgetmousebutton_42',['glfwGetMouseButton',['../group__input.html#gac1473feacb5996c01a7a5a33b5066704',1,'glfw3.h']]],
+ ['glfwgetnsglcontext_43',['glfwGetNSGLContext',['../group__native.html#ga559e002e3cd63c979881770cd4dc63bc',1,'glfw3native.h']]],
+ ['glfwgetosmesacolorbuffer_44',['glfwGetOSMesaColorBuffer',['../group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132',1,'glfw3native.h']]],
+ ['glfwgetosmesacontext_45',['glfwGetOSMesaContext',['../group__native.html#ga9e47700080094eb569cb053afaa88773',1,'glfw3native.h']]],
+ ['glfwgetosmesadepthbuffer_46',['glfwGetOSMesaDepthBuffer',['../group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53',1,'glfw3native.h']]],
+ ['glfwgetphysicaldevicepresentationsupport_47',['glfwGetPhysicalDevicePresentationSupport',['../group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92',1,'glfw3.h']]],
+ ['glfwgetprimarymonitor_48',['glfwGetPrimaryMonitor',['../group__monitor.html#gac3adb24947eb709e1874028272e5dfc5',1,'glfw3.h']]],
+ ['glfwgetprocaddress_49',['glfwGetProcAddress',['../group__context.html#ga35f1837e6f666781842483937612f163',1,'glfw3.h']]],
+ ['glfwgetrequiredinstanceextensions_50',['glfwGetRequiredInstanceExtensions',['../group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6',1,'glfw3.h']]],
+ ['glfwgettime_51',['glfwGetTime',['../group__input.html#gaa6cf4e7a77158a3b8fd00328b1720a4a',1,'glfw3.h']]],
+ ['glfwgettimerfrequency_52',['glfwGetTimerFrequency',['../group__input.html#ga3289ee876572f6e91f06df3a24824443',1,'glfw3.h']]],
+ ['glfwgettimervalue_53',['glfwGetTimerValue',['../group__input.html#ga09b2bd37d328e0b9456c7ec575cc26aa',1,'glfw3.h']]],
+ ['glfwgetversion_54',['glfwGetVersion',['../group__init.html#ga9f8ffaacf3c269cc48eafbf8b9b71197',1,'glfw3.h']]],
+ ['glfwgetversionstring_55',['glfwGetVersionString',['../group__init.html#ga026abd003c8e6501981ab1662062f1c0',1,'glfw3.h']]],
+ ['glfwgetvideomode_56',['glfwGetVideoMode',['../group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5',1,'glfw3.h']]],
+ ['glfwgetvideomodes_57',['glfwGetVideoModes',['../group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b',1,'glfw3.h']]],
+ ['glfwgetwaylanddisplay_58',['glfwGetWaylandDisplay',['../group__native.html#gacbe11f93ce20621de82989bbba94e62a',1,'glfw3native.h']]],
+ ['glfwgetwaylandmonitor_59',['glfwGetWaylandMonitor',['../group__native.html#ga4f16066bd4c59e2f99418adfcb43dd16',1,'glfw3native.h']]],
+ ['glfwgetwaylandwindow_60',['glfwGetWaylandWindow',['../group__native.html#ga5c597f2841229d9626f0811cca41ceb3',1,'glfw3native.h']]],
+ ['glfwgetwglcontext_61',['glfwGetWGLContext',['../group__native.html#gadc4010d91d9cc1134d040eeb1202a143',1,'glfw3native.h']]],
+ ['glfwgetwin32adapter_62',['glfwGetWin32Adapter',['../group__native.html#gad4d3e9242536c0ba6be88a98f4c73a41',1,'glfw3native.h']]],
+ ['glfwgetwin32monitor_63',['glfwGetWin32Monitor',['../group__native.html#gac845f7dbe4c1d7fdd682a3c6fdae6766',1,'glfw3native.h']]],
+ ['glfwgetwin32window_64',['glfwGetWin32Window',['../group__native.html#gafe5079aa79038b0079fc09d5f0a8e667',1,'glfw3native.h']]],
+ ['glfwgetwindowattrib_65',['glfwGetWindowAttrib',['../group__window.html#gacccb29947ea4b16860ebef42c2cb9337',1,'glfw3.h']]],
+ ['glfwgetwindowcontentscale_66',['glfwGetWindowContentScale',['../group__window.html#gaf5d31de9c19c4f994facea64d2b3106c',1,'glfw3.h']]],
+ ['glfwgetwindowframesize_67',['glfwGetWindowFrameSize',['../group__window.html#ga1a9fd382058c53101b21cf211898f1f1',1,'glfw3.h']]],
+ ['glfwgetwindowmonitor_68',['glfwGetWindowMonitor',['../group__window.html#ga4d766499ac02c60f02221a9dfab87299',1,'glfw3.h']]],
+ ['glfwgetwindowopacity_69',['glfwGetWindowOpacity',['../group__window.html#gad09f0bd7a6307c4533b7061828480a84',1,'glfw3.h']]],
+ ['glfwgetwindowpos_70',['glfwGetWindowPos',['../group__window.html#ga73cb526c000876fd8ddf571570fdb634',1,'glfw3.h']]],
+ ['glfwgetwindowsize_71',['glfwGetWindowSize',['../group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6',1,'glfw3.h']]],
+ ['glfwgetwindowuserpointer_72',['glfwGetWindowUserPointer',['../group__window.html#gae77a4add0d2023ca21ff1443ced01653',1,'glfw3.h']]],
+ ['glfwgetx11adapter_73',['glfwGetX11Adapter',['../group__native.html#ga088fbfa80f50569402b41be71ad66e40',1,'glfw3native.h']]],
+ ['glfwgetx11display_74',['glfwGetX11Display',['../group__native.html#ga6e7822385cc8a1cc3b18f60352830189',1,'glfw3native.h']]],
+ ['glfwgetx11monitor_75',['glfwGetX11Monitor',['../group__native.html#gab2f8cc043905e9fa9b12bfdbbcfe874c',1,'glfw3native.h']]],
+ ['glfwgetx11selectionstring_76',['glfwGetX11SelectionString',['../group__native.html#gae084ef64dc0db140b455b1427256d3f7',1,'glfw3native.h']]],
+ ['glfwgetx11window_77',['glfwGetX11Window',['../group__native.html#ga90ca676322740842db446999a1b1f21d',1,'glfw3native.h']]],
+ ['glfwhidewindow_78',['glfwHideWindow',['../group__window.html#ga49401f82a1ba5f15db5590728314d47c',1,'glfw3.h']]],
+ ['glfwiconifywindow_79',['glfwIconifyWindow',['../group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4',1,'glfw3.h']]],
+ ['glfwinit_80',['glfwInit',['../group__init.html#ga317aac130a235ab08c6db0834907d85e',1,'glfw3.h']]],
+ ['glfwinithint_81',['glfwInitHint',['../group__init.html#ga110fd1d3f0412822b4f1908c026f724a',1,'glfw3.h']]],
+ ['glfwjoystickisgamepad_82',['glfwJoystickIsGamepad',['../group__input.html#gad0f676860f329d80f7e47e9f06a96f00',1,'glfw3.h']]],
+ ['glfwjoystickpresent_83',['glfwJoystickPresent',['../group__input.html#gaed0966cee139d815317f9ffcba64c9f1',1,'glfw3.h']]],
+ ['glfwmakecontextcurrent_84',['glfwMakeContextCurrent',['../group__context.html#ga1c04dc242268f827290fe40aa1c91157',1,'glfw3.h']]],
+ ['glfwmaximizewindow_85',['glfwMaximizeWindow',['../group__window.html#ga3f541387449d911274324ae7f17ec56b',1,'glfw3.h']]],
+ ['glfwpollevents_86',['glfwPollEvents',['../group__window.html#ga37bd57223967b4211d60ca1a0bf3c832',1,'glfw3.h']]],
+ ['glfwpostemptyevent_87',['glfwPostEmptyEvent',['../group__window.html#gab5997a25187e9fd5c6f2ecbbc8dfd7e9',1,'glfw3.h']]],
+ ['glfwrawmousemotionsupported_88',['glfwRawMouseMotionSupported',['../group__input.html#gae4ee0dbd0d256183e1ea4026d897e1c2',1,'glfw3.h']]],
+ ['glfwrequestwindowattention_89',['glfwRequestWindowAttention',['../group__window.html#ga2f8d59323fc4692c1d54ba08c863a703',1,'glfw3.h']]],
+ ['glfwrestorewindow_90',['glfwRestoreWindow',['../group__window.html#ga52527a5904b47d802b6b4bb519cdebc7',1,'glfw3.h']]],
+ ['glfwsetcharcallback_91',['glfwSetCharCallback',['../group__input.html#gab25c4a220fd8f5717718dbc487828996',1,'glfw3.h']]],
+ ['glfwsetcharmodscallback_92',['glfwSetCharModsCallback',['../group__input.html#ga0b7f4ad13c2b17435ff13b6dcfb4e43c',1,'glfw3.h']]],
+ ['glfwsetclipboardstring_93',['glfwSetClipboardString',['../group__input.html#gaba1f022c5eb07dfac421df34cdcd31dd',1,'glfw3.h']]],
+ ['glfwsetcursor_94',['glfwSetCursor',['../group__input.html#gad3b4f38c8d5dae036bc8fa959e18343e',1,'glfw3.h']]],
+ ['glfwsetcursorentercallback_95',['glfwSetCursorEnterCallback',['../group__input.html#gad27f8ad0142c038a281466c0966817d8',1,'glfw3.h']]],
+ ['glfwsetcursorpos_96',['glfwSetCursorPos',['../group__input.html#ga04b03af936d906ca123c8f4ee08b39e7',1,'glfw3.h']]],
+ ['glfwsetcursorposcallback_97',['glfwSetCursorPosCallback',['../group__input.html#gac1f879ab7435d54d4d79bb469fe225d7',1,'glfw3.h']]],
+ ['glfwsetdropcallback_98',['glfwSetDropCallback',['../group__input.html#gab773f0ee0a07cff77a210cea40bc1f6b',1,'glfw3.h']]],
+ ['glfwseterrorcallback_99',['glfwSetErrorCallback',['../group__init.html#gaff45816610d53f0b83656092a4034f40',1,'glfw3.h']]],
+ ['glfwsetframebuffersizecallback_100',['glfwSetFramebufferSizeCallback',['../group__window.html#gab3fb7c3366577daef18c0023e2a8591f',1,'glfw3.h']]],
+ ['glfwsetgamma_101',['glfwSetGamma',['../group__monitor.html#ga6ac582625c990220785ddd34efa3169a',1,'glfw3.h']]],
+ ['glfwsetgammaramp_102',['glfwSetGammaRamp',['../group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd',1,'glfw3.h']]],
+ ['glfwsetinputmode_103',['glfwSetInputMode',['../group__input.html#gaa92336e173da9c8834558b54ee80563b',1,'glfw3.h']]],
+ ['glfwsetjoystickcallback_104',['glfwSetJoystickCallback',['../group__input.html#ga2f60a0e5b7bd8d1b7344dc0a7cb32b4c',1,'glfw3.h']]],
+ ['glfwsetjoystickuserpointer_105',['glfwSetJoystickUserPointer',['../group__input.html#ga6b2f72d64d636b48a727b437cbb7489e',1,'glfw3.h']]],
+ ['glfwsetkeycallback_106',['glfwSetKeyCallback',['../group__input.html#ga1caf18159767e761185e49a3be019f8d',1,'glfw3.h']]],
+ ['glfwsetmonitorcallback_107',['glfwSetMonitorCallback',['../group__monitor.html#gab39df645587c8518192aa746c2fb06c3',1,'glfw3.h']]],
+ ['glfwsetmonitoruserpointer_108',['glfwSetMonitorUserPointer',['../group__monitor.html#ga702750e24313a686d3637297b6e85fda',1,'glfw3.h']]],
+ ['glfwsetmousebuttoncallback_109',['glfwSetMouseButtonCallback',['../group__input.html#ga6ab84420974d812bee700e45284a723c',1,'glfw3.h']]],
+ ['glfwsetscrollcallback_110',['glfwSetScrollCallback',['../group__input.html#ga571e45a030ae4061f746ed56cb76aede',1,'glfw3.h']]],
+ ['glfwsettime_111',['glfwSetTime',['../group__input.html#gaf59589ef6e8b8c8b5ad184b25afd4dc0',1,'glfw3.h']]],
+ ['glfwsetwindowaspectratio_112',['glfwSetWindowAspectRatio',['../group__window.html#ga72ac8cb1ee2e312a878b55153d81b937',1,'glfw3.h']]],
+ ['glfwsetwindowattrib_113',['glfwSetWindowAttrib',['../group__window.html#gace2afda29b4116ec012e410a6819033e',1,'glfw3.h']]],
+ ['glfwsetwindowclosecallback_114',['glfwSetWindowCloseCallback',['../group__window.html#gada646d775a7776a95ac000cfc1885331',1,'glfw3.h']]],
+ ['glfwsetwindowcontentscalecallback_115',['glfwSetWindowContentScaleCallback',['../group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6',1,'glfw3.h']]],
+ ['glfwsetwindowfocuscallback_116',['glfwSetWindowFocusCallback',['../group__window.html#gac2d83c4a10f071baf841f6730528e66c',1,'glfw3.h']]],
+ ['glfwsetwindowicon_117',['glfwSetWindowIcon',['../group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5',1,'glfw3.h']]],
+ ['glfwsetwindowiconifycallback_118',['glfwSetWindowIconifyCallback',['../group__window.html#gac793e9efd255567b5fb8b445052cfd3e',1,'glfw3.h']]],
+ ['glfwsetwindowmaximizecallback_119',['glfwSetWindowMaximizeCallback',['../group__window.html#gacbe64c339fbd94885e62145563b6dc93',1,'glfw3.h']]],
+ ['glfwsetwindowmonitor_120',['glfwSetWindowMonitor',['../group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7',1,'glfw3.h']]],
+ ['glfwsetwindowopacity_121',['glfwSetWindowOpacity',['../group__window.html#gac31caeb3d1088831b13d2c8a156802e9',1,'glfw3.h']]],
+ ['glfwsetwindowpos_122',['glfwSetWindowPos',['../group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8',1,'glfw3.h']]],
+ ['glfwsetwindowposcallback_123',['glfwSetWindowPosCallback',['../group__window.html#ga08bdfbba88934f9c4f92fd757979ac74',1,'glfw3.h']]],
+ ['glfwsetwindowrefreshcallback_124',['glfwSetWindowRefreshCallback',['../group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e',1,'glfw3.h']]],
+ ['glfwsetwindowshouldclose_125',['glfwSetWindowShouldClose',['../group__window.html#ga49c449dde2a6f87d996f4daaa09d6708',1,'glfw3.h']]],
+ ['glfwsetwindowsize_126',['glfwSetWindowSize',['../group__window.html#ga371911f12c74c504dd8d47d832d095cb',1,'glfw3.h']]],
+ ['glfwsetwindowsizecallback_127',['glfwSetWindowSizeCallback',['../group__window.html#gad91b8b047a0c4c6033c38853864c34f8',1,'glfw3.h']]],
+ ['glfwsetwindowsizelimits_128',['glfwSetWindowSizeLimits',['../group__window.html#gac314fa6cec7d2d307be9963e2709cc90',1,'glfw3.h']]],
+ ['glfwsetwindowtitle_129',['glfwSetWindowTitle',['../group__window.html#ga5d877f09e968cef7a360b513306f17ff',1,'glfw3.h']]],
+ ['glfwsetwindowuserpointer_130',['glfwSetWindowUserPointer',['../group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651',1,'glfw3.h']]],
+ ['glfwsetx11selectionstring_131',['glfwSetX11SelectionString',['../group__native.html#ga55f879ab02d93367f966186b6f0133f7',1,'glfw3native.h']]],
+ ['glfwshowwindow_132',['glfwShowWindow',['../group__window.html#ga61be47917b72536a148300f46494fc66',1,'glfw3.h']]],
+ ['glfwswapbuffers_133',['glfwSwapBuffers',['../group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14',1,'glfw3.h']]],
+ ['glfwswapinterval_134',['glfwSwapInterval',['../group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed',1,'glfw3.h']]],
+ ['glfwterminate_135',['glfwTerminate',['../group__init.html#gaaae48c0a18607ea4a4ba951d939f0901',1,'glfw3.h']]],
+ ['glfwupdategamepadmappings_136',['glfwUpdateGamepadMappings',['../group__input.html#gaed5104612f2fa8e66aa6e846652ad00f',1,'glfw3.h']]],
+ ['glfwvulkansupported_137',['glfwVulkanSupported',['../group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b',1,'glfw3.h']]],
+ ['glfwwaitevents_138',['glfwWaitEvents',['../group__window.html#ga554e37d781f0a997656c26b2c56c835e',1,'glfw3.h']]],
+ ['glfwwaiteventstimeout_139',['glfwWaitEventsTimeout',['../group__window.html#ga605a178db92f1a7f1a925563ef3ea2cf',1,'glfw3.h']]],
+ ['glfwwindowhint_140',['glfwWindowHint',['../group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033',1,'glfw3.h']]],
+ ['glfwwindowhintstring_141',['glfwWindowHintString',['../group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f',1,'glfw3.h']]],
+ ['glfwwindowshouldclose_142',['glfwWindowShouldClose',['../group__window.html#ga24e02fbfefbb81fc45320989f8140ab5',1,'glfw3.h']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_0.html b/libs/glfw-3.3.8/docs/html/search/groups_0.html
new file mode 100644
index 0000000..76e992a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_0.js b/libs/glfw-3.3.8/docs/html/search/groups_0.js
new file mode 100644
index 0000000..93c0706
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['context_20reference_0',['Context reference',['../group__context.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_1.html b/libs/glfw-3.3.8/docs/html/search/groups_1.html
new file mode 100644
index 0000000..38ad74b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_1.js b/libs/glfw-3.3.8/docs/html/search/groups_1.js
new file mode 100644
index 0000000..eedfab6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['error_20codes_0',['Error codes',['../group__errors.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_2.html b/libs/glfw-3.3.8/docs/html/search/groups_2.html
new file mode 100644
index 0000000..8152426
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_2.js b/libs/glfw-3.3.8/docs/html/search/groups_2.js
new file mode 100644
index 0000000..fa4eb8e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['gamepad_20axes_0',['Gamepad axes',['../group__gamepad__axes.html',1,'']]],
+ ['gamepad_20buttons_1',['Gamepad buttons',['../group__gamepad__buttons.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_3.html b/libs/glfw-3.3.8/docs/html/search/groups_3.html
new file mode 100644
index 0000000..c73a37c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_3.js b/libs/glfw-3.3.8/docs/html/search/groups_3.js
new file mode 100644
index 0000000..8dd9d34
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_3.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['initialization_2c_20version_20and_20error_20reference_0',['Initialization, version and error reference',['../group__init.html',1,'']]],
+ ['input_20reference_1',['Input reference',['../group__input.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_4.html b/libs/glfw-3.3.8/docs/html/search/groups_4.html
new file mode 100644
index 0000000..d42aefb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_4.js b/libs/glfw-3.3.8/docs/html/search/groups_4.js
new file mode 100644
index 0000000..13c7e1c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['joystick_20hat_20states_0',['Joystick hat states',['../group__hat__state.html',1,'']]],
+ ['joysticks_1',['Joysticks',['../group__joysticks.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_5.html b/libs/glfw-3.3.8/docs/html/search/groups_5.html
new file mode 100644
index 0000000..cf1d61a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_5.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_5.js b/libs/glfw-3.3.8/docs/html/search/groups_5.js
new file mode 100644
index 0000000..85dae9f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['keyboard_20keys_0',['Keyboard keys',['../group__keys.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_6.html b/libs/glfw-3.3.8/docs/html/search/groups_6.html
new file mode 100644
index 0000000..16ccc00
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_6.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_6.js b/libs/glfw-3.3.8/docs/html/search/groups_6.js
new file mode 100644
index 0000000..ecd175e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_6.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['modifier_20key_20flags_0',['Modifier key flags',['../group__mods.html',1,'']]],
+ ['monitor_20reference_1',['Monitor reference',['../group__monitor.html',1,'']]],
+ ['mouse_20buttons_2',['Mouse buttons',['../group__buttons.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_7.html b/libs/glfw-3.3.8/docs/html/search/groups_7.html
new file mode 100644
index 0000000..3e24bea
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_7.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_7.js b/libs/glfw-3.3.8/docs/html/search/groups_7.js
new file mode 100644
index 0000000..423f6a5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['native_20access_0',['Native access',['../group__native.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_8.html b/libs/glfw-3.3.8/docs/html/search/groups_8.html
new file mode 100644
index 0000000..7c2c286
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_8.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_8.js b/libs/glfw-3.3.8/docs/html/search/groups_8.js
new file mode 100644
index 0000000..92f24a5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['standard_20cursor_20shapes_0',['Standard cursor shapes',['../group__shapes.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_9.html b/libs/glfw-3.3.8/docs/html/search/groups_9.html
new file mode 100644
index 0000000..c7d6799
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_9.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_9.js b/libs/glfw-3.3.8/docs/html/search/groups_9.js
new file mode 100644
index 0000000..7b5ed3f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['vulkan_20support_20reference_0',['Vulkan support reference',['../group__vulkan.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_a.html b/libs/glfw-3.3.8/docs/html/search/groups_a.html
new file mode 100644
index 0000000..7abe5e7
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_a.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="groups_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/groups_a.js b/libs/glfw-3.3.8/docs/html/search/groups_a.js
new file mode 100644
index 0000000..b9c307f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/groups_a.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['window_20reference_0',['Window reference',['../group__window.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/mag_sel.svg b/libs/glfw-3.3.8/docs/html/search/mag_sel.svg
new file mode 100644
index 0000000..03626f6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/mag_sel.svg
@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="svg2"
+ width="20"
+ height="19"
+ viewBox="0 0 20 19"
+ sodipodi:docname="mag_sel.svg"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="2096"
+ id="namedview4"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="32"
+ inkscape:cx="5.9792688"
+ inkscape:cy="1.1436277"
+ inkscape:window-x="1920"
+ inkscape:window-y="27"
+ inkscape:window-maximized="0"
+ inkscape:current-layer="svg2" />
+ <circle
+ style="fill:#000000;fill-opacity:0;stroke:#656565;stroke-width:1.4;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path4611"
+ cx="5.5"
+ cy="8.5"
+ r="3.5" />
+ <path
+ style="fill:#656565;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 11,7 13.5,10 16,7 Z"
+ id="path4609"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:none;stroke:#656565;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 8.1085854,11.109059 2.7823556,2.782356"
+ id="path4630"
+ inkscape:connector-curvature="0" />
+</svg>
diff --git a/libs/glfw-3.3.8/docs/html/search/nomatches.html b/libs/glfw-3.3.8/docs/html/search/nomatches.html
new file mode 100644
index 0000000..2b9360b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/nomatches.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="NoMatches">No Matches</div>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_0.html b/libs/glfw-3.3.8/docs/html/search/pages_0.html
new file mode 100644
index 0000000..1981712
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_0.js b/libs/glfw-3.3.8/docs/html/search/pages_0.js
new file mode 100644
index 0000000..22546b5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['building_20applications_0',['Building applications',['../build_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_1.html b/libs/glfw-3.3.8/docs/html/search/pages_1.html
new file mode 100644
index 0000000..320e4a4
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_1.js b/libs/glfw-3.3.8/docs/html/search/pages_1.js
new file mode 100644
index 0000000..8585995
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['compiling_20glfw_0',['Compiling GLFW',['../compile_guide.html',1,'']]],
+ ['context_20guide_1',['Context guide',['../context_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_2.html b/libs/glfw-3.3.8/docs/html/search/pages_2.html
new file mode 100644
index 0000000..396bc18
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_2.js b/libs/glfw-3.3.8/docs/html/search/pages_2.js
new file mode 100644
index 0000000..4d85845
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['deprecated_20list_0',['Deprecated List',['../deprecated.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_3.html b/libs/glfw-3.3.8/docs/html/search/pages_3.html
new file mode 100644
index 0000000..7a70856
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_3.js b/libs/glfw-3.3.8/docs/html/search/pages_3.js
new file mode 100644
index 0000000..c8458cc
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['getting_20started_0',['Getting started',['../quick_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_4.html b/libs/glfw-3.3.8/docs/html/search/pages_4.html
new file mode 100644
index 0000000..b43cefb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_4.js b/libs/glfw-3.3.8/docs/html/search/pages_4.js
new file mode 100644
index 0000000..f6548e8
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_4.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['input_20guide_0',['Input guide',['../input_guide.html',1,'']]],
+ ['internal_20structure_1',['Internal structure',['../internals_guide.html',1,'']]],
+ ['introduction_20to_20the_20api_2',['Introduction to the API',['../intro_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_5.html b/libs/glfw-3.3.8/docs/html/search/pages_5.html
new file mode 100644
index 0000000..6a95553
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_5.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_5.js b/libs/glfw-3.3.8/docs/html/search/pages_5.js
new file mode 100644
index 0000000..1a7683e
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['monitor_20guide_0',['Monitor guide',['../monitor_guide.html',1,'']]],
+ ['moving_20from_20glfw_202_20to_203_1',['Moving from GLFW 2 to 3',['../moving_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_6.html b/libs/glfw-3.3.8/docs/html/search/pages_6.html
new file mode 100644
index 0000000..6432c81
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_6.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_6.js b/libs/glfw-3.3.8/docs/html/search/pages_6.js
new file mode 100644
index 0000000..ea1a4d1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['notitle_0',['notitle',['../index.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_7.html b/libs/glfw-3.3.8/docs/html/search/pages_7.html
new file mode 100644
index 0000000..33d7d8b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_7.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_7.js b/libs/glfw-3.3.8/docs/html/search/pages_7.js
new file mode 100644
index 0000000..322b61a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['release_20notes_0',['Release notes',['../news.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_8.html b/libs/glfw-3.3.8/docs/html/search/pages_8.html
new file mode 100644
index 0000000..c634607
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_8.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_8.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_8.js b/libs/glfw-3.3.8/docs/html/search/pages_8.js
new file mode 100644
index 0000000..e46b235
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['standards_20conformance_0',['Standards conformance',['../compat_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_9.html b/libs/glfw-3.3.8/docs/html/search/pages_9.html
new file mode 100644
index 0000000..3473073
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_9.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_9.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_9.js b/libs/glfw-3.3.8/docs/html/search/pages_9.js
new file mode 100644
index 0000000..8cae3f5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['vulkan_20guide_0',['Vulkan guide',['../vulkan_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_a.html b/libs/glfw-3.3.8/docs/html/search/pages_a.html
new file mode 100644
index 0000000..acc508a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_a.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="pages_a.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/pages_a.js b/libs/glfw-3.3.8/docs/html/search/pages_a.js
new file mode 100644
index 0000000..8078165
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/pages_a.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['window_20guide_0',['Window guide',['../window_guide.html',1,'']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/search.css b/libs/glfw-3.3.8/docs/html/search/search.css
new file mode 100644
index 0000000..648a792
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/search.css
@@ -0,0 +1,263 @@
+/*---------------- Search Box */
+
+#MSearchBox {
+ white-space : nowrap;
+ background: white;
+ border-radius: 0.65em;
+ box-shadow: inset 0.5px 0.5px 3px 0px #555;
+ z-index: 102;
+}
+
+#MSearchBox .left {
+ display: inline-block;
+ vertical-align: middle;
+ height: 1.4em;
+}
+
+#MSearchSelect {
+ display: inline-block;
+ vertical-align: middle;
+ height: 19px;
+ padding: 0 0 0 0.3em;
+ margin: 0;
+}
+
+#MSearchField {
+ display: inline-block;
+ vertical-align: middle;
+ width: 7.5em;
+ height: 19px;
+ margin: 0 0.15em;
+ padding: 0;
+ line-height: 1em;
+ border:none;
+ color: #909090;
+ outline: none;
+ font-family: Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ background: none;
+}
+
+@media(hover: none) {
+ /* to avoid zooming on iOS */
+ #MSearchField {
+ font-size: 16px;
+ }
+}
+
+#MSearchBox .right {
+ display: inline-block;
+ vertical-align: middle;
+ width: 1.4em;
+ height: 1.4em;
+}
+
+#MSearchClose {
+ display: none;
+ font-size: inherit;
+ background : none;
+ border: none;
+ margin: 0;
+ padding: 0;
+ outline: none;
+
+}
+
+#MSearchCloseImg {
+ height: 1.4em;
+ padding: 0.3em;
+ margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+#main-menu > li:last-child {
+ /* This <li> object is the parent of the search bar */
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 36px;
+ margin-right: 1em;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #90A5CE;
+ background-color: #F9FAFC;
+ z-index: 10001;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: #3D578C;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ /*width: 60ex;*/
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: #EEF1F7;
+ z-index:10000;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRResult {
+ display: none;
+}
+
+div.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: #F0F3F8;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+
diff --git a/libs/glfw-3.3.8/docs/html/search/search.js b/libs/glfw-3.3.8/docs/html/search/search.js
new file mode 100644
index 0000000..607f4e1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/search.js
@@ -0,0 +1,802 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function convertToId(search)
+{
+ var result = '';
+ for (i=0;i<search.length;i++)
+ {
+ var c = search.charAt(i);
+ var cn = c.charCodeAt(0);
+ if (c.match(/[a-z0-9\u0080-\uFFFF]/))
+ {
+ result+=c;
+ }
+ else if (cn<16)
+ {
+ result+="_0"+cn.toString(16);
+ }
+ else
+ {
+ result+="_"+cn.toString(16);
+ }
+ }
+ return result;
+}
+
+function getXPos(item)
+{
+ var x = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ x += item.offsetLeft;
+ item = item.offsetParent;
+ }
+ }
+ return x;
+}
+
+function getYPos(item)
+{
+ var y = 0;
+ if (item.offsetWidth)
+ {
+ while (item && item!=document.body)
+ {
+ y += item.offsetTop;
+ item = item.offsetParent;
+ }
+ }
+ return y;
+}
+
+/* A class handling everything associated with the search panel.
+
+ Parameters:
+ name - The name of the global variable that will be
+ storing this instance. Is needed to be able to set timeouts.
+ resultPath - path to use for external files
+*/
+function SearchBox(name, resultsPath, label, extension)
+{
+ if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); }
+ if (!extension || extension == "") { extension = ".html"; }
+
+ // ---------- Instance variables
+ this.name = name;
+ this.resultsPath = resultsPath;
+ this.keyTimeout = 0;
+ this.keyTimeoutLength = 500;
+ this.closeSelectionTimeout = 300;
+ this.lastSearchValue = "";
+ this.lastResultsPage = "";
+ this.hideTimeout = 0;
+ this.searchIndex = 0;
+ this.searchActive = false;
+ this.searchLabel = label;
+ this.extension = extension;
+
+ // ----------- DOM Elements
+
+ this.DOMSearchField = function()
+ { return document.getElementById("MSearchField"); }
+
+ this.DOMSearchSelect = function()
+ { return document.getElementById("MSearchSelect"); }
+
+ this.DOMSearchSelectWindow = function()
+ { return document.getElementById("MSearchSelectWindow"); }
+
+ this.DOMPopupSearchResults = function()
+ { return document.getElementById("MSearchResults"); }
+
+ this.DOMPopupSearchResultsWindow = function()
+ { return document.getElementById("MSearchResultsWindow"); }
+
+ this.DOMSearchClose = function()
+ { return document.getElementById("MSearchClose"); }
+
+ this.DOMSearchBox = function()
+ { return document.getElementById("MSearchBox"); }
+
+ // ------------ Event Handlers
+
+ // Called when focus is added or removed from the search field.
+ this.OnSearchFieldFocus = function(isActive)
+ {
+ this.Activate(isActive);
+ }
+
+ this.OnSearchSelectShow = function()
+ {
+ var searchSelectWindow = this.DOMSearchSelectWindow();
+ var searchField = this.DOMSearchSelect();
+
+ var left = getXPos(searchField);
+ var top = getYPos(searchField);
+ top += searchField.offsetHeight;
+
+ // show search selection popup
+ searchSelectWindow.style.display='block';
+ searchSelectWindow.style.left = left + 'px';
+ searchSelectWindow.style.top = top + 'px';
+
+ // stop selection hide timer
+ if (this.hideTimeout)
+ {
+ clearTimeout(this.hideTimeout);
+ this.hideTimeout=0;
+ }
+ return false; // to avoid "image drag" default event
+ }
+
+ this.OnSearchSelectHide = function()
+ {
+ this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()",
+ this.closeSelectionTimeout);
+ }
+
+ // Called when the content of the search field is changed.
+ this.OnSearchFieldChange = function(evt)
+ {
+ if (this.keyTimeout) // kill running timer
+ {
+ clearTimeout(this.keyTimeout);
+ this.keyTimeout = 0;
+ }
+
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 || e.keyCode==13)
+ {
+ if (e.shiftKey==1)
+ {
+ this.OnSearchSelectShow();
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ child.focus();
+ return;
+ }
+ }
+ return;
+ }
+ else
+ {
+ window.frames.MSearchResults.postMessage("take_focus", "*");
+ }
+ }
+ else if (e.keyCode==27) // Escape out of the search field
+ {
+ this.DOMSearchField().blur();
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ this.Activate(false);
+ return;
+ }
+
+ // strip whitespaces
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+
+ if (searchValue != this.lastSearchValue) // search value has changed
+ {
+ if (searchValue != "") // non-empty search
+ {
+ // set timer for search update
+ this.keyTimeout = setTimeout(this.name + '.Search()',
+ this.keyTimeoutLength);
+ }
+ else // empty search field
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.lastSearchValue = '';
+ }
+ }
+ }
+
+ this.SelectItemCount = function(id)
+ {
+ var count=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ count++;
+ }
+ }
+ return count;
+ }
+
+ this.SelectItemSet = function(id)
+ {
+ var i,j=0;
+ var win=this.DOMSearchSelectWindow();
+ for (i=0;i<win.childNodes.length;i++)
+ {
+ var child = win.childNodes[i]; // get span within a
+ if (child.className=='SelectItem')
+ {
+ var node = child.firstChild;
+ if (j==id)
+ {
+ node.innerHTML='&#8226;';
+ }
+ else
+ {
+ node.innerHTML='&#160;';
+ }
+ j++;
+ }
+ }
+ }
+
+ // Called when an search filter selection is made.
+ // set item with index id as the active item
+ this.OnSelectItem = function(id)
+ {
+ this.searchIndex = id;
+ this.SelectItemSet(id);
+ var searchValue = this.DOMSearchField().value.replace(/ +/g, "");
+ if (searchValue!="" && this.searchActive) // something was found -> do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down
+ {
+ this.searchIndex++;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==38 && this.searchIndex>0) // Up
+ {
+ this.searchIndex--;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==13 || e.keyCode==27)
+ {
+ this.OnSelectItem(this.searchIndex);
+ this.CloseSelectionWindow();
+ this.DOMSearchField().focus();
+ }
+ return false;
+ }
+
+ // --------- Actions
+
+ // Closes the results window.
+ this.CloseResultsWindow = function()
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.Activate(false);
+ }
+
+ this.CloseSelectionWindow = function()
+ {
+ this.DOMSearchSelectWindow().style.display = 'none';
+ }
+
+ // Performs a search.
+ this.Search = function()
+ {
+ this.keyTimeout = 0;
+
+ // strip leading whitespace
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+ var code = searchValue.toLowerCase().charCodeAt(0);
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+ {
+ idxChar = searchValue.substr(0, 2);
+ }
+
+ var resultsPage;
+ var resultsPageWithSearch;
+ var hasResultsPage;
+
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+ resultsPage = this.resultsPath + '/nomatches' + this.extension;
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+
+ window.frames.MSearchResults.location = resultsPageWithSearch;
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+ this.DOMSearchClose().style.display = 'inline-block';
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
+ domPopupSearchResultsWindow.style.display = 'block';
+ left -= domPopupSearchResults.offsetWidth;
+ var maxWidth = document.body.clientWidth;
+ var width = 400;
+ if (left<10) left=10;
+ if (width+left+8>maxWidth) width=maxWidth-left-8;
+ domPopupSearchResultsWindow.style.top = top + 'px';
+ domPopupSearchResultsWindow.style.left = left + 'px';
+ domPopupSearchResultsWindow.style.width = width + 'px';
+ }
+
+ this.lastSearchValue = searchValue;
+ this.lastResultsPage = resultsPage;
+ }
+
+ // -------- Activation Functions
+
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
+ this.Activate = function(isActive)
+ {
+ if (isActive || // open it
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
+ )
+ {
+ this.DOMSearchBox().className = 'MSearchBoxActive';
+
+ var searchField = this.DOMSearchField();
+
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+ {
+ searchField.value = '';
+ this.searchActive = true;
+ }
+ }
+ else if (!isActive) // directly remove the panel
+ {
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
+ this.DOMSearchField().value = this.searchLabel;
+ this.searchActive = false;
+ this.lastSearchValue = ''
+ this.lastResultsPage = '';
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+ // The number of matches from the last run of <Search()>.
+ this.lastMatchCount = 0;
+ this.lastKey = 0;
+ this.repeatOn = false;
+
+ // Toggles the visibility of the passed element ID.
+ this.FindChildElement = function(id)
+ {
+ var parentElement = document.getElementById(id);
+ var element = parentElement.firstChild;
+
+ while (element && element!=parentElement)
+ {
+ if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+ if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+ else if (element.nextSibling)
+ {
+ element = element.nextSibling;
+ }
+ else
+ {
+ do
+ {
+ element = element.parentNode;
+ }
+ while (element && element!=parentElement && !element.nextSibling);
+
+ if (element && element!=parentElement)
+ {
+ element = element.nextSibling;
+ }
+ }
+ }
+ }
+
+ this.Toggle = function(id)
+ {
+ var element = this.FindChildElement(id);
+ if (element)
+ {
+ if (element.style.display == 'block')
+ {
+ element.style.display = 'none';
+ }
+ else
+ {
+ element.style.display = 'block';
+ }
+ }
+ }
+
+ // Searches for the passed string. If there is no parameter,
+ // it takes it from the URL query.
+ //
+ // Always returns true, since other documents may try to call it
+ // and that may or may not be possible.
+ this.Search = function(search)
+ {
+ if (!search) // get search word from URL
+ {
+ search = window.location.search;
+ search = search.substring(1); // Remove the leading '?'
+ search = unescape(search);
+ }
+
+ search = search.replace(/^ +/, ""); // strip leading spaces
+ search = search.replace(/ +$/, ""); // strip trailing spaces
+ search = search.toLowerCase();
+ search = convertToId(search);
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+ if (search.length<=rowMatchName.length &&
+ rowMatchName.substr(0, search.length)==search)
+ {
+ row.style.display = 'block';
+ matches++;
+ }
+ else
+ {
+ row.style.display = 'none';
+ }
+ }
+ i++;
+ }
+ document.getElementById("Searching").style.display='none';
+ if (matches == 0) // no results
+ {
+ document.getElementById("NoMatches").style.display='block';
+ }
+ else // at least one result
+ {
+ document.getElementById("NoMatches").style.display='none';
+ }
+ this.lastMatchCount = matches;
+ return true;
+ }
+
+ // return the first item with index index or higher that is visible
+ this.NavNext = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index++;
+ }
+ return focusItem;
+ }
+
+ this.NavPrev = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index--;
+ }
+ return focusItem;
+ }
+
+ this.ProcessKeys = function(e)
+ {
+ if (e.type == "keydown")
+ {
+ this.repeatOn = false;
+ this.lastKey = e.keyCode;
+ }
+ else if (e.type == "keypress")
+ {
+ if (!this.repeatOn)
+ {
+ if (this.lastKey) this.repeatOn = true;
+ return false; // ignore first keypress after keydown
+ }
+ }
+ else if (e.type == "keyup")
+ {
+ this.lastKey = 0;
+ this.repeatOn = false;
+ }
+ return this.lastKey!=0;
+ }
+
+ this.Nav = function(evt,itemIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ var newIndex = itemIndex-1;
+ var focusItem = this.NavPrev(newIndex);
+ if (focusItem)
+ {
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+ if (child && child.style.display == 'block') // children visible
+ {
+ var n=0;
+ var tmpElem;
+ while (1) // search for last child
+ {
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+ if (tmpElem)
+ {
+ focusItem = tmpElem;
+ }
+ else // found it!
+ {
+ break;
+ }
+ n++;
+ }
+ }
+ }
+ if (focusItem)
+ {
+ focusItem.focus();
+ }
+ else // return focus to search field
+ {
+ parent.document.getElementById("MSearchField").focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = itemIndex+1;
+ var focusItem;
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem && elem.style.display == 'block') // children visible
+ {
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
+ }
+ if (!focusItem) focusItem = this.NavNext(newIndex);
+ if (focusItem) focusItem.focus();
+ }
+ else if (this.lastKey==39) // Right
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'block';
+ }
+ else if (this.lastKey==37) // Left
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'none';
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+
+ this.NavChild = function(evt,itemIndex,childIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ if (childIndex>0)
+ {
+ var newIndex = childIndex-1;
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+ }
+ else // already at first child, jump to parent
+ {
+ document.getElementById('Item'+itemIndex).focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = childIndex+1;
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+ if (!elem) // last child, jump to parent next parent
+ {
+ elem = this.NavNext(itemIndex+1);
+ }
+ if (elem)
+ {
+ elem.focus();
+ }
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+}
+
+function setKeyActions(elem,action)
+{
+ elem.setAttribute('onkeydown',action);
+ elem.setAttribute('onkeypress',action);
+ elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+ elem.setAttribute('class',attr);
+ elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+ var results = document.getElementById("SRResults");
+ for (var e=0; e<searchData.length; e++)
+ {
+ var id = searchData[e][0];
+ var srResult = document.createElement('div');
+ srResult.setAttribute('id','SR_'+id);
+ setClassAttr(srResult,'SRResult');
+ var srEntry = document.createElement('div');
+ setClassAttr(srEntry,'SREntry');
+ var srLink = document.createElement('a');
+ srLink.setAttribute('id','Item'+e);
+ setKeyActions(srLink,'return searchResults.Nav(event,'+e+')');
+ setClassAttr(srLink,'SRSymbol');
+ srLink.innerHTML = searchData[e][1][0];
+ srEntry.appendChild(srLink);
+ if (searchData[e][1].length==2) // single result
+ {
+ srLink.setAttribute('href',searchData[e][1][1][0]);
+ srLink.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');
+ if (searchData[e][1][1][1])
+ {
+ srLink.setAttribute('target','_parent');
+ }
+ else
+ {
+ srLink.setAttribute('target','_blank');
+ }
+ var srScope = document.createElement('span');
+ setClassAttr(srScope,'SRScope');
+ srScope.innerHTML = searchData[e][1][1][2];
+ srEntry.appendChild(srScope);
+ }
+ else // multiple results
+ {
+ srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")');
+ var srChildren = document.createElement('div');
+ setClassAttr(srChildren,'SRChildren');
+ for (var c=0; c<searchData[e][1].length-1; c++)
+ {
+ var srChild = document.createElement('a');
+ srChild.setAttribute('id','Item'+e+'_c'+c);
+ setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')');
+ setClassAttr(srChild,'SRScope');
+ srChild.setAttribute('href',searchData[e][1][c+1][0]);
+ srChild.setAttribute('onclick','parent.searchBox.CloseResultsWindow()');
+ if (searchData[e][1][c+1][1])
+ {
+ srChild.setAttribute('target','_parent');
+ }
+ else
+ {
+ srChild.setAttribute('target','_blank');
+ }
+ srChild.innerHTML = searchData[e][1][c+1][2];
+ srChildren.appendChild(srChild);
+ }
+ srEntry.appendChild(srChildren);
+ }
+ srResult.appendChild(srEntry);
+ results.appendChild(srResult);
+ }
+}
+
+function init_search()
+{
+ var results = document.getElementById("MSearchSelectWindow");
+ for (var key in indexSectionLabels)
+ {
+ var link = document.createElement('a');
+ link.setAttribute('class','SelectItem');
+ link.setAttribute('onclick','searchBox.OnSelectItem('+key+')');
+ link.href='javascript:void(0)';
+ link.innerHTML='<span class="SelectionMark">&#160;</span>'+indexSectionLabels[key];
+ results.appendChild(link);
+ }
+ searchBox.OnSelectItem(0);
+}
+/* @license-end */
diff --git a/libs/glfw-3.3.8/docs/html/search/search_l.png b/libs/glfw-3.3.8/docs/html/search/search_l.png
new file mode 100644
index 0000000..fd5f7da
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/search_l.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/search/search_m.png b/libs/glfw-3.3.8/docs/html/search/search_m.png
new file mode 100644
index 0000000..b429a16
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/search_m.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/search/search_r.png b/libs/glfw-3.3.8/docs/html/search/search_r.png
new file mode 100644
index 0000000..1af5d21
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/search_r.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/search/searchdata.js b/libs/glfw-3.3.8/docs/html/search/searchdata.js
new file mode 100644
index 0000000..26680a5
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/searchdata.js
@@ -0,0 +1,39 @@
+var indexSectionsWithContent =
+{
+ 0: "abcdeghijkmnpqrsvw",
+ 1: "g",
+ 2: "bcgimnqvw",
+ 3: "g",
+ 4: "abghprsw",
+ 5: "g",
+ 6: "g",
+ 7: "cegijkmnsvw",
+ 8: "bcdgimnrsvw"
+};
+
+var indexSectionNames =
+{
+ 0: "all",
+ 1: "classes",
+ 2: "files",
+ 3: "functions",
+ 4: "variables",
+ 5: "typedefs",
+ 6: "defines",
+ 7: "groups",
+ 8: "pages"
+};
+
+var indexSectionLabels =
+{
+ 0: "All",
+ 1: "Data Structures",
+ 2: "Files",
+ 3: "Functions",
+ 4: "Variables",
+ 5: "Typedefs",
+ 6: "Macros",
+ 7: "Modules",
+ 8: "Pages"
+};
+
diff --git a/libs/glfw-3.3.8/docs/html/search/typedefs_0.html b/libs/glfw-3.3.8/docs/html/search/typedefs_0.html
new file mode 100644
index 0000000..ee21dad
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/typedefs_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="typedefs_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/typedefs_0.js b/libs/glfw-3.3.8/docs/html/search/typedefs_0.js
new file mode 100644
index 0000000..4ce15bc
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/typedefs_0.js
@@ -0,0 +1,32 @@
+var searchData=
+[
+ ['glfwcharfun_0',['GLFWcharfun',['../group__input.html#ga1ab90a55cf3f58639b893c0f4118cb6e',1,'glfw3.h']]],
+ ['glfwcharmodsfun_1',['GLFWcharmodsfun',['../group__input.html#gac3cf64f90b6219c05ac7b7822d5a4b8f',1,'glfw3.h']]],
+ ['glfwcursor_2',['GLFWcursor',['../group__input.html#ga89261ae18c75e863aaf2656ecdd238f4',1,'glfw3.h']]],
+ ['glfwcursorenterfun_3',['GLFWcursorenterfun',['../group__input.html#gaa93dc4818ac9ab32532909d53a337cbe',1,'glfw3.h']]],
+ ['glfwcursorposfun_4',['GLFWcursorposfun',['../group__input.html#gad6fae41b3ac2e4209aaa87b596c57f68',1,'glfw3.h']]],
+ ['glfwdropfun_5',['GLFWdropfun',['../group__input.html#gaaba73c3274062c18723b7f05862d94b2',1,'glfw3.h']]],
+ ['glfwerrorfun_6',['GLFWerrorfun',['../group__init.html#ga8184701785c096b3862a75cda1bf44a3',1,'glfw3.h']]],
+ ['glfwframebuffersizefun_7',['GLFWframebuffersizefun',['../group__window.html#gae18026e294dde685ed2e5f759533144d',1,'glfw3.h']]],
+ ['glfwgamepadstate_8',['GLFWgamepadstate',['../group__input.html#ga61acfb1f28f751438dd221225c5e725d',1,'glfw3.h']]],
+ ['glfwgammaramp_9',['GLFWgammaramp',['../group__monitor.html#ga939cf093cb0af0498b7b54dc2e181404',1,'glfw3.h']]],
+ ['glfwglproc_10',['GLFWglproc',['../group__context.html#ga3d47c2d2fbe0be9c505d0e04e91a133c',1,'glfw3.h']]],
+ ['glfwimage_11',['GLFWimage',['../group__window.html#ga7cc0a09de172fa7250872046f8c4d2ca',1,'glfw3.h']]],
+ ['glfwjoystickfun_12',['GLFWjoystickfun',['../group__input.html#gaa21ad5986ae9a26077a40142efb56243',1,'glfw3.h']]],
+ ['glfwkeyfun_13',['GLFWkeyfun',['../group__input.html#ga5bd751b27b90f865d2ea613533f0453c',1,'glfw3.h']]],
+ ['glfwmonitor_14',['GLFWmonitor',['../group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3',1,'glfw3.h']]],
+ ['glfwmonitorfun_15',['GLFWmonitorfun',['../group__monitor.html#gaabe16caca8dea952504dfdebdf4cd249',1,'glfw3.h']]],
+ ['glfwmousebuttonfun_16',['GLFWmousebuttonfun',['../group__input.html#ga0184dcb59f6d85d735503dcaae809727',1,'glfw3.h']]],
+ ['glfwscrollfun_17',['GLFWscrollfun',['../group__input.html#gaf656112c33de3efdb227fa58f0134cf5',1,'glfw3.h']]],
+ ['glfwvidmode_18',['GLFWvidmode',['../group__monitor.html#ga902c2816ac9b34b757282daab59b2565',1,'glfw3.h']]],
+ ['glfwvkproc_19',['GLFWvkproc',['../group__vulkan.html#ga70c01918dc9d233a4fbe0681a43018af',1,'glfw3.h']]],
+ ['glfwwindow_20',['GLFWwindow',['../group__window.html#ga3c96d80d363e67d13a41b5d1821f3242',1,'glfw3.h']]],
+ ['glfwwindowclosefun_21',['GLFWwindowclosefun',['../group__window.html#gabf859b936d80961b7d39013a9694cc3e',1,'glfw3.h']]],
+ ['glfwwindowcontentscalefun_22',['GLFWwindowcontentscalefun',['../group__window.html#ga77f288a2d04bb3c77c7d9615d08cf70e',1,'glfw3.h']]],
+ ['glfwwindowfocusfun_23',['GLFWwindowfocusfun',['../group__window.html#gabc58c47e9d93f6eb1862d615c3680f46',1,'glfw3.h']]],
+ ['glfwwindowiconifyfun_24',['GLFWwindowiconifyfun',['../group__window.html#ga35c658cccba236f26e7adee0e25f6a4f',1,'glfw3.h']]],
+ ['glfwwindowmaximizefun_25',['GLFWwindowmaximizefun',['../group__window.html#ga3017196fdaec33ac3e095765176c2a90',1,'glfw3.h']]],
+ ['glfwwindowposfun_26',['GLFWwindowposfun',['../group__window.html#gabe287973a21a8f927cde4db06b8dcbe9',1,'glfw3.h']]],
+ ['glfwwindowrefreshfun_27',['GLFWwindowrefreshfun',['../group__window.html#ga431663a1427d2eb3a273bc398b6737b5',1,'glfw3.h']]],
+ ['glfwwindowsizefun_28',['GLFWwindowsizefun',['../group__window.html#gaec0282944bb810f6f3163ec02da90350',1,'glfw3.h']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_0.html b/libs/glfw-3.3.8/docs/html/search/variables_0.html
new file mode 100644
index 0000000..fd893a6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_0.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_0.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_0.js b/libs/glfw-3.3.8/docs/html/search/variables_0.js
new file mode 100644
index 0000000..c61320f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['axes_0',['axes',['../structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189',1,'GLFWgamepadstate']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_1.html b/libs/glfw-3.3.8/docs/html/search/variables_1.html
new file mode 100644
index 0000000..5f8e440
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_1.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_1.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_1.js b/libs/glfw-3.3.8/docs/html/search/variables_1.js
new file mode 100644
index 0000000..20af6e6
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_1.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['blue_0',['blue',['../structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b',1,'GLFWgammaramp']]],
+ ['bluebits_1',['blueBits',['../structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047',1,'GLFWvidmode']]],
+ ['buttons_2',['buttons',['../structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a',1,'GLFWgamepadstate']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_2.html b/libs/glfw-3.3.8/docs/html/search/variables_2.html
new file mode 100644
index 0000000..77a7f48
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_2.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_2.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_2.js b/libs/glfw-3.3.8/docs/html/search/variables_2.js
new file mode 100644
index 0000000..ee6bfb1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['green_0',['green',['../structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a',1,'GLFWgammaramp']]],
+ ['greenbits_1',['greenBits',['../structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa',1,'GLFWvidmode']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_3.html b/libs/glfw-3.3.8/docs/html/search/variables_3.html
new file mode 100644
index 0000000..3ee62ba
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_3.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_3.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_3.js b/libs/glfw-3.3.8/docs/html/search/variables_3.js
new file mode 100644
index 0000000..c7cee75
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['height_0',['height',['../structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c',1,'GLFWvidmode::height()'],['../structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec',1,'GLFWimage::height()']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_4.html b/libs/glfw-3.3.8/docs/html/search/variables_4.html
new file mode 100644
index 0000000..640713f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_4.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_4.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_4.js b/libs/glfw-3.3.8/docs/html/search/variables_4.js
new file mode 100644
index 0000000..6414492
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['pixels_0',['pixels',['../structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb',1,'GLFWimage']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_5.html b/libs/glfw-3.3.8/docs/html/search/variables_5.html
new file mode 100644
index 0000000..7b2ba97
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_5.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_5.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_5.js b/libs/glfw-3.3.8/docs/html/search/variables_5.js
new file mode 100644
index 0000000..1bbbe9f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_5.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['red_0',['red',['../structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138',1,'GLFWgammaramp']]],
+ ['redbits_1',['redBits',['../structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b',1,'GLFWvidmode']]],
+ ['refreshrate_2',['refreshRate',['../structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649',1,'GLFWvidmode']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_6.html b/libs/glfw-3.3.8/docs/html/search/variables_6.html
new file mode 100644
index 0000000..fb1de8f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_6.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_6.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_6.js b/libs/glfw-3.3.8/docs/html/search/variables_6.js
new file mode 100644
index 0000000..406842a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['size_0',['size',['../structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5',1,'GLFWgammaramp']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_7.html b/libs/glfw-3.3.8/docs/html/search/variables_7.html
new file mode 100644
index 0000000..cf8dcf4
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_7.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<link rel="stylesheet" type="text/css" href="search.css"/>
+<script type="text/javascript" src="variables_7.js"></script>
+<script type="text/javascript" src="search.js"></script>
+</head>
+<body class="SRPage">
+<div id="SRIndex">
+<div class="SRStatus" id="Loading">Loading...</div>
+<div id="SRResults"></div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+createResults();
+/* @license-end */
+</script>
+<div class="SRStatus" id="Searching">Searching...</div>
+<div class="SRStatus" id="NoMatches">No Matches</div>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+document.getElementById("Loading").style.display="none";
+document.getElementById("NoMatches").style.display="none";
+var searchResults = new SearchResults("searchResults");
+searchResults.Search();
+window.addEventListener("message", function(event) {
+ if (event.data == "take_focus") {
+ var elem = searchResults.NavNext(0);
+ if (elem) elem.focus();
+ }
+});
+/* @license-end */
+</script>
+</div>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/search/variables_7.js b/libs/glfw-3.3.8/docs/html/search/variables_7.js
new file mode 100644
index 0000000..7d2fabb
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/search/variables_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['width_0',['width',['../structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d',1,'GLFWvidmode::width()'],['../structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835',1,'GLFWimage::width()']]]
+];
diff --git a/libs/glfw-3.3.8/docs/html/spaces.svg b/libs/glfw-3.3.8/docs/html/spaces.svg
new file mode 100644
index 0000000..5b32646
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/spaces.svg
@@ -0,0 +1,877 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="688.48718"
+ height="327.98221"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="spaces.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lend"
+ style="overflow:visible;">
+ <path
+ id="path3888"
+ style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.8110012"
+ inkscape:cx="320.68941"
+ inkscape:cy="159.80509"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1021"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ units="px"
+ showborder="false"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-12.627039,-339.86462)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3,3;stroke-dashoffset:0"
+ id="rect2985"
+ width="687.36469"
+ height="326.85971"
+ x="13.188287"
+ y="340.42587"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <rect
+ style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3757"
+ width="318.05698"
+ height="277.04684"
+ x="38.315689"
+ y="366.05841"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <rect
+ style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3767"
+ width="319.01456"
+ height="198.09369"
+ x="356.36722"
+ y="366.01291"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3769">
+ <path
+ d="m 365.3732,374.63632 0,2.73926 1.24023,0 c 0.45898,0 0.8138,-0.11881 1.06446,-0.35645 0.25064,-0.23762 0.37597,-0.57616 0.37597,-1.01562 0,-0.43619 -0.12533,-0.77311 -0.37597,-1.01074 -0.25066,-0.23763 -0.60548,-0.35644 -1.06446,-0.35645 l -1.24023,0 m -0.98633,-0.81054 2.22656,0 c 0.81706,0 1.43392,0.18555 1.85059,0.55664 0.41992,0.36784 0.62988,0.9082 0.62988,1.62109 0,0.7194 -0.20996,1.26302 -0.62988,1.63086 -0.41667,0.36784 -1.03353,0.55176 -1.85059,0.55176 l -1.24023,0 0,2.92968 -0.98633,0 0,-7.29003"
+ style="font-size:10px"
+ id="path3281" />
+ <path
+ d="m 373.37613,376.48691 c -0.10092,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15788,0.0179 0.24903,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3283" />
+ <path
+ d="m 374.32828,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3285" />
+ <path
+ d="m 381.35953,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.0091,0.2002 1.31836,0.60058 0.30923,0.39714 0.46385,0.96355 0.46386,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10351,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40528,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c 0,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.472,-0.38086 -0.85937,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27019,0.30925 -0.40528,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62662,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3287" />
+ <path
+ d="m 389.33316,378.36679 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10416,0.57292 0.3125,0.76172 0.21159,0.18555 0.49804,0.27832 0.85937,0.27832 0.49805,0 0.89681,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.4541,-0.82519 0.45411,-1.41113 l 0,-0.2002 -0.89356,0 m 1.79199,-0.37109 0,3.12011 -0.89843,0 0,-0.83007 c -0.20509,0.33203 -0.46062,0.5778 -0.76661,0.7373 -0.30599,0.15625 -0.68034,0.23438 -1.12304,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -10e-6,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27019,-0.22786 -0.65105,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91309,0.1123 -0.29622,0.0749 -0.58105,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32878,-0.12695 0.64779,-0.22135 0.95703,-0.28321 0.30925,-0.0651 0.61035,-0.0977 0.90332,-0.0977 0.79102,0 1.38184,0.20508 1.77247,0.61523 0.39062,0.41016 0.58593,1.03191 0.58593,1.86524"
+ style="font-size:10px"
+ id="path3289" />
+ <path
+ d="m 396.14957,376.48691 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12696 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3291" />
+ <path
+ d="m 399.37711,381.62363 c -0.25391,0.65104 -0.50131,1.07584 -0.74219,1.27441 -0.24089,0.19857 -0.56315,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75195 0.52734,0 c 0.2474,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28809,-0.39388 0.45411,-0.83008 l 0.16113,-0.41016 -2.21192,-5.38086 0.95215,0 1.70899,4.27735 1.70898,-4.27735 0.95215,0 -2.40234,5.97657"
+ style="font-size:10px"
+ id="path3293" />
+ <path
+ d="m 410.46109,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68034,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30924,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c -1e-5,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18556,-0.2539 -0.46876,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73405,0.10092 1.01074,0.30273 0.27995,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3295" />
+ <path
+ d="m 418.06851,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3297" />
+ <path
+ d="m 426.60855,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3299" />
+ <path
+ d="m 428.41031,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3301" />
+ <path
+ d="m 432.07242,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26041 -0.39551,-0.73242 -0.39551,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3303" />
+ <path
+ d="m 437.22867,376.27695 c -0.48178,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3305" />
+ <path
+ d="m 444.39175,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30274,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3307" />
+ <path
+ d="m 449.39664,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41667,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20833,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84961,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40527,0.89193 -0.40527,1.55273 0,0.66081 0.13509,1.18002 0.40527,1.55762 0.27344,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
+ style="font-size:10px"
+ id="path3309" />
+ <path
+ d="m 456.99429,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -10e-6,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3311" />
+ <path
+ d="m 464.47476,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -10e-6,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48015,0.22949 0.96192,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27017,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.13021 -0.52247,-0.25553 -1.07911,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
+ style="font-size:10px"
+ id="path3313" />
+ <path
+ d="m 466.20328,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3315" />
+ <path
+ d="m 469.86539,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3317" />
+ <path
+ d="m 472.9025,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3319" />
+ <path
+ d="m 477.79507,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66244,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3321" />
+ <path
+ d="m 486.33511,377.81503 0,3.30078 -0.89843,0 0,-3.27148 c -1e-5,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
+ style="font-size:10px"
+ id="path3323" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3773">
+ <path
+ d="m 242.85294,625.22699 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.375 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.15821 -0.64453,10e-6 -1.14258,0.12501 -1.49414,0.375 -0.34765,0.25001 -0.52148,0.60548 -0.52148,1.06641 0,0.38673 0.11523,0.67969 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16797 1.53319,0.46485 1.95117,0.89063 0.42187,0.42187 0.6328,0.98828 0.63281,1.69921 -1e-5,0.84766 -0.28516,1.49024 -0.85547,1.92774 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14063 -0.46485,-0.0937 -0.94727,-0.23242 -1.44727,-0.41601 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60937 0.46094,0.13672 0.91406,0.20508 1.35938,0.20508 0.67577,0 1.19726,-0.13281 1.56445,-0.39844 0.36718,-0.26562 0.55078,-0.64453 0.55078,-1.13671 0,-0.42969 -0.13282,-0.76563 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82618 -0.39453,-0.37499 -0.59179,-0.89647 -0.59179,-1.56445 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29882,-0.66796 2.25586,-0.66797 0.41015,10e-6 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
+ style=""
+ id="path3355" />
+ <path
+ d="m 250.79239,630.13715 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96093,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38673,0.16407 -0.78321,0.28907 -1.18946,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04687,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91406,-1.43359 -0.91406,-2.47266 0,-1.07421 0.28906,-1.92578 0.86719,-2.55469 0.58202,-0.6328 1.36523,-0.94921 2.3496,-0.94922 0.88281,10e-6 1.58008,0.28517 2.0918,0.85547 0.51562,0.56641 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49804,-1.41211 -0.32032,-0.35156 -0.7461,-0.52734 -1.27735,-0.52734 -0.60156,0 -1.08398,0.16992 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3357" />
+ <path
+ d="m 257.28458,627.37738 0,1.00781 c -0.3047,-0.16796 -0.61134,-0.29296 -0.91993,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.6289,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58008,1.86328 0,0.80078 0.19336,1.42383 0.58008,1.86914 0.38671,0.4414 0.92968,0.66211 1.6289,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91993,-0.38086 l 0,0.99609 c -0.30079,0.14063 -0.61329,0.2461 -0.9375,0.31641 -0.32032,0.0703 -0.66212,0.10547 -1.02539,0.10547 -0.98829,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58204,-0.62109 -0.87305,-1.45898 -0.87305,-2.51367 0,-1.07031 0.29297,-1.91211 0.87891,-2.52539 0.58984,-0.61328 1.39648,-0.91992 2.41992,-0.91993 0.33203,10e-6 0.65624,0.0352 0.97265,0.10547 0.31641,0.0664 0.62305,0.16798 0.91993,0.30469"
+ style=""
+ id="path3359" />
+ <path
+ d="m 261.71426,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3361" />
+ <path
+ d="m 271.96231,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
+ style=""
+ id="path3363" />
+ <path
+ d="m 278.44278,628.12152 0,-3.55078 1.07812,0 0,9.11719 -1.07812,0 0,-0.98438 c -0.22657,0.39063 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28125 -1.24219,0.28125 -0.79297,0 -1.43945,-0.31641 -1.93945,-0.94922 -0.49609,-0.63281 -0.74414,-1.46484 -0.74414,-2.49609 0,-1.03125 0.24805,-1.86328 0.74414,-2.4961 0.5,-0.6328 1.14648,-0.94921 1.93945,-0.94922 0.48438,10e-6 0.89844,0.0957 1.24219,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29102 c 0,0.79297 0.16211,1.41601 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.5703,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45313 0.49218,-1.07617 0.49219,-1.86914 -1e-5,-0.79297 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77735,-0.67969 -1.34765,-0.67969 -0.57032,0 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07031 -0.48633,1.86328"
+ style=""
+ id="path3365" />
+ <path
+ d="m 284.72403,630.3891 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -1e-5,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42578 0.54492,-0.99023 0.54493,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.9961 c -0.2461,0.39844 -0.55274,0.69336 -0.91993,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11719 0.94922,10e-6 1.6582,0.2461 2.12696,0.73829 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
+ style=""
+ id="path3367" />
+ <path
+ d="m 292.90372,628.13324 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36327,-0.1953 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3369" />
+ <path
+ d="m 296.77676,634.2973 c -0.30469,0.78125 -0.60156,1.29102 -0.89062,1.5293 -0.28907,0.23828 -0.67578,0.35742 -1.16016,0.35742 l -0.86133,0 0,-0.90234 0.63282,0 c 0.29687,0 0.52734,-0.0703 0.6914,-0.21094 0.16406,-0.14063 0.3457,-0.47266 0.54493,-0.99609 l 0.19335,-0.49219 -2.65429,-6.45703 1.14258,0 2.05078,5.13281 2.05078,-5.13281 1.14258,0 -2.88282,7.17187"
+ style=""
+ id="path3371" />
+ <path
+ d="m 305.01505,624.93988 1.76367,0 2.23242,5.95313 2.24414,-5.95313 1.76367,0 0,8.74805 -1.1543,0 0,-7.68164 -2.25585,6 -1.18946,0 -2.25586,-6 0,7.68164 -1.14843,0 0,-8.74805"
+ style=""
+ id="path3373" />
+ <path
+ d="m 317.87051,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3375" />
+ <path
+ d="m 328.11856,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
+ style=""
+ id="path3377" />
+ <path
+ d="m 330.28067,627.12543 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55469 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3379" />
+ <path
+ d="m 334.6752,625.26215 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22851 0.89648,0.22851 l 1.10742,0 0,0.90235 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72265,-0.46289 -0.31641,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
+ style=""
+ id="path3381" />
+ <path
+ d="m 340.8627,627.88129 c -0.57813,0 -1.03516,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33593,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.02929,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33595,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67382,0.3047 2.20899,0.91407 0.53515,0.60938 0.80272,1.45313 0.80273,2.53125 -10e-6,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53517,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79688,-2.53125 0,-1.07812 0.26563,-1.92187 0.79688,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3383" />
+ <path
+ d="m 349.4584,628.13324 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3385" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3777">
+ <path
+ d="m 575.27002,547.52673 0,3.28711 1.48828,0 c 0.55078,10e-6 0.97656,-0.14257 1.27734,-0.42773 0.30078,-0.28515 0.45117,-0.6914 0.45118,-1.21875 -10e-6,-0.52343 -0.1504,-0.92773 -0.45118,-1.21289 -0.30078,-0.28515 -0.72656,-0.42773 -1.27734,-0.42774 l -1.48828,0 m -1.18359,-0.97265 2.67187,0 c 0.98046,10e-6 1.7207,0.22266 2.2207,0.66797 0.5039,0.44141 0.75586,1.08985 0.75586,1.94531 0,0.86328 -0.25196,1.51563 -0.75586,1.95703 -0.5,0.44141 -1.24024,0.66211 -2.2207,0.66211 l -1.48828,0 0,3.51562 -1.18359,0 0,-8.74804"
+ style=""
+ id="path3326" />
+ <path
+ d="m 584.87354,549.74744 c -0.1211,-0.0703 -0.25392,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36327,-0.19531 0.80468,-0.29296 1.32421,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3328" />
+ <path
+ d="m 586.01611,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3330" />
+ <path
+ d="m 594.45361,549.99939 c 0.26953,-0.48437 0.59179,-0.84179 0.9668,-1.07227 0.37499,-0.23046 0.8164,-0.34569 1.32422,-0.3457 0.68358,10e-6 1.21093,0.24024 1.58203,0.7207 0.37108,0.47657 0.55663,1.15626 0.55664,2.03907 l 0,3.96093 -1.08398,0 0,-3.92578 c -10e-6,-0.6289 -0.11134,-1.0957 -0.33399,-1.40039 -0.22266,-0.30468 -0.56251,-0.45702 -1.01953,-0.45703 -0.5586,10e-6 -1.00001,0.18555 -1.32422,0.55664 -0.32422,0.3711 -0.48633,0.87696 -0.48633,1.51758 l 0,3.70898 -1.08398,0 0,-3.92578 c -1e-5,-0.63281 -0.11133,-1.0996 -0.33398,-1.40039 -0.22267,-0.30468 -0.56642,-0.45702 -1.03125,-0.45703 -0.55079,10e-6 -0.98829,0.18751 -1.3125,0.5625 -0.32423,0.3711 -0.48634,0.87501 -0.48633,1.51172 l 0,3.70898 -1.08399,0 0,-6.5625 1.08399,0 0,1.01954 c 0.24609,-0.40234 0.54101,-0.69922 0.88476,-0.89063 0.34375,-0.1914 0.75195,-0.2871 1.22461,-0.28711 0.47656,10e-6 0.88086,0.1211 1.21289,0.36328 0.33593,0.2422 0.58398,0.59376 0.74414,1.05469"
+ style=""
+ id="path3332" />
+ <path
+ d="m 604.02197,552.0033 c -0.87109,0 -1.47461,0.0996 -1.81054,0.29882 -0.33594,0.19923 -0.50391,0.53907 -0.50391,1.01954 0,0.38281 0.125,0.6875 0.375,0.91406 0.2539,0.22265 0.59765,0.33398 1.03125,0.33398 0.59765,0 1.07617,-0.21093 1.43555,-0.63281 0.36327,-0.42578 0.54491,-0.99023 0.54492,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44532 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39844 -0.55274,0.69336 -0.91992,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34766,0.28125 -0.67188,0 -1.20703,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.2461,-1.29492 0.73829,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21484,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32422,-0.27343 -0.78125,-0.41015 -1.37109,-0.41016 -0.37501,10e-6 -0.74024,0.0449 -1.09571,0.13477 -0.35547,0.0898 -0.69726,0.22461 -1.02539,0.4043 l 0,-0.9961 c 0.39453,-0.15234 0.77735,-0.26562 1.14844,-0.33984 0.37109,-0.0781 0.73242,-0.11718 1.08399,-0.11719 0.94921,10e-6 1.65819,0.2461 2.12695,0.73828 0.46874,0.4922 0.70312,1.23829 0.70312,2.23828"
+ style=""
+ id="path3334" />
+ <path
+ d="m 612.20166,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52149,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3336" />
+ <path
+ d="m 616.07471,555.9115 c -0.30469,0.78125 -0.60157,1.29101 -0.89063,1.5293 -0.28906,0.23827 -0.67578,0.35742 -1.16015,0.35742 l -0.86133,0 0,-0.90235 0.63281,0 c 0.29687,0 0.52734,-0.0703 0.69141,-0.21093 0.16406,-0.14063 0.3457,-0.47266 0.54492,-0.9961 l 0.19336,-0.49218 -2.6543,-6.45704 1.14258,0 2.05078,5.13282 2.05078,-5.13282 1.14258,0 -2.88281,7.17188"
+ style=""
+ id="path3338" />
+ <path
+ d="m 624.31299,546.55408 1.76367,0 2.23242,5.95312 2.24414,-5.95312 1.76367,0 0,8.74804 -1.15429,0 0,-7.68164 -2.25586,6 -1.18945,0 -2.25586,-6 0,7.68164 -1.14844,0 0,-8.74804"
+ style=""
+ id="path3340" />
+ <path
+ d="m 637.16846,549.49548 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85743 0.33594,0.44921 0.79492,0.67382 1.37696,0.67382 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -10e-6,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,10e-6 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20898,0.91407 -0.94141,0 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
+ style=""
+ id="path3342" />
+ <path
+ d="m 647.4165,551.34119 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,10e-6 -1.04101,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.25781,-0.39453 0.56055,-0.68945 0.90821,-0.88477 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,10e-6 1.32421,0.23438 1.71094,0.70313 0.38671,0.46485 0.58007,1.15039 0.58007,2.05664"
+ style=""
+ id="path3344" />
+ <path
+ d="m 649.57861,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3346" />
+ <path
+ d="m 653.97314,546.87634 0,1.86328 2.22071,0 0,0.83789 -2.22071,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14844,0.15235 0.44726,0.22852 0.89649,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83204,0 -1.40626,-0.15429 -1.72266,-0.46289 -0.31641,-0.3125 -0.47461,-0.8789 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
+ style=""
+ id="path3348" />
+ <path
+ d="m 660.16064,549.49548 c -0.57812,10e-6 -1.03515,0.22657 -1.37109,0.67969 -0.33594,0.44922 -0.50391,1.06641 -0.50391,1.85156 0,0.78516 0.16602,1.4043 0.49805,1.85743 0.33594,0.44921 0.79492,0.67382 1.37695,0.67382 0.57422,0 1.0293,-0.22656 1.36524,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36524,-0.68555 m 0,-0.91406 c 0.9375,10e-6 1.67383,0.30469 2.20899,0.91406 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20899,0.91407 -0.9414,0 -1.67968,-0.30469 -2.21484,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21484,-0.91406"
+ style=""
+ id="path3350" />
+ <path
+ d="m 668.75635,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3352" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3781">
+ <path
+ d="m 612.64136,657.77118 -3.33985,-8.74805 1.23633,0 2.77149,7.36524 2.77734,-7.36524 1.23047,0 -3.33399,8.74805 -1.34179,0"
+ style=""
+ id="path3401" />
+ <path
+ d="m 618.28394,651.20868 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55469 1.07812,0 0,1.36524 -1.07812,0 0,-1.36524"
+ style=""
+ id="path3403" />
+ <path
+ d="m 625.41479,652.21649 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29296 0.0742,0 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3405" />
+ <path
+ d="m 627.62378,649.3454 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22852 0.89648,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72266,-0.46289 -0.3164,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79101,0 0,-0.83789 0.79101,0 0,-1.86328 1.08399,0"
+ style=""
+ id="path3407" />
+ <path
+ d="m 631.15698,655.18134 0,-3.97266 1.07813,0 0,3.93164 c 0,0.6211 0.12109,1.08789 0.36328,1.40039 0.24218,0.3086 0.60546,0.46289 1.08984,0.46289 0.58203,0 1.04101,-0.18554 1.37696,-0.55664 0.33983,-0.37109 0.50976,-0.87695 0.50976,-1.51758 l 0,-3.7207 1.07813,0 0,6.5625 -1.07813,0 0,-1.00781 c -0.26172,0.39843 -0.56641,0.69531 -0.91406,0.89062 -0.34376,0.19141 -0.74415,0.28711 -1.20117,0.28711 -0.75391,0 -1.32618,-0.23437 -1.7168,-0.70312 -0.39063,-0.46875 -0.58594,-1.1543 -0.58594,-2.05664 m 2.71289,-4.13086 0,0"
+ style=""
+ id="path3409" />
+ <path
+ d="m 641.86792,654.47235 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -10e-6,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42577 0.54492,-0.99023 0.54493,-1.69335 l 0,-0.24024 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39843 -0.55274,0.69336 -0.91993,0.88476 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.3789 -0.5918,-0.88476 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.37499 1.23438,-0.56249 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11718 0.94922,0 1.6582,0.2461 2.12696,0.73828 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
+ style=""
+ id="path3411" />
+ <path
+ d="m 646.24487,648.65399 1.07813,0 0,9.11719 -1.07813,0 0,-9.11719"
+ style=""
+ id="path3413" />
+ <path
+ d="m 658.68433,649.31024 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.37499 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.1582 -0.64453,0 -1.14258,0.125 -1.49414,0.375 -0.34765,0.25 -0.52148,0.60547 -0.52148,1.0664 0,0.38673 0.11523,0.6797 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16798 1.53319,0.46485 1.95117,0.89063 0.42187,0.42188 0.6328,0.98828 0.63281,1.69922 -10e-6,0.84765 -0.28516,1.49023 -0.85547,1.92773 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14062 -0.46485,-0.0937 -0.94727,-0.23243 -1.44727,-0.41602 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60938 0.46094,0.13672 0.91406,0.20507 1.35938,0.20507 0.67577,0 1.19726,-0.13281 1.56445,-0.39843 0.36718,-0.26563 0.55078,-0.64453 0.55078,-1.13672 0,-0.42969 -0.13282,-0.76562 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82617 -0.39453,-0.375 -0.59179,-0.89648 -0.59179,-1.56446 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29883,-0.66796 2.25586,-0.66797 0.41015,1e-5 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
+ style=""
+ id="path3415" />
+ <path
+ d="m 665.73315,651.46063 0,1.00781 c -0.30469,-0.16796 -0.61133,-0.29296 -0.91992,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.62891,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58007,1.86328 -10e-6,0.80078 0.19335,1.42383 0.58007,1.86914 0.38672,0.44141 0.92969,0.66211 1.62891,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91992,-0.38086 l 0,0.9961 c -0.30078,0.14062 -0.61328,0.24609 -0.9375,0.3164 -0.32031,0.0703 -0.66211,0.10547 -1.02539,0.10547 -0.98828,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58203,-0.62109 -0.87304,-1.45898 -0.87304,-2.51367 0,-1.07031 0.29297,-1.91211 0.8789,-2.52539 0.58985,-0.61328 1.39649,-0.91992 2.41993,-0.91992 0.33202,0 0.65624,0.0352 0.97265,0.10546 0.3164,0.0664 0.62304,0.16798 0.91992,0.30469"
+ style=""
+ id="path3417" />
+ <path
+ d="m 671.42261,652.21649 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36328,-0.1953 0.80468,-0.29296 1.32422,-0.29296 0.0742,0 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3419" />
+ <path
+ d="m 677.92065,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96094,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40626,0.0859 -0.81837,0.12891 -1.23633,0.12891 -1.04688,0 -1.87696,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91407,-2.47266 0,-1.07421 0.28906,-1.92577 0.86719,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58007,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77343,2.31446 m -1.07812,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.7461,-0.52734 -1.27734,-0.52734 -0.60157,0 -1.08399,0.16993 -1.44727,0.50976 -0.35937,0.33985 -0.56641,0.81837 -0.62109,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3421" />
+ <path
+ d="m 685.30347,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26952,1.3086 0.66796,1.69922 0.40235,0.38672 0.96094,0.58008 1.67579,0.58008 0.41405,0 0.81444,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16015,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04688,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91406,-2.47266 -10e-6,-1.07421 0.28906,-1.92577 0.86718,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58008,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.74609,-0.52734 -1.27734,-0.52734 -0.60156,0 -1.08399,0.16993 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3423" />
+ <path
+ d="m 692.52808,653.81024 0,3.96094 -1.07813,0 0,-3.92578 c 0,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60547,-0.46289 -1.08984,-0.46289 -0.58204,0 -1.04102,0.18555 -1.37696,0.55664 -0.33594,0.3711 -0.50391,0.87695 -0.5039,1.51757 l 0,3.70899 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.25781,-0.39452 0.56054,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.21289,-0.29296 0.7539,0 1.32421,0.23438 1.71094,0.70312 0.38671,0.46485 0.58007,1.1504 0.58008,2.05664"
+ style=""
+ id="path3425" />
+ </g>
+ <rect
+ style="fill:#b8b8b8;fill-opacity:1;stroke:#b8b8b8;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="rect5577"
+ width="173.25098"
+ height="141.43118"
+ x="157.75581"
+ y="436.97159" />
+ <rect
+ style="fill:#ededed;fill-opacity:1;stroke:#ededed;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3789"
+ width="168.99611"
+ height="136.87178"
+ x="159.87543"
+ y="439.39697"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3791">
+ <path
+ d="m 274.28683,558.98682 1.19532,0 1.83984,7.39453 1.83399,-7.39453 1.33007,0 1.83985,7.39453 1.83398,-7.39453 1.20117,0 -2.19726,8.74804 -1.48828,0 -1.84571,-7.59375 -1.86328,7.59375 -1.48828,0 -2.19141,-8.74804"
+ style=""
+ id="path3388" />
+ <path
+ d="m 286.62082,561.17236 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55468 1.07812,0 0,1.36523 -1.07812,0 0,-1.36523"
+ style=""
+ id="path3390" />
+ <path
+ d="m 295.40402,563.77393 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.2422,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,1e-5 -1.04102,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39452 0.56055,-0.68944 0.90821,-0.88476 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,1e-5 1.32421,0.23438 1.71093,0.70313 0.38672,0.46484 0.58008,1.15039 0.58008,2.05664"
+ style=""
+ id="path3392" />
+ <path
+ d="m 301.88449,562.16846 0,-3.55078 1.07813,0 0,9.11718 -1.07813,0 0,-0.98437 c -0.22657,0.39062 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28124 -1.24218,0.28125 -0.79298,-1e-5 -1.43946,-0.31641 -1.93946,-0.94922 -0.49609,-0.63281 -0.74414,-1.46485 -0.74414,-2.4961 0,-1.03124 0.24805,-1.86327 0.74414,-2.49609 0.5,-0.63281 1.14648,-0.94921 1.93946,-0.94922 0.48437,1e-5 0.89843,0.0957 1.24218,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29101 c 0,0.79297 0.16211,1.41602 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.57031,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45312 0.49219,-1.07617 0.49219,-1.86914 0,-0.79296 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77734,-0.67968 -1.34765,-0.67969 -0.57032,10e-6 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07032 -0.48633,1.86328"
+ style=""
+ id="path3394" />
+ <path
+ d="m 307.72629,561.92822 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85742 0.33594,0.44922 0.79492,0.67383 1.37696,0.67383 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,1e-5 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91406 -2.20898,0.91407 -0.94141,-1e-5 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
+ style=""
+ id="path3396" />
+ <path
+ d="m 311.8923,561.17236 1.07813,0 1.34765,5.1211 1.3418,-5.1211 1.27149,0 1.34765,5.1211 1.3418,-5.1211 1.07812,0 -1.71679,6.5625 -1.27149,0 -1.41211,-5.3789 -1.41797,5.3789 -1.27148,0 -1.7168,-6.5625"
+ style=""
+ id="path3398" />
+ </g>
+ <rect
+ y="439.39581"
+ x="159.87428"
+ height="8.8251209"
+ width="168.99841"
+ id="rect3795"
+ style="fill:#7b7bff;fill-opacity:1;stroke:#7b7bff;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ id="path3797"
+ sodipodi:cx="352.54324"
+ sodipodi:cy="373.03461"
+ sodipodi:rx="2.5253813"
+ sodipodi:ry="2.5253813"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ transform="matrix(0.66107369,0,0,0.66107369,123.32145,119.41326)"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ transform="matrix(0.66107369,0,0,0.66107369,-194.73594,119.44704)"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ sodipodi:ry="2.5253813"
+ sodipodi:rx="2.5253813"
+ sodipodi:cy="373.03461"
+ sodipodi:cx="352.54324"
+ id="path3799"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ id="path3801"
+ sodipodi:cx="352.54324"
+ sodipodi:cy="373.03461"
+ sodipodi:rx="2.5253813"
+ sodipodi:ry="2.5253813"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ transform="matrix(0.66107369,0,0,0.66107369,-73.218648,201.61091)"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ x="21.213203"
+ y="340.20465"
+ id="text3803"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113"><tspan
+ sodipodi:role="line"
+ id="tspan3805"
+ x="21.213203"
+ y="340.20465"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif"> </tspan></text>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3807">
+ <path
+ d="m 71.179893,455.55557 0.996094,0 1.533203,6.16211 1.528321,-6.16211 1.108398,0 1.533203,6.16211 1.528321,-6.16211 1.000976,0 -1.831055,7.29004 -1.240234,0 -1.538086,-6.32812 -1.552734,6.32812 -1.240235,0 -1.826172,-7.29004"
+ style="font-size:10px"
+ id="path3164" />
+ <path
+ d="m 81.458214,457.37686 0.898437,0 0,5.46875 -0.898437,0 0,-5.46875 m 0,-2.1289 0.898437,0 0,1.13769 -0.898437,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3166" />
+ <path
+ d="m 88.77755,459.54483 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51758 -0.100916,-0.90495 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15462 -1.147461,0.46386 -0.27995,0.30925 -0.419924,0.7308 -0.419922,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19531 1.425781,0.58593 0.322261,0.38738 0.483393,0.95867 0.483399,1.71387"
+ style="font-size:10px"
+ id="path3168" />
+ <path
+ d="m 94.17794,458.20694 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56803 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23437 -1.035156,0.23437 -0.66081,0 -1.199546,-0.26367 -1.616211,-0.79101 -0.413412,-0.52735 -0.620118,-1.2207 -0.620117,-2.08008 -10e-7,-0.85937 0.206705,-1.55273 0.620117,-2.08008 0.416665,-0.52734 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0797 1.035156,0.23925 0.289709,0.15626 0.528967,0.39714 0.717773,0.72266 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18001 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.37761 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.56641 -1.123047,-0.56641 -0.475263,0 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
+ style="font-size:10px"
+ id="path3170" />
+ <path
+ d="m 99.046104,458.00674 c -0.481773,1e-5 -0.862632,0.18881 -1.142578,0.56641 -0.279949,0.37435 -0.419923,0.88868 -0.419922,1.54297 -10e-7,0.6543 0.138345,1.17025 0.415039,1.54785 0.279946,0.37435 0.662433,0.56153 1.147461,0.56152 0.478513,1e-5 0.857744,-0.1888 1.137696,-0.5664 0.27994,-0.3776 0.41992,-0.89193 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.279952,-0.38085 -0.659183,-0.57128 -1.137696,-0.57129 m 0,-0.76171 c 0.781247,0 1.394856,0.25391 1.840816,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44596,0.50782 -1.059569,0.76172 -1.840816,0.76172 -0.784507,0 -1.399741,-0.2539 -1.845703,-0.76172 -0.442709,-0.51106 -0.664063,-1.21419 -0.664062,-2.10937 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10938 0.445962,-0.5078 1.061196,-0.76171 1.845703,-0.76171"
+ style="font-size:10px"
+ id="path3172" />
+ <path
+ d="m 102.51778,457.37686 0.89844,0 1.12305,4.26758 1.11816,-4.26758 1.05957,0 1.12305,4.26758 1.11816,-4.26758 0.89844,0 -1.43066,5.46875 -1.05957,0 -1.17676,-4.48242 -1.18164,4.48242 -1.05957,0 -1.43067,-5.46875"
+ style="font-size:10px"
+ id="path3174" />
+ <path
+ d="m 115.27657,462.0253 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32552 0.42643,-0.5664 0.71289,-0.72266 0.28971,-0.1595 0.63477,-0.23925 1.03516,-0.23925 0.66406,0 1.20279,0.26367 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55273 -0.625,2.08008 -0.41342,0.52734 -0.95215,0.79101 -1.61621,0.79101 -0.40039,0 -0.74545,-0.0781 -1.03516,-0.23437 -0.28646,-0.15951 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c 0,-0.6608 -0.13672,-1.17838 -0.41015,-1.55273 -0.27019,-0.3776 -0.64291,-0.56641 -1.11817,-0.56641 -0.47526,0 -0.84961,0.18881 -1.12304,0.56641 -0.27019,0.37435 -0.40528,0.89193 -0.40528,1.55273 0,0.66081 0.13509,1.18001 0.40528,1.55762 0.27343,0.37435 0.64778,0.56152 1.12304,0.56152 0.47526,0 0.84798,-0.18717 1.11817,-0.56152 0.27343,-0.37761 0.41015,-0.89681 0.41015,-1.55762"
+ style="font-size:10px"
+ id="path3176" />
+ <path
+ d="m 122.87423,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.13769,-0.5664 0.27995,-0.3776 0.41992,-0.89193 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53809 -0.27995,-0.38085 -0.65918,-0.57128 -1.13769,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66407,-2.10937 0,-0.89843 0.22136,-1.60156 0.66407,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
+ style="font-size:10px"
+ id="path3178" />
+ <path
+ d="m 130.3547,457.53799 0,0.84961 c -0.25391,-0.1302 -0.51758,-0.22786 -0.79102,-0.29296 -0.27344,-0.0651 -0.55664,-0.0977 -0.84961,-0.0977 -0.44596,0 -0.78125,0.0684 -1.00586,0.20508 -0.22135,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63802,0.13672 1.09049,0.33041 1.35742,0.58105 0.27018,0.2474 0.40527,0.59408 0.40528,1.04004 -1e-5,0.50782 -0.20183,0.90983 -0.60547,1.20606 -0.4004,0.29622 -0.95215,0.44433 -1.65528,0.44433 -0.29297,0 -0.59896,-0.0293 -0.91796,-0.0879 -0.31576,-0.0553 -0.64942,-0.13997 -1.00098,-0.2539 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98144,0.39063 0.32227,0.0846 0.64128,0.12695 0.95704,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14649 0.34179,-0.35157 0.3418,-0.61524 -1e-5,-0.24414 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11719 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24414 -0.3711,-0.5778 -0.3711,-1.00098 0,-0.51431 0.18229,-0.91145 0.54688,-1.1914 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12207 0.81055,0.21972"
+ style="font-size:10px"
+ id="path3180" />
+ <path
+ d="m 132.08321,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3182" />
+ <path
+ d="m 135.74532,455.82413 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3184" />
+ <path
+ d="m 138.78243,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3186" />
+ <path
+ d="m 143.67501,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.1377,-0.5664 0.27994,-0.3776 0.41991,-0.89193 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.27996,-0.38085 -0.65919,-0.57128 -1.1377,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66406,-2.10937 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
+ style="font-size:10px"
+ id="path3188" />
+ <path
+ d="m 152.21505,459.54483 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51758 -0.10091,-0.90495 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15462 -1.14746,0.46386 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19531 1.42578,0.58593 0.32226,0.38738 0.48339,0.95867 0.4834,1.71387"
+ style="font-size:10px"
+ id="path3190" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3817">
+ <path
+ d="m 49.798271,374.06503 0,0.96192 c -0.374354,-0.17903 -0.727544,-0.3125 -1.05957,-0.40039 -0.332035,-0.0879 -0.652673,-0.13183 -0.961914,-0.13184 -0.537112,1e-5 -0.952151,0.10417 -1.245117,0.3125 -0.289716,0.20834 -0.434572,0.50456 -0.434571,0.88867 -10e-7,0.32227 0.09603,0.56641 0.288086,0.73242 0.195311,0.16277 0.563149,0.2946 1.103516,0.39551 l 0.595703,0.12207 c 0.735673,0.13998 1.277664,0.38738 1.625977,0.74219 0.351556,0.35157 0.527338,0.82357 0.527343,1.41602 -5e-6,0.70638 -0.237635,1.24186 -0.71289,1.60644 -0.47201,0.36458 -1.165369,0.54688 -2.080078,0.54688 -0.345055,0 -0.712893,-0.0391 -1.103516,-0.11719 -0.387371,-0.0781 -0.789389,-0.19369 -1.206055,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.792642,0.39388 1.176758,0.50782 0.384112,0.11393 0.761716,0.1709 1.132813,0.17089 0.563147,10e-6 0.997717,-0.11067 1.30371,-0.33203 0.305985,-0.22135 0.45898,-0.5371 0.458985,-0.94726 -5e-6,-0.35807 -0.110682,-0.63802 -0.332031,-0.83985 -0.218104,-0.20182 -0.577804,-0.35318 -1.079102,-0.4541 l -0.600586,-0.11719 c -0.735679,-0.14648 -1.267905,-0.37597 -1.59668,-0.68847 -0.328776,-0.3125 -0.493164,-0.74707 -0.493164,-1.30371 0,-0.64453 0.226236,-1.15234 0.678711,-1.52344 0.455728,-0.37109 1.082355,-0.55663 1.879883,-0.55664 0.341793,10e-6 0.6901,0.0309 1.044922,0.0928 0.354813,0.0619 0.717768,0.15463 1.088867,0.27832"
+ style="font-size:10px"
+ id="path3193" />
+ <path
+ d="m 56.414482,378.15683 0,0.43945 -4.130859,0 c 0.03906,0.61849 0.224607,1.0905 0.55664,1.41602 0.335284,0.32226 0.800779,0.4834 1.396485,0.4834 0.345048,0 0.678707,-0.0423 1.000976,-0.12696 0.325516,-0.0846 0.647782,-0.21158 0.966797,-0.38086 l 0,0.84961 c -0.322271,0.13672 -0.652674,0.24089 -0.991211,0.3125 -0.338546,0.0716 -0.68197,0.10743 -1.030273,0.10743 -0.872399,0 -1.56413,-0.25391 -2.075196,-0.76172 -0.507813,-0.50781 -0.761719,-1.19466 -0.761718,-2.06055 -10e-7,-0.89518 0.240884,-1.60481 0.722656,-2.12891 0.485024,-0.52733 1.137693,-0.79101 1.958008,-0.79101 0.735673,0 1.316727,0.23763 1.743164,0.71289 0.429682,0.47201 0.644525,1.11491 0.644531,1.92871 m -0.898437,-0.26367 c -0.0065,-0.49153 -0.144862,-0.88379 -0.415039,-1.17676 -0.266932,-0.29296 -0.621749,-0.43945 -1.064454,-0.43945 -0.501304,0 -0.903322,0.1416 -1.206054,0.4248 -0.299481,0.28321 -0.472007,0.68197 -0.517578,1.19629 l 3.203125,-0.005"
+ style="font-size:10px"
+ id="path3195" />
+ <path
+ d="m 61.824638,375.85703 0,0.83984 c -0.253911,-0.13997 -0.509444,-0.24414 -0.766601,-0.3125 -0.25391,-0.0716 -0.511072,-0.10742 -0.771485,-0.10742 -0.582685,0 -1.035158,0.18555 -1.357421,0.55664 -0.322268,0.36784 -0.4834,0.88542 -0.483399,1.55273 -10e-7,0.66732 0.161131,1.18653 0.483399,1.55762 0.322263,0.36784 0.774736,0.55176 1.357421,0.55176 0.260413,0 0.517575,-0.0342 0.771485,-0.10254 0.257157,-0.0716 0.51269,-0.17741 0.766601,-0.31738 l 0,0.83007 c -0.250655,0.11719 -0.511072,0.20508 -0.78125,0.26368 -0.266931,0.0586 -0.551761,0.0879 -0.854492,0.0879 -0.82357,0 -1.477866,-0.25879 -1.96289,-0.77637 -0.485027,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.732422,-2.10449 0.491535,-0.51106 1.163735,-0.7666 2.016602,-0.7666 0.276689,0 0.546871,0.0293 0.810547,0.0879 0.263667,0.0553 0.519201,0.13998 0.766601,0.25391"
+ style="font-size:10px"
+ id="path3197" />
+ <path
+ d="m 65.516045,376.27695 c -0.481774,0 -0.862633,0.1888 -1.142579,0.5664 -0.279949,0.37436 -0.419923,0.88868 -0.419921,1.54297 -2e-6,0.6543 0.138344,1.17025 0.415039,1.54785 0.279945,0.37435 0.662432,0.56153 1.147461,0.56153 0.478512,0 0.857743,-0.1888 1.137695,-0.56641 0.279943,-0.3776 0.419917,-0.89192 0.419922,-1.54297 -5e-6,-0.64778 -0.139979,-1.16048 -0.419922,-1.53808 -0.279952,-0.38086 -0.659183,-0.57129 -1.137695,-0.57129 m 0,-0.76172 c 0.781246,0 1.394852,0.25391 1.84082,0.76172 0.445958,0.50781 0.66894,1.21094 0.668945,2.10937 -5e-6,0.89519 -0.222987,1.59831 -0.668945,2.10938 -0.445968,0.50781 -1.059574,0.76172 -1.84082,0.76172 -0.784508,0 -1.399742,-0.25391 -1.845704,-0.76172 -0.442709,-0.51107 -0.664063,-1.21419 -0.664062,-2.10938 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10937 0.445962,-0.50781 1.061196,-0.76172 1.845704,-0.76172"
+ style="font-size:10px"
+ id="path3199" />
+ <path
+ d="m 74.056084,377.81503 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51757 -0.100916,-0.90494 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15463 -1.147461,0.46387 -0.27995,0.30924 -0.419924,0.73079 -0.419922,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19532 1.425781,0.58594 0.322261,0.38737 0.483393,0.95866 0.483399,1.71386"
+ style="font-size:10px"
+ id="path3201" />
+ <path
+ d="m 79.456474,376.47714 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56804 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23438 -1.035156,0.23438 -0.66081,0 -1.199546,-0.26368 -1.616211,-0.79102 -0.413413,-0.52734 -0.620118,-1.2207 -0.620118,-2.08008 0,-0.85937 0.206705,-1.55273 0.620118,-2.08008 0.416665,-0.52733 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0798 1.035156,0.23926 0.289709,0.15625 0.528967,0.39714 0.717773,0.72265 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18002 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.3776 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.5664 -1.123047,-0.56641 -0.475263,1e-5 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
+ style="font-size:10px"
+ id="path3203" />
+ <path
+ d="m 84.690849,378.36679 c -0.725914,0 -1.228843,0.083 -1.508789,0.24902 -0.279949,0.16602 -0.419923,0.44923 -0.419922,0.84961 -10e-7,0.31902 0.104165,0.57292 0.3125,0.76172 0.211587,0.18555 0.498045,0.27832 0.859375,0.27832 0.498044,0 0.896807,-0.17578 1.196289,-0.52734 0.302731,-0.35482 0.454098,-0.82519 0.454102,-1.41113 l 0,-0.2002 -0.893555,0 m 1.791992,-0.37109 0,3.12011 -0.898437,0 0,-0.83007 c -0.205082,0.33203 -0.460616,0.5778 -0.766602,0.7373 -0.305992,0.15625 -0.680341,0.23438 -1.123046,0.23438 -0.559898,0 -1.005861,-0.15625 -1.337891,-0.46875 -0.328777,-0.31576 -0.493165,-0.73731 -0.493164,-1.26465 -1e-6,-0.61523 0.205077,-1.0791 0.615234,-1.3916 0.41341,-0.3125 1.028644,-0.46875 1.845703,-0.46875 l 1.259766,0 0,-0.0879 c -4e-6,-0.41341 -0.136723,-0.73242 -0.410156,-0.95704 -0.270186,-0.22786 -0.651045,-0.34179 -1.142578,-0.34179 -0.312503,0 -0.616865,0.0374 -0.913086,0.1123 -0.296226,0.0749 -0.581056,0.18718 -0.854493,0.33692 l 0,-0.83008 c 0.328775,-0.12695 0.647785,-0.22135 0.957032,-0.28321 0.309242,-0.0651 0.610349,-0.0977 0.90332,-0.0977 0.791012,0 1.381832,0.20508 1.772461,0.61523 0.39062,0.41016 0.585932,1.03191 0.585937,1.86524"
+ style="font-size:10px"
+ id="path3205" />
+ <path
+ d="m 91.507256,376.48691 c -0.100916,-0.0586 -0.211593,-0.10091 -0.332032,-0.12696 -0.117191,-0.0293 -0.247399,-0.0439 -0.390625,-0.0439 -0.507815,0 -0.89844,0.16602 -1.171875,0.49805 -0.270184,0.32878 -0.405275,0.80241 -0.405273,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.434568,-0.57779 0.737305,-0.7373 0.302731,-0.16276 0.670569,-0.24414 1.103515,-0.24414 0.06185,0 0.130205,0.005 0.205078,0.0147 0.07487,0.007 0.157874,0.0179 0.249024,0.0342 l 0.0049,0.92285"
+ style="font-size:10px"
+ id="path3207" />
+ <path
+ d="m 94.734795,381.62363 c -0.25391,0.65104 -0.501305,1.07584 -0.742188,1.27441 -0.240888,0.19857 -0.563153,0.29785 -0.966797,0.29785 l -0.717773,0 0,-0.75195 0.527344,0 c 0.247394,0 0.439451,-0.0586 0.576171,-0.17578 0.136717,-0.11719 0.288084,-0.39388 0.454102,-0.83008 l 0.161133,-0.41016 -2.211914,-5.38086 0.952148,0 1.708985,4.27735 1.708984,-4.27735 0.952148,0 -2.402343,5.97657"
+ style="font-size:10px"
+ id="path3209" />
+ <path
+ d="m 105.81878,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30923,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90333,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.8496,-0.38086 -0.46551,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18556,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3211" />
+ <path
+ d="m 113.4262,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66406,-2.10938 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3213" />
+ <path
+ d="m 121.96624,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3215" />
+ <path
+ d="m 123.768,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3217" />
+ <path
+ d="m 127.43011,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3219" />
+ <path
+ d="m 132.58636,376.27695 c -0.48178,0 -0.86264,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13997,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.84571,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44597,-0.50781 1.0612,-0.76172 1.84571,-0.76172"
+ style="font-size:10px"
+ id="path3221" />
+ <path
+ d="m 139.74944,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3223" />
+ <path
+ d="m 144.75433,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84962,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40528,0.89193 -0.40527,1.55273 -1e-5,0.66081 0.13509,1.18002 0.40527,1.55762 0.27343,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
+ style="font-size:10px"
+ id="path3225" />
+ <path
+ d="m 152.35198,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3227" />
+ <path
+ d="m 159.83245,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27345,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -1e-5,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48014,0.22949 0.96192,0.33691 l 0.30761,0.0684 c 0.63802,0.13672 1.0905,0.33041 1.35743,0.58106 0.27017,0.24739 0.40526,0.59407 0.40527,1.04004 -1e-5,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.34179,-0.35156 0.3418,-0.61524 -1e-5,-0.24413 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.3711,-0.57779 -0.3711,-1.00097 0,-0.51432 0.1823,-0.91146 0.54688,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12208 0.81055,0.21973"
+ style="font-size:10px"
+ id="path3229" />
+ <path
+ d="m 161.56097,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3231" />
+ <path
+ d="m 165.22308,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3233" />
+ <path
+ d="m 168.26019,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3235" />
+ <path
+ d="m 173.15276,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3237" />
+ <path
+ d="m 181.6928,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21485,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3239" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3017">
+ <path
+ d="m 367.17007,356.71783 -2.7832,-7.29003 1.03027,0 2.30958,6.13769 2.31445,-6.13769 1.02539,0 -2.77832,7.29003 -1.11817,0"
+ style="font-size:10px"
+ id="path3242" />
+ <path
+ d="m 371.87222,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3244" />
+ <path
+ d="m 377.81461,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3246" />
+ <path
+ d="m 379.65543,349.69635 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3248" />
+ <path
+ d="m 382.59976,354.55963 0,-3.31055 0.89844,0 0,3.27637 c 0,0.51758 0.10091,0.90658 0.30273,1.16699 0.20182,0.25717 0.50456,0.38575 0.90821,0.38575 0.48502,0 0.86751,-0.15463 1.14746,-0.46387 0.2832,-0.30924 0.4248,-0.73079 0.4248,-1.26465 l 0,-3.10059 0.89844,0 0,5.46875 -0.89844,0 0,-0.83984 c -0.2181,0.33203 -0.47201,0.57943 -0.76172,0.74219 -0.28646,0.1595 -0.62012,0.23926 -1.00097,0.23926 -0.62826,0 -1.10515,-0.19532 -1.43067,-0.58594 -0.32552,-0.39063 -0.48828,-0.96191 -0.48828,-1.71387 m 2.26074,-3.44238 0,0"
+ style="font-size:10px"
+ id="path3250" />
+ <path
+ d="m 391.52554,353.96881 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10417,0.57292 0.3125,0.76172 0.21159,0.18555 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.8968,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.45409,-0.82519 0.4541,-1.41113 l 0,-0.2002 -0.89356,0 m 1.792,-0.37109 0,3.12011 -0.89844,0 0,-0.83007 c -0.20508,0.33203 -0.46062,0.5778 -0.7666,0.7373 -0.306,0.15625 -0.68035,0.23438 -1.12305,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27018,-0.22786 -0.65104,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91308,0.1123 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32877,-0.12695 0.64778,-0.22135 0.95703,-0.28321 0.30924,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79101,0 1.38183,0.20508 1.77246,0.61523 0.39062,0.41016 0.58593,1.03191 0.58594,1.86524"
+ style="font-size:10px"
+ id="path3252" />
+ <path
+ d="m 395.173,349.12018 0.89844,0 0,7.59765 -0.89844,0 0,-7.59765"
+ style="font-size:10px"
+ id="path3254" />
+ <path
+ d="m 404.61636,351.41022 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78125,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27018,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64941,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33204,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42318,0 0.7487,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.1302 -0.52247,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55665,-0.11718 -0.95866,-0.29622 -1.20606,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
+ style="font-size:10px"
+ id="path3256" />
+ <path
+ d="m 410.28043,351.45905 0,0.83984 c -0.25391,-0.13997 -0.50945,-0.24414 -0.76661,-0.3125 -0.25391,-0.0716 -0.51107,-0.10742 -0.77148,-0.10742 -0.58268,0 -1.03516,0.18555 -1.35742,0.55664 -0.32227,0.36784 -0.4834,0.88542 -0.4834,1.55273 0,0.66732 0.16113,1.18653 0.4834,1.55762 0.32226,0.36784 0.77474,0.55176 1.35742,0.55176 0.26041,0 0.51757,-0.0342 0.77148,-0.10254 0.25716,-0.0716 0.5127,-0.17741 0.76661,-0.31738 l 0,0.83007 c -0.25066,0.11719 -0.51108,0.20508 -0.78125,0.26368 -0.26693,0.0586 -0.55177,0.0879 -0.8545,0.0879 -0.82357,0 -1.47786,-0.25879 -1.96289,-0.77637 -0.48502,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.73243,-2.10449 0.49153,-0.51106 1.16373,-0.7666 2.0166,-0.7666 0.27669,0 0.54687,0.0293 0.81054,0.0879 0.26367,0.0553 0.51921,0.13998 0.76661,0.25391"
+ style="font-size:10px"
+ id="path3258" />
+ <path
+ d="m 415.02164,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12695 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3260" />
+ <path
+ d="m 420.43668,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.2246,1.0905 0.55664,1.41602 0.33528,0.32227 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32551,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32228,0.13672 -0.65268,0.24089 -0.99122,0.3125 -0.33854,0.0716 -0.68197,0.10743 -1.03027,0.10743 -0.8724,0 -1.56413,-0.25391 -2.07519,-0.76172 -0.50782,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52733 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74316,0.71289 0.42969,0.47201 0.64453,1.11491 0.64454,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20313,-0.005"
+ style="font-size:10px"
+ id="path3262" />
+ <path
+ d="m 426.58902,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33529,0.32227 0.80078,0.4834 1.39649,0.4834 0.34504,0 0.6787,-0.0423 1.00097,-0.12696 0.32552,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10743 -1.03028,0.10743 -0.87239,0 -1.56412,-0.25391 -2.07519,-0.76172 -0.50781,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24089,-1.60481 0.72266,-2.12891 0.48502,-0.52733 1.13769,-0.79101 1.958,-0.79101 0.73568,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.5013,0 -0.90332,0.1416 -1.20605,0.4248 -0.29949,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20312,-0.005"
+ style="font-size:10px"
+ id="path3264" />
+ <path
+ d="m 432.60953,353.41705 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10092,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50457,-0.38574 -0.90821,-0.38574 -0.48503,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3266" />
+ <path
+ d="m 439.71402,351.87897 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3268" />
+ <path
+ d="m 446.87711,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3270" />
+ <path
+ d="m 447.82925,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3272" />
+ <path
+ d="m 454.20132,353.91998 c 0,-0.65104 -0.13509,-1.15559 -0.40527,-1.51367 -0.26693,-0.35807 -0.64291,-0.5371 -1.12793,-0.53711 -0.48177,1e-5 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35808 -0.40039,0.86263 -0.40039,1.51367 0,0.64779 0.13346,1.15072 0.40039,1.50879 0.27018,0.35808 0.64616,0.53711 1.12793,0.53711 0.48502,0 0.861,-0.17903 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c 0,0.93099 -0.20671,1.62272 -0.62012,2.0752 -0.41341,0.45573 -1.04655,0.68359 -1.89941,0.68359 -0.31576,0 -0.61361,-0.0244 -0.89355,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21484 l 0,-0.87403 c 0.26367,0.14323 0.52408,0.24903 0.78125,0.31739 0.25716,0.0684 0.5192,0.10253 0.78613,0.10254 0.58919,-10e-6 1.03027,-0.15463 1.32324,-0.46387 0.29297,-0.30599 0.43945,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56315 -0.71289,0.72266 -0.28971,0.1595 -0.63639,0.23925 -1.04004,0.23925 -0.67057,0 -1.21093,-0.25553 -1.62109,-0.7666 -0.41016,-0.51106 -0.61523,-1.18815 -0.61523,-2.03125 0,-0.84635 0.20507,-1.52506 0.61523,-2.03613 0.41016,-0.51106 0.95052,-0.7666 1.62109,-0.7666 0.40365,0 0.75033,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.40039 0.71289,0.72265 l 0,-0.83008 0.89844,0 0,4.79004"
+ style="font-size:10px"
+ id="path3274" />
+ <path
+ d="m 456.95035,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3276" />
+ <path
+ d="m 464.26968,353.41705 0,3.30078 -0.89843,0 0,-3.27148 c -10e-6,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62826,0 1.10352,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
+ style="font-size:10px"
+ id="path3278" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 343.73692,26.224389 0.01,294.941191"
+ id="path3861"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ transform="translate(12.627039,339.86462)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4307"
+ d="m 356.48533,366.00457 336.31202,-0.0196"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4309"
+ d="m 159.89916,447.6257 -0.0625,145.00422"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 160.03997,448.23877 184.95568,-0.0159"
+ id="path4493"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text4495">
+ <path
+ d="m 228.57881,442.02737 0.49805,0 0.7666,3.08106 0.76416,-3.08106 0.5542,0 0.7666,3.08106 0.76416,-3.08106 0.50049,0 -0.91553,3.64502 -0.62012,0 -0.76904,-3.16406 -0.77637,3.16406 -0.62011,0 -0.91309,-3.64502"
+ style="font-size:5px"
+ id="path3141" />
+ <path
+ d="m 233.71797,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
+ style="font-size:5px"
+ id="path3143" />
+ <path
+ d="m 237.37764,444.022 0,1.65039 -0.44922,0 0,-1.63574 c 0,-0.25879 -0.0505,-0.45247 -0.15137,-0.58105 -0.10091,-0.12858 -0.25228,-0.19287 -0.4541,-0.19287 -0.24251,0 -0.43376,0.0773 -0.57373,0.23193 -0.13997,0.15462 -0.20996,0.3654 -0.20996,0.63232 l 0,1.54541 -0.45166,0 0,-2.73437 0.45166,0 0,0.4248 c 0.10742,-0.16438 0.23356,-0.28727 0.37842,-0.36865 0.14648,-0.0814 0.31494,-0.12207 0.50537,-0.12207 0.31413,0 0.55176,0.0977 0.71289,0.29297 0.16113,0.19369 0.2417,0.47933 0.2417,0.85693"
+ style="font-size:5px"
+ id="path3145" />
+ <path
+ d="m 240.07784,443.35306 0,-1.47949 0.44921,0 0,3.79882 -0.44921,0 0,-0.41015 c -0.0944,0.16276 -0.21404,0.28401 -0.35889,0.36377 -0.14323,0.0781 -0.31576,0.11718 -0.51758,0.11718 -0.3304,0 -0.59977,-0.13183 -0.80811,-0.3955 -0.2067,-0.26367 -0.31005,-0.61035 -0.31005,-1.04004 0,-0.42969 0.10335,-0.77637 0.31005,-1.04004 0.20834,-0.26367 0.47771,-0.39551 0.80811,-0.39551 0.20182,0 0.37435,0.0399 0.51758,0.11963 0.14485,0.0781 0.26448,0.19857 0.35889,0.36133 m -1.53077,0.95459 c 0,0.3304 0.0676,0.59 0.20264,0.77881 0.13672,0.18717 0.32389,0.28076 0.56152,0.28076 0.23763,0 0.42481,-0.0936 0.56153,-0.28076 0.13671,-0.18881 0.20507,-0.44841 0.20508,-0.77881 -1e-5,-0.3304 -0.0684,-0.58919 -0.20508,-0.77637 -0.13672,-0.1888 -0.3239,-0.2832 -0.56153,-0.2832 -0.23763,0 -0.4248,0.0944 -0.56152,0.2832 -0.13509,0.18718 -0.20264,0.44597 -0.20264,0.77637"
+ style="font-size:5px"
+ id="path3147" />
+ <path
+ d="m 242.51192,443.25296 c -0.24089,0 -0.43132,0.0944 -0.57129,0.2832 -0.13998,0.18718 -0.20996,0.44434 -0.20996,0.77149 0,0.32715 0.0692,0.58512 0.20752,0.77392 0.13997,0.18718 0.33121,0.28077 0.57373,0.28077 0.23925,0 0.42887,-0.0944 0.56884,-0.28321 0.13998,-0.1888 0.20996,-0.44596 0.20997,-0.77148 -1e-5,-0.32389 -0.07,-0.58024 -0.20997,-0.76905 -0.13997,-0.19042 -0.32959,-0.28564 -0.56884,-0.28564 m 0,-0.38086 c 0.39062,0 0.69742,0.12696 0.92041,0.38086 0.22298,0.25391 0.33447,0.60547 0.33447,1.05469 0,0.44759 -0.11149,0.79915 -0.33447,1.05469 -0.22299,0.2539 -0.52979,0.38085 -0.92041,0.38085 -0.39226,0 -0.69987,-0.12695 -0.92285,-0.38085 -0.22136,-0.25554 -0.33204,-0.6071 -0.33204,-1.05469 0,-0.44922 0.11068,-0.80078 0.33204,-1.05469 0.22298,-0.2539 0.53059,-0.38086 0.92285,-0.38086"
+ style="font-size:5px"
+ id="path3149" />
+ <path
+ d="m 244.24776,442.93802 0.44922,0 0.56152,2.13379 0.55908,-2.13379 0.52979,0 0.56152,2.13379 0.55908,-2.13379 0.44922,0 -0.71533,2.73437 -0.52979,0 -0.58838,-2.24121 -0.59082,2.24121 -0.52978,0 -0.71533,-2.73437"
+ style="font-size:5px"
+ id="path3151" />
+ <path
+ d="m 249.70674,442.02737 3.0835,0 0,0.41504 -1.29395,0 0,3.22998 -0.4956,0 0,-3.22998 -1.29395,0 0,-0.41504"
+ style="font-size:5px"
+ id="path3153" />
+ <path
+ d="m 253.09297,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
+ style="font-size:5px"
+ id="path3155" />
+ <path
+ d="m 254.92403,442.16165 0,0.77637 0.92529,0 0,0.34912 -0.92529,0 0,1.48437 c 0,0.22299 0.0301,0.36622 0.0903,0.42969 0.0618,0.0635 0.18636,0.0952 0.37353,0.0952 l 0.46143,0 0,0.37597 -0.46143,0 c -0.34668,0 -0.58593,-0.0643 -0.71777,-0.19287 -0.13184,-0.13021 -0.19775,-0.36621 -0.19775,-0.70801 l 0,-1.48437 -0.32959,0 0,-0.34912 0.32959,0 0,-0.77637 0.45166,0"
+ style="font-size:5px"
+ id="path3157" />
+ <path
+ d="m 256.44258,441.87357 0.44922,0 0,3.79882 -0.44922,0 0,-3.79882"
+ style="font-size:5px"
+ id="path3159" />
+ <path
+ d="m 260.16817,444.1929 0,0.21973 -2.06543,0 c 0.0195,0.30924 0.1123,0.54525 0.27832,0.70801 0.16764,0.16113 0.40039,0.2417 0.69824,0.2417 0.17252,0 0.33935,-0.0212 0.50049,-0.0635 0.16276,-0.0423 0.32389,-0.1058 0.4834,-0.19043 l 0,0.4248 c -0.16114,0.0684 -0.32634,0.12045 -0.49561,0.15625 -0.16927,0.0358 -0.34098,0.0537 -0.51514,0.0537 -0.43619,0 -0.78206,-0.12695 -1.03759,-0.38085 -0.25391,-0.25391 -0.38086,-0.59733 -0.38086,-1.03028 0,-0.44759 0.12044,-0.8024 0.36133,-1.06445 0.24251,-0.26367 0.56884,-0.39551 0.979,-0.39551 0.36784,0 0.65836,0.11882 0.87158,0.35645 0.21484,0.236 0.32226,0.55745 0.32227,0.96435 m -0.44922,-0.13183 c -0.003,-0.24577 -0.0724,-0.4419 -0.20752,-0.58838 -0.13347,-0.14649 -0.31088,-0.21973 -0.53223,-0.21973 -0.25065,0 -0.45166,0.0708 -0.60303,0.2124 -0.14974,0.14161 -0.236,0.34099 -0.25878,0.59815 l 1.60156,-0.002"
+ style="font-size:5px"
+ id="path3161" />
+ </g>
+ <g
+ aria-label="Content area origin"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ id="text4089">
+ <path
+ d="m 172.21587,456.09125 v 1.04004 q -0.49805,-0.46387 -1.06446,-0.69336 -0.56152,-0.22949 -1.19629,-0.22949 -1.25,0 -1.91406,0.7666 -0.66406,0.76172 -0.66406,2.20703 0,1.44043 0.66406,2.20703 0.66406,0.76172 1.91406,0.76172 0.63477,0 1.19629,-0.22949 0.56641,-0.2295 1.06446,-0.69336 v 1.03027 q -0.51758,0.35156 -1.09864,0.52734 -0.57617,0.17578 -1.2207,0.17578 -1.65527,0 -2.60742,-1.01074 -0.95215,-1.01562 -0.95215,-2.76855 0,-1.75781 0.95215,-2.76856 0.95215,-1.01562 2.60742,-1.01562 0.6543,0 1.23047,0.17578 0.58105,0.1709 1.08887,0.51758 z"
+ style="font-size:10px"
+ id="path4091" />
+ <path
+ d="m 175.82915,457.9809 q -0.72266,0 -1.14258,0.5664 -0.41992,0.56153 -0.41992,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71777,0 1.13769,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.13769,-0.57129 z m 0,-0.76172 q 1.17187,0 1.84082,0.76172 0.66894,0.76171 0.66894,2.10937 0,1.34277 -0.66894,2.10938 -0.66895,0.76171 -1.84082,0.76171 -1.17676,0 -1.84571,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.84571,-0.76172 z"
+ style="font-size:10px"
+ id="path4093" />
+ <path
+ d="m 184.36919,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30274,-1.16211 -0.30273,-0.38574 -0.9082,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32226,-0.49316 0.75683,-0.7373 0.43946,-0.24414 1.01075,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4095" />
+ <path
+ d="m 187.05962,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
+ style="font-size:10px"
+ id="path4097" />
+ <path
+ d="m 194.77446,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39649,0.4834 0.51757,0 1.00097,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50781,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72266,-2.12891 0.72754,-0.79101 1.958,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75195,0 -1.20605,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
+ style="font-size:10px"
+ id="path4099" />
+ <path
+ d="m 200.79497,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4101" />
+ <path
+ d="m 203.4854,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
+ style="font-size:10px"
+ id="path4103" />
+ <path
+ d="m 212.19145,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85938,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89843 v -0.83007 q -0.30762,0.49804 -0.7666,0.7373 -0.45899,0.23437 -1.12305,0.23437 -0.83985,0 -1.33789,-0.46875 -0.49317,-0.47363 -0.49317,-1.26464 0,-0.92286 0.61524,-1.39161 0.62012,-0.46875 1.8457,-0.46875 h 1.25977 v -0.0879 q 0,-0.62011 -0.41016,-0.95703 -0.40527,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91308,0.1123 -0.44434,0.11231 -0.8545,0.33691 v -0.83007 q 0.49317,-0.19043 0.95704,-0.28321 0.46386,-0.0976 0.90332,-0.0976 1.18652,0 1.77246,0.61523 0.58593,0.61524 0.58593,1.86524 z"
+ style="font-size:10px"
+ id="path4105" />
+ <path
+ d="m 219.00786,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10351,-0.24414 0.0928,0 0.20508,0.0147 0.11231,0.01 0.24903,0.0342 z"
+ style="font-size:10px"
+ id="path4107" />
+ <path
+ d="m 224.4229,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39648,0.4834 0.51758,0 1.00098,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50782,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72265,-2.12891 0.72754,-0.79101 1.95801,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75196,0 -1.20606,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
+ style="font-size:10px"
+ id="path4109" />
+ <path
+ d="m 228.38286,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85937,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89844 v -0.83007 q -0.30761,0.49804 -0.7666,0.7373 -0.45898,0.23437 -1.12305,0.23437 -0.83984,0 -1.33789,-0.46875 -0.49316,-0.47363 -0.49316,-1.26464 0,-0.92286 0.61523,-1.39161 0.62012,-0.46875 1.84571,-0.46875 h 1.25976 v -0.0879 q 0,-0.62011 -0.41015,-0.95703 -0.40528,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91309,0.1123 -0.44433,0.11231 -0.85449,0.33691 v -0.83007 q 0.49316,-0.19043 0.95703,-0.28321 0.46387,-0.0976 0.90332,-0.0976 1.18653,0 1.77246,0.61523 0.58594,0.61524 0.58594,1.86524 z"
+ style="font-size:10px"
+ id="path4111" />
+ <path
+ d="m 237.33305,457.9809 q -0.72265,0 -1.14257,0.5664 -0.41993,0.56153 -0.41993,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71778,0 1.1377,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.1377,-0.57129 z m 0,-0.76172 q 1.17188,0 1.84082,0.76172 0.66895,0.76171 0.66895,2.10937 0,1.34277 -0.66895,2.10938 -0.66894,0.76171 -1.84082,0.76171 -1.17675,0 -1.8457,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.8457,-0.76172 z"
+ style="font-size:10px"
+ id="path4113" />
+ <path
+ d="m 244.49614,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10352,-0.24414 0.0928,0 0.20507,0.0147 0.11231,0.01 0.24903,0.0342 z"
+ style="font-size:10px"
+ id="path4115" />
+ <path
+ d="m 245.44829,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
+ style="font-size:10px"
+ id="path4117" />
+ <path
+ d="m 251.82036,460.02191 q 0,-0.97656 -0.40528,-1.51367 -0.40039,-0.53711 -1.12792,-0.53711 -0.72266,0 -1.12793,0.53711 -0.4004,0.53711 -0.4004,1.51367 0,0.97168 0.4004,1.50879 0.40527,0.53711 1.12793,0.53711 0.72753,0 1.12792,-0.53711 0.40528,-0.53711 0.40528,-1.50879 z m 0.89844,2.11914 q 0,1.39649 -0.62012,2.0752 -0.62012,0.68359 -1.89942,0.68359 -0.47363,0 -0.89355,-0.0732 -0.41992,-0.0684 -0.81543,-0.21484 v -0.87403 q 0.39551,0.21485 0.78125,0.31738 0.38574,0.10254 0.78613,0.10254 0.88379,0 1.32325,-0.46386 0.43945,-0.45899 0.43945,-1.3916 v -0.44434 q -0.27832,0.4834 -0.71289,0.72266 -0.43457,0.23925 -1.04004,0.23925 -1.00586,0 -1.6211,-0.7666 -0.61523,-0.7666 -0.61523,-2.03125 0,-1.26953 0.61523,-2.03613 0.61524,-0.7666 1.6211,-0.7666 0.60547,0 1.04004,0.23926 0.43457,0.23925 0.71289,0.72265 v -0.83008 h 0.89844 z"
+ style="font-size:10px"
+ id="path4119" />
+ <path
+ d="m 254.56938,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
+ style="font-size:10px"
+ id="path4121" />
+ <path
+ d="m 261.88872,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4123" />
+ </g>
+ </g>
+</svg>
diff --git a/libs/glfw-3.3.8/docs/html/splitbar.png b/libs/glfw-3.3.8/docs/html/splitbar.png
new file mode 100644
index 0000000..fe895f2
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/splitbar.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/structGLFWgamepadstate.html b/libs/glfw-3.3.8/docs/html/structGLFWgamepadstate.html
new file mode 100644
index 0000000..aa66b91
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/structGLFWgamepadstate.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: GLFWgamepadstate Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle"><div class="title">GLFWgamepadstate Struct Reference<div class="ingroups"><a class="el" href="group__input.html">Input reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Gamepad input state.
+ <a href="structGLFWgamepadstate.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a27e9896b51c65df15fba2c7139bfdb9a"><td class="memItemLeft" align="right" valign="top">unsigned char&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgamepadstate.html#a27e9896b51c65df15fba2c7139bfdb9a">buttons</a> [15]</td></tr>
+<tr class="separator:a27e9896b51c65df15fba2c7139bfdb9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8b2c8939b1d31458de5359998375c189"><td class="memItemLeft" align="right" valign="top">float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgamepadstate.html#a8b2c8939b1d31458de5359998375c189">axes</a> [6]</td></tr>
+<tr class="separator:a8b2c8939b1d31458de5359998375c189"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >This describes the input state of a gamepad.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#gamepad">Gamepad input</a> </dd>
+<dd>
+<a class="el" href="group__input.html#gadccddea8bce6113fa459de379ddaf051">glfwGetGamepadState</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.3. </dd></dl>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a27e9896b51c65df15fba2c7139bfdb9a" name="a27e9896b51c65df15fba2c7139bfdb9a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a27e9896b51c65df15fba2c7139bfdb9a">&#9670;&nbsp;</a></span>buttons</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char GLFWgamepadstate::buttons[15]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The states of each <a class="el" href="group__gamepad__buttons.html">gamepad button</a>, <code>GLFW_PRESS</code> or <code>GLFW_RELEASE</code>. </p>
+
+</div>
+</div>
+<a id="a8b2c8939b1d31458de5359998375c189" name="a8b2c8939b1d31458de5359998375c189"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8b2c8939b1d31458de5359998375c189">&#9670;&nbsp;</a></span>axes</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">float GLFWgamepadstate::axes[6]</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The states of each <a class="el" href="group__gamepad__axes.html">gamepad axis</a>, in the range -1.0 to 1.0 inclusive. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
+</ul>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/structGLFWgammaramp.html b/libs/glfw-3.3.8/docs/html/structGLFWgammaramp.html
new file mode 100644
index 0000000..310d1cc
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/structGLFWgammaramp.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: GLFWgammaramp Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle"><div class="title">GLFWgammaramp Struct Reference<div class="ingroups"><a class="el" href="group__monitor.html">Monitor reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Gamma ramp.
+ <a href="structGLFWgammaramp.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a2cce5d968734b685623eef913e635138"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#a2cce5d968734b685623eef913e635138">red</a></td></tr>
+<tr class="separator:a2cce5d968734b685623eef913e635138"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:affccc6f5df47820b6562d709da3a5a3a"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#affccc6f5df47820b6562d709da3a5a3a">green</a></td></tr>
+<tr class="separator:affccc6f5df47820b6562d709da3a5a3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acf0c836d0efe29c392fe8d1a1042744b"><td class="memItemLeft" align="right" valign="top">unsigned short *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#acf0c836d0efe29c392fe8d1a1042744b">blue</a></td></tr>
+<tr class="separator:acf0c836d0efe29c392fe8d1a1042744b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad620e1cffbff9a32c51bca46301b59a5"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWgammaramp.html#ad620e1cffbff9a32c51bca46301b59a5">size</a></td></tr>
+<tr class="separator:ad620e1cffbff9a32c51bca46301b59a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >This describes the gamma ramp for a monitor.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_gamma">Gamma ramp</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga76ba90debcf0062b5c4b73052b24f96f">glfwGetGammaRamp</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#ga583f0ffd0d29613d8cd172b996bbf0dd">glfwSetGammaRamp</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 3.0. </dd></dl>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a2cce5d968734b685623eef913e635138" name="a2cce5d968734b685623eef913e635138"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2cce5d968734b685623eef913e635138">&#9670;&nbsp;</a></span>red</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned short* GLFWgammaramp::red</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >An array of value describing the response of the red channel. </p>
+
+</div>
+</div>
+<a id="affccc6f5df47820b6562d709da3a5a3a" name="affccc6f5df47820b6562d709da3a5a3a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#affccc6f5df47820b6562d709da3a5a3a">&#9670;&nbsp;</a></span>green</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned short* GLFWgammaramp::green</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >An array of value describing the response of the green channel. </p>
+
+</div>
+</div>
+<a id="acf0c836d0efe29c392fe8d1a1042744b" name="acf0c836d0efe29c392fe8d1a1042744b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf0c836d0efe29c392fe8d1a1042744b">&#9670;&nbsp;</a></span>blue</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned short* GLFWgammaramp::blue</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >An array of value describing the response of the blue channel. </p>
+
+</div>
+</div>
+<a id="ad620e1cffbff9a32c51bca46301b59a5" name="ad620e1cffbff9a32c51bca46301b59a5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad620e1cffbff9a32c51bca46301b59a5">&#9670;&nbsp;</a></span>size</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned int GLFWgammaramp::size</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The number of elements in each array. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
+</ul>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/structGLFWimage.html b/libs/glfw-3.3.8/docs/html/structGLFWimage.html
new file mode 100644
index 0000000..672209d
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/structGLFWimage.html
@@ -0,0 +1,146 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: GLFWimage Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle"><div class="title">GLFWimage Struct Reference<div class="ingroups"><a class="el" href="group__window.html">Window reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Image data.
+ <a href="structGLFWimage.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:af6a71cc999fe6d3aea31dd7e9687d835"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#af6a71cc999fe6d3aea31dd7e9687d835">width</a></td></tr>
+<tr class="separator:af6a71cc999fe6d3aea31dd7e9687d835"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0b7d95368f0c80d5e5c9875057c7dbec"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#a0b7d95368f0c80d5e5c9875057c7dbec">height</a></td></tr>
+<tr class="separator:a0b7d95368f0c80d5e5c9875057c7dbec"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a0c532a5c2bb715555279b7817daba0fb"><td class="memItemLeft" align="right" valign="top">unsigned char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWimage.html#a0c532a5c2bb715555279b7817daba0fb">pixels</a></td></tr>
+<tr class="separator:a0c532a5c2bb715555279b7817daba0fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >This describes a single 2D image. See the documentation for each related function what the expected pixel format is.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="input_guide.html#cursor_custom">Custom cursor creation</a> </dd>
+<dd>
+<a class="el" href="window_guide.html#window_icon">Window icon</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 2.1. <b>GLFW 3:</b> Removed format and bytes-per-pixel members. </dd></dl>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="af6a71cc999fe6d3aea31dd7e9687d835" name="af6a71cc999fe6d3aea31dd7e9687d835"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af6a71cc999fe6d3aea31dd7e9687d835">&#9670;&nbsp;</a></span>width</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWimage::width</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The width, in pixels, of this image. </p>
+
+</div>
+</div>
+<a id="a0b7d95368f0c80d5e5c9875057c7dbec" name="a0b7d95368f0c80d5e5c9875057c7dbec"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b7d95368f0c80d5e5c9875057c7dbec">&#9670;&nbsp;</a></span>height</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWimage::height</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The height, in pixels, of this image. </p>
+
+</div>
+</div>
+<a id="a0c532a5c2bb715555279b7817daba0fb" name="a0c532a5c2bb715555279b7817daba0fb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c532a5c2bb715555279b7817daba0fb">&#9670;&nbsp;</a></span>pixels</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">unsigned char* GLFWimage::pixels</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The pixel data of this image, arranged left-to-right, top-to-bottom. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
+</ul>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/structGLFWvidmode.html b/libs/glfw-3.3.8/docs/html/structGLFWvidmode.html
new file mode 100644
index 0000000..c367377
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/structGLFWvidmode.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: GLFWvidmode Struct Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="summary">
+<a href="#pub-attribs">Data Fields</a> </div>
+ <div class="headertitle"><div class="title">GLFWvidmode Struct Reference<div class="ingroups"><a class="el" href="group__monitor.html">Monitor reference</a></div></div></div>
+</div><!--header-->
+<div class="contents">
+
+<p>Video mode type.
+ <a href="structGLFWvidmode.html#details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="glfw3_8h_source.html">glfw3.h</a>&gt;</code></p>
+<table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-attribs" name="pub-attribs"></a>
+Data Fields</h2></td></tr>
+<tr class="memitem:a698dcb200562051a7249cb6ae154c71d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a></td></tr>
+<tr class="separator:a698dcb200562051a7249cb6ae154c71d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac65942a5f6981695517437a9d571d03c"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a></td></tr>
+<tr class="separator:ac65942a5f6981695517437a9d571d03c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a6066c4ecd251098700062d3b735dba1b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a></td></tr>
+<tr class="separator:a6066c4ecd251098700062d3b735dba1b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a292fdd281f3485fb3ff102a5bda43faa"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a></td></tr>
+<tr class="separator:a292fdd281f3485fb3ff102a5bda43faa"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:af310977f58d2e3b188175b6e3d314047"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a></td></tr>
+<tr class="separator:af310977f58d2e3b188175b6e3d314047"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a791bdd6c7697b09f7e9c97054bf05649"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a></td></tr>
+<tr class="separator:a791bdd6c7697b09f7e9c97054bf05649"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p >This describes a single video mode.</p>
+<dl class="section see"><dt>See also</dt><dd><a class="el" href="monitor_guide.html#monitor_modes">Video modes</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> </dd>
+<dd>
+<a class="el" href="group__monitor.html#gad2e24d2843cb7d6c26202cddd530fc1b">glfwGetVideoModes</a></dd></dl>
+<dl class="section since"><dt>Since</dt><dd>Added in version 1.0. <b>GLFW 3:</b> Added refresh rate member. </dd></dl>
+</div><h2 class="groupheader">Field Documentation</h2>
+<a id="a698dcb200562051a7249cb6ae154c71d" name="a698dcb200562051a7249cb6ae154c71d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a698dcb200562051a7249cb6ae154c71d">&#9670;&nbsp;</a></span>width</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::width</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The width, in screen coordinates, of the video mode. </p>
+
+</div>
+</div>
+<a id="ac65942a5f6981695517437a9d571d03c" name="ac65942a5f6981695517437a9d571d03c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac65942a5f6981695517437a9d571d03c">&#9670;&nbsp;</a></span>height</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::height</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The height, in screen coordinates, of the video mode. </p>
+
+</div>
+</div>
+<a id="a6066c4ecd251098700062d3b735dba1b" name="a6066c4ecd251098700062d3b735dba1b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6066c4ecd251098700062d3b735dba1b">&#9670;&nbsp;</a></span>redBits</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::redBits</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The bit depth of the red channel of the video mode. </p>
+
+</div>
+</div>
+<a id="a292fdd281f3485fb3ff102a5bda43faa" name="a292fdd281f3485fb3ff102a5bda43faa"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a292fdd281f3485fb3ff102a5bda43faa">&#9670;&nbsp;</a></span>greenBits</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::greenBits</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The bit depth of the green channel of the video mode. </p>
+
+</div>
+</div>
+<a id="af310977f58d2e3b188175b6e3d314047" name="af310977f58d2e3b188175b6e3d314047"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af310977f58d2e3b188175b6e3d314047">&#9670;&nbsp;</a></span>blueBits</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::blueBits</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The bit depth of the blue channel of the video mode. </p>
+
+</div>
+</div>
+<a id="a791bdd6c7697b09f7e9c97054bf05649" name="a791bdd6c7697b09f7e9c97054bf05649"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a791bdd6c7697b09f7e9c97054bf05649">&#9670;&nbsp;</a></span>refreshRate</h2>
+
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int GLFWvidmode::refreshRate</td>
+ </tr>
+ </table>
+</div><div class="memdoc">
+<p >The refresh rate, in Hz, of the video mode. </p>
+
+</div>
+</div>
+<hr/>The documentation for this struct was generated from the following file:<ul>
+<li><a class="el" href="glfw3_8h_source.html">glfw3.h</a></li>
+</ul>
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/sync_off.png b/libs/glfw-3.3.8/docs/html/sync_off.png
new file mode 100644
index 0000000..3b443fc
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/sync_off.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/sync_on.png b/libs/glfw-3.3.8/docs/html/sync_on.png
new file mode 100644
index 0000000..e08320f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/sync_on.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/tab_a.png b/libs/glfw-3.3.8/docs/html/tab_a.png
new file mode 100644
index 0000000..3b725c4
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/tab_a.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/tab_b.png b/libs/glfw-3.3.8/docs/html/tab_b.png
new file mode 100644
index 0000000..e2b4a86
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/tab_b.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/tab_h.png b/libs/glfw-3.3.8/docs/html/tab_h.png
new file mode 100644
index 0000000..fd5cb70
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/tab_h.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/tab_s.png b/libs/glfw-3.3.8/docs/html/tab_s.png
new file mode 100644
index 0000000..ab478c9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/tab_s.png
Binary files differ
diff --git a/libs/glfw-3.3.8/docs/html/tabs.css b/libs/glfw-3.3.8/docs/html/tabs.css
new file mode 100644
index 0000000..00d1c60
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file
diff --git a/libs/glfw-3.3.8/docs/html/vulkan_8dox.html b/libs/glfw-3.3.8/docs/html/vulkan_8dox.html
new file mode 100644
index 0000000..a4fb097
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/vulkan_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: vulkan.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">vulkan.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/vulkan_guide.html b/libs/glfw-3.3.8/docs/html/vulkan_guide.html
new file mode 100644
index 0000000..1159aa0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/vulkan_guide.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Vulkan guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Vulkan guide </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#vulkan_loader">Linking against the Vulkan loader</a></li>
+<li class="level1"><a href="#vulkan_include">Including the Vulkan and GLFW header files</a></li>
+<li class="level1"><a href="#vulkan_support">Querying for Vulkan support</a><ul><li class="level2"><a href="#vulkan_proc">Querying Vulkan function pointers</a></li>
+</ul>
+</li>
+<li class="level1"><a href="#vulkan_ext">Querying required Vulkan extensions</a></li>
+<li class="level1"><a href="#vulkan_present">Querying for Vulkan presentation support</a></li>
+<li class="level1"><a href="#vulkan_window">Creating the window</a></li>
+<li class="level1"><a href="#vulkan_surface">Creating a Vulkan window surface</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This guide is intended to fill the gaps between the official <a href="https://www.khronos.org/vulkan/">Vulkan resources</a> and the rest of the GLFW documentation and is not a replacement for either. It assumes some familiarity with Vulkan concepts like loaders, devices, queues and surfaces and leaves it to the Vulkan documentation to explain the details of Vulkan functions.</p>
+<p >To develop for Vulkan you should download the <a href="https://vulkan.lunarg.com/">LunarG Vulkan SDK</a> for your platform. Apart from headers and link libraries, they also provide the validation layers necessary for development.</p>
+<p >The <a href="https://vulkan-tutorial.com/">Vulkan Tutorial</a> has more information on how to use GLFW and Vulkan. The <a href="https://github.com/KhronosGroup/Vulkan-Samples">Khronos Vulkan Samples</a> also use GLFW, although with a small framework in between.</p>
+<p >For details on a specific Vulkan support function, see the <a class="el" href="group__vulkan.html">Vulkan support reference</a>. There are also guides for the other areas of the GLFW API.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="window_guide.html">Window guide</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<h1><a class="anchor" id="vulkan_loader"></a>
+Linking against the Vulkan loader</h1>
+<p >By default, GLFW will look for the Vulkan loader on demand at runtime via its standard name (<code>vulkan-1.dll</code> on Windows, <code>libvulkan.so.1</code> on Linux and other Unix-like systems and <code>libvulkan.1.dylib</code> on macOS). This means that GLFW does not need to be linked against the loader. However, it also means that if you are using the static library form of the Vulkan loader GLFW will either fail to find it or (worse) use the wrong one.</p>
+<p >The <a class="el" href="compile_guide.html#GLFW_VULKAN_STATIC">GLFW_VULKAN_STATIC</a> CMake option makes GLFW call the Vulkan loader directly instead of dynamically loading it at runtime. Not linking against the Vulkan loader will then be a compile-time error.</p>
+<p ><b>macOS:</b> To make your application be redistributable you will need to set up the application bundle according to the LunarG SDK documentation. This is explained in more detail in the <a href="https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html">SDK documentation for macOS</a>.</p>
+<h1><a class="anchor" id="vulkan_include"></a>
+Including the Vulkan and GLFW header files</h1>
+<p >To include the Vulkan header, define <a class="el" href="build_guide.html#GLFW_INCLUDE_VULKAN">GLFW_INCLUDE_VULKAN</a> before including the GLFW header.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#define GLFW_INCLUDE_VULKAN</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+<div class="ttc" id="aglfw3_8h_html"><div class="ttname"><a href="glfw3_8h.html">glfw3.h</a></div><div class="ttdoc">The header of the GLFW 3 API.</div></div>
+</div><!-- fragment --><p >If you instead want to include the Vulkan header from a custom location or use your own custom Vulkan header then do this before the GLFW header.</p>
+<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;path/to/vulkan.h&gt;</span></div>
+<div class="line"><span class="preprocessor">#include &lt;<a class="code" href="glfw3_8h.html">GLFW/glfw3.h</a>&gt;</span></div>
+</div><!-- fragment --><p >Unless a Vulkan header is included, either by the GLFW header or above it, any GLFW functions that take or return Vulkan types will not be declared.</p>
+<p >The <code>VK_USE_PLATFORM_*_KHR</code> macros do not need to be defined for the Vulkan part of GLFW to work. Define them only if you are using these extensions directly.</p>
+<h1><a class="anchor" id="vulkan_support"></a>
+Querying for Vulkan support</h1>
+<p >If you are linking directly against the Vulkan loader then you can skip this section. The canonical desktop loader library exports all Vulkan core and Khronos extension functions, allowing them to be called directly.</p>
+<p >If you are loading the Vulkan loader dynamically instead of linking directly against it, you can check for the availability of a loader and ICD with <a class="el" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a>())</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Vulkan is available, at least for compute</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__vulkan_html_ga2e7f30931e02464b5bc8d0d4b6f9fe2b"><div class="ttname"><a href="group__vulkan.html#ga2e7f30931e02464b5bc8d0d4b6f9fe2b">glfwVulkanSupported</a></div><div class="ttdeci">int glfwVulkanSupported(void)</div><div class="ttdoc">Returns whether the Vulkan loader and an ICD have been found.</div></div>
+</div><!-- fragment --><p >This function returns <code>GLFW_TRUE</code> if the Vulkan loader and any minimally functional ICD was found.</p>
+<p >If one or both were not found, calling any other Vulkan related GLFW function will generate a <a class="el" href="group__errors.html#ga56882b290db23261cc6c053c40c2d08e">GLFW_API_UNAVAILABLE</a> error.</p>
+<h2><a class="anchor" id="vulkan_proc"></a>
+Querying Vulkan function pointers</h2>
+<p >To load any Vulkan core or extension function from the found loader, call <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>. To load functions needed for instance creation, pass <code>NULL</code> as the instance.</p>
+<div class="fragment"><div class="line">PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance)</div>
+<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(NULL, <span class="stringliteral">&quot;vkCreateInstance&quot;</span>);</div>
+<div class="ttc" id="agroup__vulkan_html_gadf228fac94c5fd8f12423ec9af9ff1e9"><div class="ttname"><a href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a></div><div class="ttdeci">GLFWvkproc glfwGetInstanceProcAddress(VkInstance instance, const char *procname)</div><div class="ttdoc">Returns the address of the specified Vulkan instance function.</div></div>
+</div><!-- fragment --><p >Once you have created an instance, you can load from it all other Vulkan core functions and functions from any instance extensions you enabled.</p>
+<div class="fragment"><div class="line">PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice)</div>
+<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(instance, <span class="stringliteral">&quot;vkCreateDevice&quot;</span>);</div>
+</div><!-- fragment --><p >This function in turn calls <code>vkGetInstanceProcAddr</code>. If that fails, the function falls back to a platform-specific query of the Vulkan loader (i.e. <code>dlsym</code> or <code>GetProcAddress</code>). If that also fails, the function returns <code>NULL</code>. For more information about <code>vkGetInstanceProcAddr</code>, see the Vulkan documentation.</p>
+<p >Vulkan also provides <code>vkGetDeviceProcAddr</code> for loading device-specific versions of Vulkan function. This function can be retrieved from an instance with <a class="el" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>.</p>
+<div class="fragment"><div class="line">PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)</div>
+<div class="line"> <a class="code hl_function" href="group__vulkan.html#gadf228fac94c5fd8f12423ec9af9ff1e9">glfwGetInstanceProcAddress</a>(instance, <span class="stringliteral">&quot;vkGetDeviceProcAddr&quot;</span>);</div>
+</div><!-- fragment --><p >Device-specific functions may execute a little bit faster, due to not having to dispatch internally based on the device passed to them. For more information about <code>vkGetDeviceProcAddr</code>, see the Vulkan documentation.</p>
+<h1><a class="anchor" id="vulkan_ext"></a>
+Querying required Vulkan extensions</h1>
+<p >To do anything useful with Vulkan you need to create an instance. If you want to use Vulkan to render to a window, you must enable the instance extensions GLFW requires to create Vulkan surfaces.</p>
+<p >To query the instance extensions required, call <a class="el" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>.</p>
+<div class="fragment"><div class="line">uint32_t count;</div>
+<div class="line"><span class="keyword">const</span> <span class="keywordtype">char</span>** extensions = <a class="code hl_function" href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a>(&amp;count);</div>
+<div class="ttc" id="agroup__vulkan_html_ga99ad342d82f4a3421e2864978cb6d1d6"><div class="ttname"><a href="group__vulkan.html#ga99ad342d82f4a3421e2864978cb6d1d6">glfwGetRequiredInstanceExtensions</a></div><div class="ttdeci">const char ** glfwGetRequiredInstanceExtensions(uint32_t *count)</div><div class="ttdoc">Returns the Vulkan instance extensions required by GLFW.</div></div>
+</div><!-- fragment --><p >These extensions must all be enabled when creating instances that are going to be passed to <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a> and <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>. The set of extensions will vary depending on platform and may also vary depending on graphics drivers and other factors.</p>
+<p >If it fails it will return <code>NULL</code> and GLFW will not be able to create Vulkan window surfaces. You can still use Vulkan for off-screen rendering and compute work.</p>
+<p >If successful the returned array will always include <code>VK_KHR_surface</code>, so if you don't require any additional extensions you can pass this list directly to the <code>VkInstanceCreateInfo</code> struct.</p>
+<div class="fragment"><div class="line">VkInstanceCreateInfo ici;</div>
+<div class="line"> </div>
+<div class="line">memset(&amp;ici, 0, <span class="keyword">sizeof</span>(ici));</div>
+<div class="line">ici.enabledExtensionCount = count;</div>
+<div class="line">ici.ppEnabledExtensionNames = extensions;</div>
+<div class="line">...</div>
+</div><!-- fragment --><p >Additional extensions may be required by future versions of GLFW. You should check whether any extensions you wish to enable are already in the returned array, as it is an error to specify an extension more than once in the <code>VkInstanceCreateInfo</code> struct.</p>
+<p ><b>macOS:</b> MoltenVK is (as of July 2022) not yet a fully conformant implementation of Vulkan. As of Vulkan SDK 1.3.216.0, this means you must also enable the <code>VK_KHR_portability_enumeration</code> instance extension and set the <code>VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR</code> bit in the instance creation info flags for MoltenVK to show up in the list of physical devices. For more information, see the Vulkan and MoltenVK documentation.</p>
+<h1><a class="anchor" id="vulkan_present"></a>
+Querying for Vulkan presentation support</h1>
+<p >Not every queue family of every Vulkan device can present images to surfaces. To check whether a specific queue family of a physical device supports image presentation without first having to create a window and surface, call <a class="el" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a>(instance, physical_device, queue_family_index))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Queue family supports image presentation</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__vulkan_html_gaff3823355cdd7e2f3f9f4d9ea9518d92"><div class="ttname"><a href="group__vulkan.html#gaff3823355cdd7e2f3f9f4d9ea9518d92">glfwGetPhysicalDevicePresentationSupport</a></div><div class="ttdeci">int glfwGetPhysicalDevicePresentationSupport(VkInstance instance, VkPhysicalDevice device, uint32_t queuefamily)</div><div class="ttdoc">Returns whether the specified queue family can present images.</div></div>
+</div><!-- fragment --><p >The <code>VK_KHR_surface</code> extension additionally provides the <code>vkGetPhysicalDeviceSurfaceSupportKHR</code> function, which performs the same test on an existing Vulkan surface.</p>
+<h1><a class="anchor" id="vulkan_window"></a>
+Creating the window</h1>
+<p >Unless you will be using OpenGL or OpenGL ES with the same window as Vulkan, there is no need to create a context. You can disable context creation with the <a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a> hint.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a>, <a class="code hl_define" href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a>);</div>
+<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;Window Title&quot;</span>, NULL, NULL);</div>
+<div class="ttc" id="aglfw3_8h_html_a8f6dcdc968d214ff14779564f1389264"><div class="ttname"><a href="glfw3_8h.html#a8f6dcdc968d214ff14779564f1389264">GLFW_NO_API</a></div><div class="ttdeci">#define GLFW_NO_API</div><div class="ttdef"><b>Definition:</b> glfw3.h:1036</div></div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+<div class="ttc" id="agroup__window_html_ga649309cf72a3d3de5b1348ca7936c95b"><div class="ttname"><a href="group__window.html#ga649309cf72a3d3de5b1348ca7936c95b">GLFW_CLIENT_API</a></div><div class="ttdeci">#define GLFW_CLIENT_API</div><div class="ttdoc">Context client API hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:949</div></div>
+<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+</div><!-- fragment --><p >See <a class="el" href="context_guide.html#context_less">Windows without contexts</a> for more information.</p>
+<h1><a class="anchor" id="vulkan_surface"></a>
+Creating a Vulkan window surface</h1>
+<p >You can create a Vulkan surface (as defined by the <code>VK_KHR_surface</code> extension) for a GLFW window with <a class="el" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>.</p>
+<div class="fragment"><div class="line">VkSurfaceKHR surface;</div>
+<div class="line">VkResult err = <a class="code hl_function" href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a>(instance, window, NULL, &amp;surface);</div>
+<div class="line"><span class="keywordflow">if</span> (err)</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// Window surface creation failed</span></div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__vulkan_html_ga1a24536bec3f80b08ead18e28e6ae965"><div class="ttname"><a href="group__vulkan.html#ga1a24536bec3f80b08ead18e28e6ae965">glfwCreateWindowSurface</a></div><div class="ttdeci">VkResult glfwCreateWindowSurface(VkInstance instance, GLFWwindow *window, const VkAllocationCallbacks *allocator, VkSurfaceKHR *surface)</div><div class="ttdoc">Creates a Vulkan surface for the specified window.</div></div>
+</div><!-- fragment --><p >If an OpenGL or OpenGL ES context was created on the window, the context has ownership of the presentation on the window and a Vulkan surface cannot be created.</p>
+<p >It is your responsibility to destroy the surface. GLFW does not destroy it for you. Call <code>vkDestroySurfaceKHR</code> function from the same extension to destroy it. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/window_8dox.html b/libs/glfw-3.3.8/docs/html/window_8dox.html
new file mode 100644
index 0000000..3ca2913
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/window_8dox.html
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: window.dox File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle"><div class="title">window.dox File Reference</div></div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/html/window_guide.html b/libs/glfw-3.3.8/docs/html/window_guide.html
new file mode 100644
index 0000000..f7d0c2c
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/html/window_guide.html
@@ -0,0 +1,756 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.9.4"/>
+<title>GLFW: Window guide</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="extra.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+ <div class="glfwheader">
+ <a href="https://www.glfw.org/" id="glfwhome">GLFW</a>
+ <ul class="glfwnavbar">
+ <li><a href="https://www.glfw.org/documentation.html">Documentation</a></li>
+ <li><a href="https://www.glfw.org/download.html">Download</a></li>
+ <li><a href="https://www.glfw.org/community.html">Community</a></li>
+ </ul>
+ </div>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.9.4 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+var searchBox = new SearchBox("searchBox", "search",'Search','.html');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
+$(function() {
+ initMenu('',true,false,'search.php','Search');
+ $(document).ready(function() { init_search(); });
+});
+/* @license-end */
+</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div><div class="header">
+ <div class="headertitle"><div class="title">Window guide </div></div>
+</div><!--header-->
+<div class="contents">
+<div class="toc"><h3>Table of Contents</h3>
+<ul><li class="level1"><a href="#window_object">Window objects</a><ul><li class="level2"><a href="#window_creation">Window creation</a><ul><li class="level3"><a href="#window_full_screen">Full screen windows</a></li>
+<li class="level3"><a href="#window_windowed_full_screen">&quot;Windowed full screen&quot; windows</a></li>
+</ul>
+</li>
+<li class="level2"><a href="#window_destruction">Window destruction</a></li>
+<li class="level2"><a href="#window_hints">Window creation hints</a><ul><li class="level3"><a href="#window_hints_hard">Hard and soft constraints</a></li>
+<li class="level3"><a href="#window_hints_wnd">Window related hints</a></li>
+<li class="level3"><a href="#window_hints_fb">Framebuffer related hints</a></li>
+<li class="level3"><a href="#window_hints_mtr">Monitor related hints</a></li>
+<li class="level3"><a href="#window_hints_ctx">Context related hints</a></li>
+<li class="level3"><a href="#window_hints_osx">macOS specific window hints</a></li>
+<li class="level3"><a href="#window_hints_x11">X11 specific window hints</a></li>
+<li class="level3"><a href="#window_hints_values">Supported and default values</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="level1"><a href="#window_events">Window event processing</a></li>
+<li class="level1"><a href="#window_properties">Window properties and events</a><ul><li class="level2"><a href="#window_userptr">User pointer</a></li>
+<li class="level2"><a href="#window_close">Window closing and close flag</a></li>
+<li class="level2"><a href="#window_size">Window size</a></li>
+<li class="level2"><a href="#window_fbsize">Framebuffer size</a></li>
+<li class="level2"><a href="#window_scale">Window content scale</a></li>
+<li class="level2"><a href="#window_sizelimits">Window size limits</a></li>
+<li class="level2"><a href="#window_pos">Window position</a></li>
+<li class="level2"><a href="#window_title">Window title</a></li>
+<li class="level2"><a href="#window_icon">Window icon</a></li>
+<li class="level2"><a href="#window_monitor">Window monitor</a></li>
+<li class="level2"><a href="#window_iconify">Window iconification</a></li>
+<li class="level2"><a href="#window_maximize">Window maximization</a></li>
+<li class="level2"><a href="#window_hide">Window visibility</a></li>
+<li class="level2"><a href="#window_focus">Window input focus</a></li>
+<li class="level2"><a href="#window_attention">Window attention request</a></li>
+<li class="level2"><a href="#window_refresh">Window damage and refresh</a></li>
+<li class="level2"><a href="#window_transparency">Window transparency</a></li>
+<li class="level2"><a href="#window_attribs">Window attributes</a><ul><li class="level3"><a href="#window_attribs_wnd">Window related attributes</a></li>
+<li class="level3"><a href="#window_attribs_ctx">Context related attributes</a></li>
+<li class="level3"><a href="#window_attribs_fb">Framebuffer related attributes</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li class="level1"><a href="#buffer_swap">Buffer swapping</a></li>
+</ul>
+</div>
+<div class="textblock"><p >This guide introduces the window related functions of GLFW. For details on a specific function in this category, see the <a class="el" href="group__window.html">Window reference</a>. There are also guides for the other areas of GLFW.</p>
+<ul>
+<li><a class="el" href="intro_guide.html">Introduction to the API</a></li>
+<li><a class="el" href="context_guide.html">Context guide</a></li>
+<li><a class="el" href="vulkan_guide.html">Vulkan guide</a></li>
+<li><a class="el" href="monitor_guide.html">Monitor guide</a></li>
+<li><a class="el" href="input_guide.html">Input guide</a></li>
+</ul>
+<h1><a class="anchor" id="window_object"></a>
+Window objects</h1>
+<p >The <a class="el" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a> object encapsulates both a window and a context. They are created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> and destroyed with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>, or <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a>, if any remain. As the window and context are inseparably linked, the object pointer is used as both a context and window handle.</p>
+<p >To see the event stream provided to the various window related callbacks, run the <code>events</code> test program.</p>
+<h2><a class="anchor" id="window_creation"></a>
+Window creation</h2>
+<p >A window and its OpenGL or OpenGL ES context are created with <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>, which returns a handle to the created window object. For example, this creates a 640 by 480 windowed mode window:</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, NULL, NULL);</div>
+<div class="ttc" id="agroup__window_html_ga3555a418df92ad53f917597fe2f64aeb"><div class="ttname"><a href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a></div><div class="ttdeci">GLFWwindow * glfwCreateWindow(int width, int height, const char *title, GLFWmonitor *monitor, GLFWwindow *share)</div><div class="ttdoc">Creates a window and its associated context.</div></div>
+<div class="ttc" id="agroup__window_html_ga3c96d80d363e67d13a41b5d1821f3242"><div class="ttname"><a href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a></div><div class="ttdeci">struct GLFWwindow GLFWwindow</div><div class="ttdoc">Opaque window object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1185</div></div>
+</div><!-- fragment --><p >If window creation fails, <code>NULL</code> will be returned, so it is necessary to check the return value.</p>
+<p >The window handle is passed to all window related functions and is provided to along with all input events, so event handlers can tell which window received the event.</p>
+<h3><a class="anchor" id="window_full_screen"></a>
+Full screen windows</h3>
+<p >To create a full screen window, you need to specify which monitor the window should use. In most cases, the user's primary monitor is a good choice. For more information about retrieving monitors, see <a class="el" href="monitor_guide.html#monitor_monitors">Retrieving monitors</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(640, 480, <span class="stringliteral">&quot;My Title&quot;</span>, <a class="code hl_function" href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a>(), NULL);</div>
+<div class="ttc" id="agroup__monitor_html_gac3adb24947eb709e1874028272e5dfc5"><div class="ttname"><a href="group__monitor.html#gac3adb24947eb709e1874028272e5dfc5">glfwGetPrimaryMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetPrimaryMonitor(void)</div><div class="ttdoc">Returns the primary monitor.</div></div>
+</div><!-- fragment --><p >Full screen windows cover the entire display area of a monitor, have no border or decorations.</p>
+<p >Windowed mode windows can be made full screen by setting a monitor with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>, and full screen ones can be made windowed by unsetting it with the same function.</p>
+<p >Each field of the <a class="el" href="structGLFWvidmode.html">GLFWvidmode</a> structure corresponds to a function parameter or window hint and combine to form the <em>desired video mode</em> for that window. The supported video mode most closely matching the desired video mode will be set for the chosen monitor as long as the window has input focus. For more information about retrieving video modes, see <a class="el" href="monitor_guide.html#monitor_modes">Video modes</a>.</p>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Video mode field </th><th class="markdownTableHeadNone">Corresponds to </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode.width</a> </td><td class="markdownTableBodyNone"><code>width</code> parameter of <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode.height</a> </td><td class="markdownTableBodyNone"><code>height</code> parameter of <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode.redBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_RED_BITS">GLFW_RED_BITS</a> hint </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode.greenBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_GREEN_BITS">GLFW_GREEN_BITS</a> hint </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode.blueBits</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_BLUE_BITS">GLFW_BLUE_BITS</a> hint </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone"><a class="el" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode.refreshRate</a> </td><td class="markdownTableBodyNone"><a class="el" href="window_guide.html#GLFW_REFRESH_RATE">GLFW_REFRESH_RATE</a> hint </td></tr>
+</table>
+<p >Once you have a full screen window, you can change its resolution, refresh rate and monitor with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. If you only need change its resolution you can also call <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>. In all cases, the new video mode will be selected the same way as the video mode chosen by <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>. If the window has an OpenGL or OpenGL ES context, it will be unaffected.</p>
+<p >By default, the original video mode of the monitor will be restored and the window iconified if it loses input focus, to allow the user to switch back to the desktop. This behavior can be disabled with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint, for example if you wish to simultaneously cover multiple monitors with full screen windows.</p>
+<p >If a monitor is disconnected, all windows that are full screen on that monitor will be switched to windowed mode. See <a class="el" href="monitor_guide.html#monitor_event">Monitor configuration changes</a> for more information.</p>
+<h3><a class="anchor" id="window_windowed_full_screen"></a>
+"Windowed full screen" windows</h3>
+<p >If the closest match for the desired video mode is the current one, the video mode will not be changed, making window creation faster and application switching much smoother. This is sometimes called <em>windowed full screen</em> or <em>borderless full screen</em> window and counts as a full screen window. To create such a window, request the current video mode.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">redBits</a>);</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">greenBits</a>);</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">blueBits</a>);</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window = <a class="code hl_function" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>(mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, <span class="stringliteral">&quot;My Title&quot;</span>, monitor, NULL);</div>
+<div class="ttc" id="agroup__monitor_html_gaba376fa7e76634b4788bddc505d6c9d5"><div class="ttname"><a href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a></div><div class="ttdeci">const GLFWvidmode * glfwGetVideoMode(GLFWmonitor *monitor)</div><div class="ttdoc">Returns the current mode of the specified monitor.</div></div>
+<div class="ttc" id="agroup__window_html_ga0f20825e6e47ee8ba389024519682212"><div class="ttname"><a href="group__window.html#ga0f20825e6e47ee8ba389024519682212">GLFW_REFRESH_RATE</a></div><div class="ttdeci">#define GLFW_REFRESH_RATE</div><div class="ttdoc">Monitor refresh rate hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:937</div></div>
+<div class="ttc" id="agroup__window_html_ga7d9c8c62384b1e2821c4dc48952d2033"><div class="ttname"><a href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a></div><div class="ttdeci">void glfwWindowHint(int hint, int value)</div><div class="ttdoc">Sets the specified window hint to the desired value.</div></div>
+<div class="ttc" id="agroup__window_html_gab292ea403db6d514537b515311bf9ae3"><div class="ttname"><a href="group__window.html#gab292ea403db6d514537b515311bf9ae3">GLFW_BLUE_BITS</a></div><div class="ttdeci">#define GLFW_BLUE_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:877</div></div>
+<div class="ttc" id="agroup__window_html_gaf78ed8e417dbcc1e354906cc2708c982"><div class="ttname"><a href="group__window.html#gaf78ed8e417dbcc1e354906cc2708c982">GLFW_RED_BITS</a></div><div class="ttdeci">#define GLFW_RED_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:867</div></div>
+<div class="ttc" id="agroup__window_html_gafba3b72638c914e5fb8a237dd4c50d4d"><div class="ttname"><a href="group__window.html#gafba3b72638c914e5fb8a237dd4c50d4d">GLFW_GREEN_BITS</a></div><div class="ttdeci">#define GLFW_GREEN_BITS</div><div class="ttdoc">Framebuffer bit depth hint.</div><div class="ttdef"><b>Definition:</b> glfw3.h:872</div></div>
+<div class="ttc" id="astructGLFWvidmode_html"><div class="ttname"><a href="structGLFWvidmode.html">GLFWvidmode</a></div><div class="ttdoc">Video mode type.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1658</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a292fdd281f3485fb3ff102a5bda43faa"><div class="ttname"><a href="structGLFWvidmode.html#a292fdd281f3485fb3ff102a5bda43faa">GLFWvidmode::greenBits</a></div><div class="ttdeci">int greenBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1670</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a6066c4ecd251098700062d3b735dba1b"><div class="ttname"><a href="structGLFWvidmode.html#a6066c4ecd251098700062d3b735dba1b">GLFWvidmode::redBits</a></div><div class="ttdeci">int redBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1667</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a698dcb200562051a7249cb6ae154c71d"><div class="ttname"><a href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">GLFWvidmode::width</a></div><div class="ttdeci">int width</div><div class="ttdef"><b>Definition:</b> glfw3.h:1661</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_a791bdd6c7697b09f7e9c97054bf05649"><div class="ttname"><a href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">GLFWvidmode::refreshRate</a></div><div class="ttdeci">int refreshRate</div><div class="ttdef"><b>Definition:</b> glfw3.h:1676</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_ac65942a5f6981695517437a9d571d03c"><div class="ttname"><a href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">GLFWvidmode::height</a></div><div class="ttdeci">int height</div><div class="ttdef"><b>Definition:</b> glfw3.h:1664</div></div>
+<div class="ttc" id="astructGLFWvidmode_html_af310977f58d2e3b188175b6e3d314047"><div class="ttname"><a href="structGLFWvidmode.html#af310977f58d2e3b188175b6e3d314047">GLFWvidmode::blueBits</a></div><div class="ttdeci">int blueBits</div><div class="ttdef"><b>Definition:</b> glfw3.h:1673</div></div>
+</div><!-- fragment --><p >This also works for windowed mode windows that are made full screen.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, monitor, 0, 0, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
+<div class="ttc" id="agroup__window_html_ga81c76c418af80a1cce7055bccb0ae0a7"><div class="ttname"><a href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a></div><div class="ttdeci">void glfwSetWindowMonitor(GLFWwindow *window, GLFWmonitor *monitor, int xpos, int ypos, int width, int height, int refreshRate)</div><div class="ttdoc">Sets the mode, monitor, video mode and placement of a window.</div></div>
+</div><!-- fragment --><p >Note that <a class="el" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a> returns the <em>current</em> video mode of a monitor, so if you already have a full screen window on that monitor that you want to make windowed full screen, you need to have saved the desktop resolution before.</p>
+<h2><a class="anchor" id="window_destruction"></a>
+Window destruction</h2>
+<p >When a window is no longer needed, destroy it with <a class="el" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_gacdf43e51376051d2c091662e9fe3d7b2"><div class="ttname"><a href="group__window.html#gacdf43e51376051d2c091662e9fe3d7b2">glfwDestroyWindow</a></div><div class="ttdeci">void glfwDestroyWindow(GLFWwindow *window)</div><div class="ttdoc">Destroys the specified window and its context.</div></div>
+</div><!-- fragment --><p >Window destruction always succeeds. Before the actual destruction, all callbacks are removed so no further events will be delivered for the window. All windows remaining when <a class="el" href="group__init.html#gaaae48c0a18607ea4a4ba951d939f0901">glfwTerminate</a> is called are destroyed as well.</p>
+<p >When a full screen window is destroyed, the original video mode of its monitor is restored, but the gamma ramp is left untouched.</p>
+<h2><a class="anchor" id="window_hints"></a>
+Window creation hints</h2>
+<p >There are a number of hints that can be set before the creation of a window and context. Some affect the window itself, others affect the framebuffer or context. These hints are set to their default values each time the library is initialized with <a class="el" href="group__init.html#ga317aac130a235ab08c6db0834907d85e">glfwInit</a>. Integer value hints can be set individually with <a class="el" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a> and string value hints with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>. You can reset all at once to their defaults with <a class="el" href="group__window.html#gaa77c4898dfb83344a6b4f76aa16b9a4a">glfwDefaultWindowHints</a>.</p>
+<p >Some hints are platform specific. These are always valid to set on any platform but they will only affect their specific platform. Other platforms will ignore them. Setting these hints requires no platform specific headers or calls.</p>
+<dl class="section note"><dt>Note</dt><dd>Window hints need to be set before the creation of the window and context you wish to have the specified attributes. They function as additional arguments to <a class="el" href="group__window.html#ga3555a418df92ad53f917597fe2f64aeb">glfwCreateWindow</a>.</dd></dl>
+<h3><a class="anchor" id="window_hints_hard"></a>
+Hard and soft constraints</h3>
+<p >Some window hints are hard constraints. These must match the available capabilities <em>exactly</em> for window and context creation to succeed. Hints that are not hard constraints are matched as closely as possible, but the resulting context and framebuffer may differ from what these hints requested.</p>
+<p >The following hints are always hard constraints:</p><ul>
+<li><a class="el" href="window_guide.html#GLFW_STEREO">GLFW_STEREO</a></li>
+<li><a class="el" href="window_guide.html#GLFW_DOUBLEBUFFER">GLFW_DOUBLEBUFFER</a></li>
+<li><a class="el" href="window_guide.html#GLFW_CLIENT_API_hint">GLFW_CLIENT_API</a></li>
+<li><a class="el" href="window_guide.html#GLFW_CONTEXT_CREATION_API_hint">GLFW_CONTEXT_CREATION_API</a></li>
+</ul>
+<p >The following additional hints are hard constraints when requesting an OpenGL context, but are ignored when requesting an OpenGL ES context:</p><ul>
+<li><a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a></li>
+<li><a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a></li>
+</ul>
+<h3><a class="anchor" id="window_hints_wnd"></a>
+Window related hints</h3>
+<p ><a class="anchor" id="GLFW_RESIZABLE_hint"></a><b>GLFW_RESIZABLE</b> specifies whether the windowed mode window will be resizable <em>by the user</em>. The window will still be resizable using the <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a> function. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen and undecorated windows.</p>
+<p ><a class="anchor" id="GLFW_VISIBLE_hint"></a><b>GLFW_VISIBLE</b> specifies whether the windowed mode window will be initially visible. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
+<p ><a class="anchor" id="GLFW_DECORATED_hint"></a><b>GLFW_DECORATED</b> specifies whether the windowed mode window will have window decorations such as a border, a close widget, etc. An undecorated window will not be resizable by the user but will still allow the user to generate close events on some platforms. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
+<p ><a class="anchor" id="GLFW_FOCUSED_hint"></a><b>GLFW_FOCUSED</b> specifies whether the windowed mode window will be given input focus when created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen and initially hidden windows.</p>
+<p ><a class="anchor" id="GLFW_AUTO_ICONIFY_hint"></a><b>GLFW_AUTO_ICONIFY</b> specifies whether the full screen window will automatically iconify and restore the previous video mode on input focus loss. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for windowed mode windows.</p>
+<p ><a class="anchor" id="GLFW_FLOATING_hint"></a><b>GLFW_FLOATING</b> specifies whether the windowed mode window will be floating above other regular windows, also called topmost or always-on-top. This is intended primarily for debugging purposes and cannot be used to implement proper full screen windows. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
+<p ><a class="anchor" id="GLFW_MAXIMIZED_hint"></a><b>GLFW_MAXIMIZED</b> specifies whether the windowed mode window will be maximized when created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for full screen windows.</p>
+<p ><a class="anchor" id="GLFW_CENTER_CURSOR_hint"></a><b>GLFW_CENTER_CURSOR</b> specifies whether the cursor should be centered over newly created full screen windows. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This hint is ignored for windowed mode windows.</p>
+<p ><a class="anchor" id="GLFW_TRANSPARENT_FRAMEBUFFER_hint"></a><b>GLFW_TRANSPARENT_FRAMEBUFFER</b> specifies whether the window framebuffer will be transparent. If enabled and supported by the system, the window framebuffer alpha channel will be used to combine the framebuffer with the background. This does not affect window decorations. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<p ><a class="anchor" id="GLFW_FOCUS_ON_SHOW_hint"></a><b>GLFW_FOCUS_ON_SHOW</b> specifies whether the window will be given input focus when <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> is called. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<p ><a class="anchor" id="GLFW_SCALE_TO_MONITOR"></a><b>GLFW_SCALE_TO_MONITOR</b> specified whether the window content area should be resized based on the <a class="el" href="monitor_guide.html#monitor_scale">monitor content scale</a> of any monitor it is placed on. This includes the initial placement when the window is created. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<p >This hint only has an effect on platforms where screen coordinates and pixels always map 1:1 such as Windows and X11. On platforms like macOS the resolution of the framebuffer is changed independently of the window size.</p>
+<h3><a class="anchor" id="window_hints_fb"></a>
+Framebuffer related hints</h3>
+<p ><a class="anchor" id="GLFW_RED_BITS"></a><a class="anchor" id="GLFW_GREEN_BITS"></a><a class="anchor" id="GLFW_BLUE_BITS"></a><a class="anchor" id="GLFW_ALPHA_BITS"></a><a class="anchor" id="GLFW_DEPTH_BITS"></a><a class="anchor" id="GLFW_STENCIL_BITS"></a><b>GLFW_RED_BITS</b>, <b>GLFW_GREEN_BITS</b>, <b>GLFW_BLUE_BITS</b>, <b>GLFW_ALPHA_BITS</b>, <b>GLFW_DEPTH_BITS</b> and <b>GLFW_STENCIL_BITS</b> specify the desired bit depths of the various components of the default framebuffer. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
+<p ><a class="anchor" id="GLFW_ACCUM_RED_BITS"></a><a class="anchor" id="GLFW_ACCUM_GREEN_BITS"></a><a class="anchor" id="GLFW_ACCUM_BLUE_BITS"></a><a class="anchor" id="GLFW_ACCUM_ALPHA_BITS"></a><b>GLFW_ACCUM_RED_BITS</b>, <b>GLFW_ACCUM_GREEN_BITS</b>, <b>GLFW_ACCUM_BLUE_BITS</b> and <b>GLFW_ACCUM_ALPHA_BITS</b> specify the desired bit depths of the various components of the accumulation buffer. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
+<p >Accumulation buffers are a legacy OpenGL feature and should not be used in new code.</p>
+<p ><a class="anchor" id="GLFW_AUX_BUFFERS"></a><b>GLFW_AUX_BUFFERS</b> specifies the desired number of auxiliary buffers. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
+<p >Auxiliary buffers are a legacy OpenGL feature and should not be used in new code.</p>
+<p ><a class="anchor" id="GLFW_STEREO"></a><b>GLFW_STEREO</b> specifies whether to use OpenGL stereoscopic rendering. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is a hard constraint.</p>
+<p ><a class="anchor" id="GLFW_SAMPLES"></a><b>GLFW_SAMPLES</b> specifies the desired number of samples to use for multisampling. Zero disables multisampling. A value of <code>GLFW_DONT_CARE</code> means the application has no preference.</p>
+<p ><a class="anchor" id="GLFW_SRGB_CAPABLE"></a><b>GLFW_SRGB_CAPABLE</b> specifies whether the framebuffer should be sRGB capable. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<dl class="section note"><dt>Note</dt><dd><b>OpenGL:</b> If enabled and supported by the system, the <code>GL_FRAMEBUFFER_SRGB</code> enable will control sRGB rendering. By default, sRGB rendering will be disabled.</dd>
+<dd>
+<b>OpenGL ES:</b> If enabled and supported by the system, the context will always have sRGB rendering enabled.</dd></dl>
+<p><a class="anchor" id="GLFW_DOUBLEBUFFER"></a><b>GLFW_DOUBLEBUFFER</b> specifies whether the framebuffer should be double buffered. You nearly always want to use double buffering. This is a hard constraint. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<h3><a class="anchor" id="window_hints_mtr"></a>
+Monitor related hints</h3>
+<p ><a class="anchor" id="GLFW_REFRESH_RATE"></a><b>GLFW_REFRESH_RATE</b> specifies the desired refresh rate for full screen windows. A value of <code>GLFW_DONT_CARE</code> means the highest available refresh rate will be used. This hint is ignored for windowed mode windows.</p>
+<h3><a class="anchor" id="window_hints_ctx"></a>
+Context related hints</h3>
+<p ><a class="anchor" id="GLFW_CLIENT_API_hint"></a><b>GLFW_CLIENT_API</b> specifies which client API to create the context for. Possible values are <code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> and <code>GLFW_NO_API</code>. This is a hard constraint.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_CREATION_API_hint"></a><b>GLFW_CONTEXT_CREATION_API</b> specifies which context creation API to use to create the context. Possible values are <code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> and <code>GLFW_OSMESA_CONTEXT_API</code>. This is a hard constraint. If no client API is requested, this hint is ignored.</p>
+<p >An <a class="el" href="context_guide.html#context_glext_auto">extension loader library</a> that assumes it knows which API was used to create the current context may fail if you change this hint. This can be resolved by having it load functions via <a class="el" href="group__context.html#ga35f1837e6f666781842483937612f163">glfwGetProcAddress</a>.</p>
+<dl class="section note"><dt>Note</dt><dd><b>Wayland:</b> The EGL API <em>is</em> the native context creation API, so this hint will have no effect.</dd>
+<dd>
+<b>X11:</b> On some Linux systems, creating contexts via both the native and EGL APIs in a single process will cause the application to segfault. Stick to one API or the other on Linux for now.</dd>
+<dd>
+<b>OSMesa:</b> As its name implies, an OpenGL context created with OSMesa does not update the window contents when its buffers are swapped. Use OpenGL functions or the OSMesa native access functions <a class="el" href="group__native.html#ga3b36e3e3dcf308b776427b6bd73cc132">glfwGetOSMesaColorBuffer</a> and <a class="el" href="group__native.html#ga6b64039ffc88a7a2f57f0956c0c75d53">glfwGetOSMesaDepthBuffer</a> to retrieve the framebuffer contents.</dd></dl>
+<p><a class="anchor" id="GLFW_CONTEXT_VERSION_MAJOR_hint"></a><a class="anchor" id="GLFW_CONTEXT_VERSION_MINOR_hint"></a><b>GLFW_CONTEXT_VERSION_MAJOR</b> and <b>GLFW_CONTEXT_VERSION_MINOR</b> specify the client API version that the created context must be compatible with. The exact behavior of these hints depend on the requested client API.</p>
+<p >While there is no way to ask the driver for a context of the highest supported version, GLFW will attempt to provide this when you ask for a version 1.0 context, which is the default for these hints.</p>
+<p >Do not confuse these hints with <a class="el" href="group__init.html#ga6337d9ea43b22fc529b2bba066b4a576">GLFW_VERSION_MAJOR</a> and <a class="el" href="group__init.html#gaf80d40f0aea7088ff337606e9c48f7a3">GLFW_VERSION_MINOR</a>, which provide the API version of the GLFW header.</p>
+<dl class="section note"><dt>Note</dt><dd><b>OpenGL:</b> These hints are not hard constraints, but creation will fail if the OpenGL version of the created context is less than the one requested. It is therefore perfectly safe to use the default of version 1.0 for legacy code and you will still get backwards-compatible contexts of version 3.0 and above when available.</dd>
+<dd>
+<b>OpenGL ES:</b> These hints are not hard constraints, but creation will fail if the OpenGL ES version of the created context is less than the one requested. Additionally, OpenGL ES 1.x cannot be returned if 2.0 or later was requested, and vice versa. This is because OpenGL ES 3.x is backward compatible with 2.0, but OpenGL ES 2.0 is not backward compatible with 1.x.</dd>
+<dd>
+<b>macOS:</b> The OS only supports forward-compatible core profile contexts for OpenGL versions 3.2 and later. Before creating an OpenGL context of version 3.2 or later you must set the <a class="el" href="window_guide.html#GLFW_OPENGL_FORWARD_COMPAT_hint">GLFW_OPENGL_FORWARD_COMPAT</a> and <a class="el" href="window_guide.html#GLFW_OPENGL_PROFILE_hint">GLFW_OPENGL_PROFILE</a> hints accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.</dd></dl>
+<p><a class="anchor" id="GLFW_OPENGL_FORWARD_COMPAT_hint"></a><b>GLFW_OPENGL_FORWARD_COMPAT</b> specifies whether the OpenGL context should be forward-compatible, i.e. one where all functionality deprecated in the requested version of OpenGL is removed. This must only be used if the requested OpenGL version is 3.0 or above. If OpenGL ES is requested, this hint is ignored.</p>
+<p >Forward-compatibility is described in detail in the <a href="https://www.opengl.org/registry/">OpenGL Reference Manual</a>.</p>
+<p ><a class="anchor" id="GLFW_OPENGL_DEBUG_CONTEXT_hint"></a><b>GLFW_OPENGL_DEBUG_CONTEXT</b> specifies whether the context should be created in debug mode, which may provide additional error and diagnostic reporting functionality. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>.</p>
+<p >Debug contexts for OpenGL and OpenGL ES are described in detail by the <a href="https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt">GL_KHR_debug</a> extension.</p>
+<p ><a class="anchor" id="GLFW_OPENGL_PROFILE_hint"></a><b>GLFW_OPENGL_PROFILE</b> specifies which OpenGL profile to create the context for. Possible values are one of <code>GLFW_OPENGL_CORE_PROFILE</code> or <code>GLFW_OPENGL_COMPAT_PROFILE</code>, or <code>GLFW_OPENGL_ANY_PROFILE</code> to not request a specific profile. If requesting an OpenGL version below 3.2, <code>GLFW_OPENGL_ANY_PROFILE</code> must be used. If OpenGL ES is requested, this hint is ignored.</p>
+<p >OpenGL profiles are described in detail in the <a href="https://www.opengl.org/registry/">OpenGL Reference Manual</a>.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_ROBUSTNESS_hint"></a><b>GLFW_CONTEXT_ROBUSTNESS</b> specifies the robustness strategy to be used by the context. This can be one of <code>GLFW_NO_RESET_NOTIFICATION</code> or <code>GLFW_LOSE_CONTEXT_ON_RESET</code>, or <code>GLFW_NO_ROBUSTNESS</code> to not request a robustness strategy.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_RELEASE_BEHAVIOR_hint"></a><b>GLFW_CONTEXT_RELEASE_BEHAVIOR</b> specifies the release behavior to be used by the context. Possible values are one of <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code>. If the behavior is <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, the default behavior of the context creation API will be used. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code>, the pipeline will be flushed whenever the context is released from being the current one. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_NONE</code>, the pipeline will not be flushed on release.</p>
+<p >Context release behaviors are described in detail by the <a href="https://www.opengl.org/registry/specs/KHR/context_flush_control.txt">GL_KHR_context_flush_control</a> extension.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_NO_ERROR_hint"></a><b>GLFW_CONTEXT_NO_ERROR</b> specifies whether errors should be generated by the context. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. If enabled, situations that would have generated errors instead cause undefined behavior.</p>
+<p >The no error mode for OpenGL and OpenGL ES is described in detail by the <a href="https://www.opengl.org/registry/specs/KHR/no_error.txt">GL_KHR_no_error</a> extension.</p>
+<h3><a class="anchor" id="window_hints_osx"></a>
+macOS specific window hints</h3>
+<p ><a class="anchor" id="GLFW_COCOA_RETINA_FRAMEBUFFER_hint"></a><b>GLFW_COCOA_RETINA_FRAMEBUFFER</b> specifies whether to use full resolution framebuffers on Retina displays. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is ignored on other platforms.</p>
+<p ><a class="anchor" id="GLFW_COCOA_FRAME_NAME_hint"></a><b>GLFW_COCOA_FRAME_NAME</b> specifies the UTF-8 encoded name to use for autosaving the window frame, or if empty disables frame autosaving for the window. This is ignored on other platforms. This is set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
+<p ><a class="anchor" id="GLFW_COCOA_GRAPHICS_SWITCHING_hint"></a><b>GLFW_COCOA_GRAPHICS_SWITCHING</b> specifies whether to in Automatic Graphics Switching, i.e. to allow the system to choose the integrated GPU for the OpenGL context and move it between GPUs if necessary or whether to force it to always run on the discrete GPU. This only affects systems with both integrated and discrete GPUs. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. This is ignored on other platforms.</p>
+<p >Simpler programs and tools may want to enable this to save power, while games and other applications performing advanced rendering will want to leave it disabled.</p>
+<p >A bundled application that wishes to participate in Automatic Graphics Switching should also declare this in its <code>Info.plist</code> by setting the <code>NSSupportsAutomaticGraphicsSwitching</code> key to <code>true</code>.</p>
+<h3><a class="anchor" id="window_hints_x11"></a>
+X11 specific window hints</h3>
+<p ><a class="anchor" id="GLFW_X11_CLASS_NAME_hint"></a><a class="anchor" id="GLFW_X11_INSTANCE_NAME_hint"></a><b>GLFW_X11_CLASS_NAME</b> and <b>GLFW_X11_INSTANCE_NAME</b> specifies the desired ASCII encoded class and instance parts of the ICCCM <code>WM_CLASS</code> window property. These are set with <a class="el" href="group__window.html#ga8cb2782861c9d997bcf2dea97f363e5f">glfwWindowHintString</a>.</p>
+<h3><a class="anchor" id="window_hints_values"></a>
+Supported and default values</h3>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Window hint </th><th class="markdownTableHeadNone">Default value </th><th class="markdownTableHeadNone">Supported values </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_RESIZABLE </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_VISIBLE </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_DECORATED </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_FOCUSED </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_AUTO_ICONIFY </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_FLOATING </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_MAXIMIZED </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_CENTER_CURSOR </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_TRANSPARENT_FRAMEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_FOCUS_ON_SHOW </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_SCALE_TO_MONITOR </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_RED_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_GREEN_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_BLUE_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_ALPHA_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_DEPTH_BITS </td><td class="markdownTableBodyNone">24 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_STENCIL_BITS </td><td class="markdownTableBodyNone">8 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_ACCUM_RED_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_ACCUM_GREEN_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_ACCUM_BLUE_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_ACCUM_ALPHA_BITS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_AUX_BUFFERS </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_SAMPLES </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_REFRESH_RATE </td><td class="markdownTableBodyNone"><code>GLFW_DONT_CARE</code> </td><td class="markdownTableBodyNone">0 to <code>INT_MAX</code> or <code>GLFW_DONT_CARE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_STEREO </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_SRGB_CAPABLE </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_DOUBLEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_CLIENT_API </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_API</code> </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> or <code>GLFW_NO_API</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_CONTEXT_CREATION_API </td><td class="markdownTableBodyNone"><code>GLFW_NATIVE_CONTEXT_API</code> </td><td class="markdownTableBodyNone"><code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> or <code>GLFW_OSMESA_CONTEXT_API</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_CONTEXT_VERSION_MAJOR </td><td class="markdownTableBodyNone">1 </td><td class="markdownTableBodyNone">Any valid major version number of the chosen client API </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_CONTEXT_VERSION_MINOR </td><td class="markdownTableBodyNone">0 </td><td class="markdownTableBodyNone">Any valid minor version number of the chosen client API </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_CONTEXT_ROBUSTNESS </td><td class="markdownTableBodyNone"><code>GLFW_NO_ROBUSTNESS</code> </td><td class="markdownTableBodyNone"><code>GLFW_NO_ROBUSTNESS</code>, <code>GLFW_NO_RESET_NOTIFICATION</code> or <code>GLFW_LOSE_CONTEXT_ON_RESET</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_CONTEXT_RELEASE_BEHAVIOR </td><td class="markdownTableBodyNone"><code>GLFW_ANY_RELEASE_BEHAVIOR</code> </td><td class="markdownTableBodyNone"><code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_OPENGL_FORWARD_COMPAT </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_OPENGL_DEBUG_CONTEXT </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_OPENGL_PROFILE </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_ANY_PROFILE</code> </td><td class="markdownTableBodyNone"><code>GLFW_OPENGL_ANY_PROFILE</code>, <code>GLFW_OPENGL_COMPAT_PROFILE</code> or <code>GLFW_OPENGL_CORE_PROFILE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_COCOA_RETINA_FRAMEBUFFER </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_COCOA_FRAME_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">A UTF-8 encoded frame autosave name </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_COCOA_GRAPHICS_SWITCHING </td><td class="markdownTableBodyNone"><code>GLFW_FALSE</code> </td><td class="markdownTableBodyNone"><code>GLFW_TRUE</code> or <code>GLFW_FALSE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">GLFW_X11_CLASS_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">An ASCII encoded <code>WM_CLASS</code> class name </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">GLFW_X11_INSTANCE_NAME </td><td class="markdownTableBodyNone"><code>""</code> </td><td class="markdownTableBodyNone">An ASCII encoded <code>WM_CLASS</code> instance name </td></tr>
+</table>
+<h1><a class="anchor" id="window_events"></a>
+Window event processing</h1>
+<p >See <a class="el" href="input_guide.html#events">Event processing</a>.</p>
+<h1><a class="anchor" id="window_properties"></a>
+Window properties and events</h1>
+<h2><a class="anchor" id="window_userptr"></a>
+User pointer</h2>
+<p >Each window has a user pointer that can be set with <a class="el" href="group__window.html#ga3d2fc6026e690ab31a13f78bc9fd3651">glfwSetWindowUserPointer</a> and queried with <a class="el" href="group__window.html#gae77a4add0d2023ca21ff1443ced01653">glfwGetWindowUserPointer</a>. This can be used for any purpose you need and will not be modified by GLFW throughout the life-time of the window.</p>
+<p >The initial value of the pointer is <code>NULL</code>.</p>
+<h2><a class="anchor" id="window_close"></a>
+Window closing and close flag</h2>
+<p >When the user attempts to close the window, for example by clicking the close widget or using a key chord like Alt+F4, the <em>close flag</em> of the window is set. The window is however not actually destroyed and, unless you watch for this state change, nothing further happens.</p>
+<p >The current state of the close flag is returned by <a class="el" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a> and can be set or cleared directly with <a class="el" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>. A common pattern is to use the close flag as a main loop condition.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">while</span> (!<a class="code hl_function" href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a>(window))</div>
+<div class="line">{</div>
+<div class="line"> render(window);</div>
+<div class="line"> </div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a>();</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__window_html_ga15a5a1ee5b3c2ca6b15ca209a12efd14"><div class="ttname"><a href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a></div><div class="ttdeci">void glfwSwapBuffers(GLFWwindow *window)</div><div class="ttdoc">Swaps the front and back buffers of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga24e02fbfefbb81fc45320989f8140ab5"><div class="ttname"><a href="group__window.html#ga24e02fbfefbb81fc45320989f8140ab5">glfwWindowShouldClose</a></div><div class="ttdeci">int glfwWindowShouldClose(GLFWwindow *window)</div><div class="ttdoc">Checks the close flag of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_ga37bd57223967b4211d60ca1a0bf3c832"><div class="ttname"><a href="group__window.html#ga37bd57223967b4211d60ca1a0bf3c832">glfwPollEvents</a></div><div class="ttdeci">void glfwPollEvents(void)</div><div class="ttdoc">Processes all pending events.</div></div>
+</div><!-- fragment --><p >If you wish to be notified when the user attempts to close a window, set a close callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a>(window, window_close_callback);</div>
+<div class="ttc" id="agroup__window_html_gada646d775a7776a95ac000cfc1885331"><div class="ttname"><a href="group__window.html#gada646d775a7776a95ac000cfc1885331">glfwSetWindowCloseCallback</a></div><div class="ttdeci">GLFWwindowclosefun glfwSetWindowCloseCallback(GLFWwindow *window, GLFWwindowclosefun callback)</div><div class="ttdoc">Sets the close callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function is called directly <em>after</em> the close flag has been set. It can be used for example to filter close requests and clear the close flag again unless certain conditions are met.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_close_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (!time_to_close)</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a>(window, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+<div class="line">}</div>
+<div class="ttc" id="agroup__init_html_gac877fe3b627d21ef3a0a23e0a73ba8c5"><div class="ttname"><a href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a></div><div class="ttdeci">#define GLFW_FALSE</div><div class="ttdoc">Zero.</div><div class="ttdef"><b>Definition:</b> glfw3.h:321</div></div>
+<div class="ttc" id="agroup__window_html_ga49c449dde2a6f87d996f4daaa09d6708"><div class="ttname"><a href="group__window.html#ga49c449dde2a6f87d996f4daaa09d6708">glfwSetWindowShouldClose</a></div><div class="ttdeci">void glfwSetWindowShouldClose(GLFWwindow *window, int value)</div><div class="ttdoc">Sets the close flag of the specified window.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="window_size"></a>
+Window size</h2>
+<p >The size of a window can be changed with <a class="el" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>. For windowed mode windows, this sets the size, in <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a> of the <em>content area</em> or <em>content area</em> of the window. The window system may impose limits on window size.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a>(window, 640, 480);</div>
+<div class="ttc" id="agroup__window_html_ga371911f12c74c504dd8d47d832d095cb"><div class="ttname"><a href="group__window.html#ga371911f12c74c504dd8d47d832d095cb">glfwSetWindowSize</a></div><div class="ttdeci">void glfwSetWindowSize(GLFWwindow *window, int width, int height)</div><div class="ttdoc">Sets the size of the content area of the specified window.</div></div>
+</div><!-- fragment --><p >For full screen windows, the specified size becomes the new resolution of the window's desired video mode. The video mode most closely matching the new desired video mode is set immediately. The window is resized to fit the resolution of the set video mode.</p>
+<p >If you wish to be notified when a window is resized, whether by the user, the system or your own code, set a size callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a>(window, window_size_callback);</div>
+<div class="ttc" id="agroup__window_html_gad91b8b047a0c4c6033c38853864c34f8"><div class="ttname"><a href="group__window.html#gad91b8b047a0c4c6033c38853864c34f8">glfwSetWindowSizeCallback</a></div><div class="ttdeci">GLFWwindowsizefun glfwSetWindowSizeCallback(GLFWwindow *window, GLFWwindowsizefun callback)</div><div class="ttdoc">Sets the size callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives the new size, in screen coordinates, of the content area of the window when the window is resized.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_size_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+<div class="line">{</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a> for directly retrieving the current size of a window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(window, &amp;width, &amp;height);</div>
+<div class="ttc" id="agroup__window_html_gaeea7cbc03373a41fb51cfbf9f2a5d4c6"><div class="ttname"><a href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a></div><div class="ttdeci">void glfwGetWindowSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the content area of the specified window.</div></div>
+</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>Do not pass the window size to <code>glViewport</code> or other pixel-based OpenGL calls. The window size is in screen coordinates, not pixels. Use the <a class="el" href="window_guide.html#window_fbsize">framebuffer size</a>, which is in pixels, for pixel-based calls.</dd></dl>
+<p>The above functions work with the size of the content area, but decorated windows typically have title bars and window frames around this rectangle. You can retrieve the extents of these with <a class="el" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> left, top, right, bottom;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a>(window, &amp;left, &amp;top, &amp;right, &amp;bottom);</div>
+<div class="ttc" id="agroup__window_html_ga1a9fd382058c53101b21cf211898f1f1"><div class="ttname"><a href="group__window.html#ga1a9fd382058c53101b21cf211898f1f1">glfwGetWindowFrameSize</a></div><div class="ttdeci">void glfwGetWindowFrameSize(GLFWwindow *window, int *left, int *top, int *right, int *bottom)</div><div class="ttdoc">Retrieves the size of the frame of the window.</div></div>
+</div><!-- fragment --><p >The returned values are the distances, in screen coordinates, from the edges of the content area to the corresponding edges of the full window. As they are distances and not coordinates, they are always zero or positive.</p>
+<h2><a class="anchor" id="window_fbsize"></a>
+Framebuffer size</h2>
+<p >While the size of a window is measured in screen coordinates, OpenGL works with pixels. The size you pass into <code>glViewport</code>, for example, should be in pixels. On some machines screen coordinates and pixels are the same, but on others they will not be. There is a second set of functions to retrieve the size, in pixels, of the framebuffer of a window.</p>
+<p >If you wish to be notified when the framebuffer of a window is resized, whether by the user or the system, set a size callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a>(window, framebuffer_size_callback);</div>
+<div class="ttc" id="agroup__window_html_gab3fb7c3366577daef18c0023e2a8591f"><div class="ttname"><a href="group__window.html#gab3fb7c3366577daef18c0023e2a8591f">glfwSetFramebufferSizeCallback</a></div><div class="ttdeci">GLFWframebuffersizefun glfwSetFramebufferSizeCallback(GLFWwindow *window, GLFWframebuffersizefun callback)</div><div class="ttdoc">Sets the framebuffer resize callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives the new size of the framebuffer when it is resized, which can for example be used to update the OpenGL viewport.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> framebuffer_size_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height)</div>
+<div class="line">{</div>
+<div class="line"> glViewport(0, 0, width, height);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a> for directly retrieving the current size of the framebuffer of a window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a>(window, &amp;width, &amp;height);</div>
+<div class="line">glViewport(0, 0, width, height);</div>
+<div class="ttc" id="agroup__window_html_ga0e2637a4161afb283f5300c7f94785c9"><div class="ttname"><a href="group__window.html#ga0e2637a4161afb283f5300c7f94785c9">glfwGetFramebufferSize</a></div><div class="ttdeci">void glfwGetFramebufferSize(GLFWwindow *window, int *width, int *height)</div><div class="ttdoc">Retrieves the size of the framebuffer of the specified window.</div></div>
+</div><!-- fragment --><p >The size of a framebuffer may change independently of the size of a window, for example if the window is dragged between a regular monitor and a high-DPI one.</p>
+<h2><a class="anchor" id="window_scale"></a>
+Window content scale</h2>
+<p >The content scale for a window can be retrieved with <a class="el" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">float</span> xscale, yscale;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a>(window, &amp;xscale, &amp;yscale);</div>
+<div class="ttc" id="agroup__window_html_gaf5d31de9c19c4f994facea64d2b3106c"><div class="ttname"><a href="group__window.html#gaf5d31de9c19c4f994facea64d2b3106c">glfwGetWindowContentScale</a></div><div class="ttdeci">void glfwGetWindowContentScale(GLFWwindow *window, float *xscale, float *yscale)</div><div class="ttdoc">Retrieves the content scale for the specified window.</div></div>
+</div><!-- fragment --><p >The content scale is the ratio between the current DPI and the platform's default DPI. This is especially important for text and any UI elements. If the pixel dimensions of your UI scaled by this look appropriate on your machine then it should appear at a reasonable size on other machines regardless of their DPI and scaling settings. This relies on the system DPI and scaling settings being somewhat correct.</p>
+<p >On systems where each monitors can have its own content scale, the window content scale will depend on which monitor the system considers the window to be on.</p>
+<p >If you wish to be notified when the content scale of a window changes, whether because of a system setting change or because it was moved to a monitor with a different scale, set a content scale callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a>(window, window_content_scale_callback);</div>
+<div class="ttc" id="agroup__window_html_gaf2832ebb5aa6c252a2d261de002c92d6"><div class="ttname"><a href="group__window.html#gaf2832ebb5aa6c252a2d261de002c92d6">glfwSetWindowContentScaleCallback</a></div><div class="ttdeci">GLFWwindowcontentscalefun glfwSetWindowContentScaleCallback(GLFWwindow *window, GLFWwindowcontentscalefun callback)</div><div class="ttdoc">Sets the window content scale callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives the new content scale of the window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_content_scale_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">float</span> xscale, <span class="keywordtype">float</span> yscale)</div>
+<div class="line">{</div>
+<div class="line"> set_interface_scale(xscale, yscale);</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >On platforms where pixels and screen coordinates always map 1:1, the window will need to be resized to appear the same size when it is moved to a monitor with a different content scale. To have this done automatically both when the window is created and when its content scale later changes, set the <a class="el" href="window_guide.html#GLFW_SCALE_TO_MONITOR">GLFW_SCALE_TO_MONITOR</a> window hint.</p>
+<h2><a class="anchor" id="window_sizelimits"></a>
+Window size limits</h2>
+<p >The minimum and maximum size of the content area of a windowed mode window can be enforced with <a class="el" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>. The user may resize the window to any size and aspect ratio within the specified limits, unless the aspect ratio is also set.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(window, 200, 200, 400, 400);</div>
+<div class="ttc" id="agroup__window_html_gac314fa6cec7d2d307be9963e2709cc90"><div class="ttname"><a href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a></div><div class="ttdeci">void glfwSetWindowSizeLimits(GLFWwindow *window, int minwidth, int minheight, int maxwidth, int maxheight)</div><div class="ttdoc">Sets the size limits of the specified window.</div></div>
+</div><!-- fragment --><p >To specify only a minimum size or only a maximum one, set the other pair to <code>GLFW_DONT_CARE</code>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac314fa6cec7d2d307be9963e2709cc90">glfwSetWindowSizeLimits</a>(window, 640, 480, <a class="code hl_define" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>, <a class="code hl_define" href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a>);</div>
+<div class="ttc" id="aglfw3_8h_html_a7a2edf2c18446833d27d07f1b7f3d571"><div class="ttname"><a href="glfw3_8h.html#a7a2edf2c18446833d27d07f1b7f3d571">GLFW_DONT_CARE</a></div><div class="ttdeci">#define GLFW_DONT_CARE</div><div class="ttdef"><b>Definition:</b> glfw3.h:1128</div></div>
+</div><!-- fragment --><p >To disable size limits for a window, set them all to <code>GLFW_DONT_CARE</code>.</p>
+<p >The aspect ratio of the content area of a windowed mode window can be enforced with <a class="el" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>. The user may resize the window freely unless size limits are also set, but the size will be constrained to maintain the aspect ratio.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(window, 16, 9);</div>
+<div class="ttc" id="agroup__window_html_ga72ac8cb1ee2e312a878b55153d81b937"><div class="ttname"><a href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a></div><div class="ttdeci">void glfwSetWindowAspectRatio(GLFWwindow *window, int numer, int denom)</div><div class="ttdoc">Sets the aspect ratio of the specified window.</div></div>
+</div><!-- fragment --><p >The aspect ratio is specified as a numerator and denominator, corresponding to the width and height, respectively. If you want a window to maintain its current aspect ratio, use its current size as the ratio.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> width, height;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#gaeea7cbc03373a41fb51cfbf9f2a5d4c6">glfwGetWindowSize</a>(window, &amp;width, &amp;height);</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga72ac8cb1ee2e312a878b55153d81b937">glfwSetWindowAspectRatio</a>(window, width, height);</div>
+</div><!-- fragment --><p >To disable the aspect ratio limit for a window, set both terms to <code>GLFW_DONT_CARE</code>.</p>
+<p >You can have both size limits and aspect ratio set for a window, but the results are undefined if they conflict.</p>
+<h2><a class="anchor" id="window_pos"></a>
+Window position</h2>
+<p >The position of a windowed-mode window can be changed with <a class="el" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>. This moves the window so that the upper-left corner of its content area has the specified <a class="el" href="intro_guide.html#coordinate_systems">screen coordinates</a>. The window system may put limitations on window placement.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a>(window, 100, 100);</div>
+<div class="ttc" id="agroup__window_html_ga1abb6d690e8c88e0c8cd1751356dbca8"><div class="ttname"><a href="group__window.html#ga1abb6d690e8c88e0c8cd1751356dbca8">glfwSetWindowPos</a></div><div class="ttdeci">void glfwSetWindowPos(GLFWwindow *window, int xpos, int ypos)</div><div class="ttdoc">Sets the position of the content area of the specified window.</div></div>
+</div><!-- fragment --><p >If you wish to be notified when a window is moved, whether by the user, the system or your own code, set a position callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a>(window, window_pos_callback);</div>
+<div class="ttc" id="agroup__window_html_ga08bdfbba88934f9c4f92fd757979ac74"><div class="ttname"><a href="group__window.html#ga08bdfbba88934f9c4f92fd757979ac74">glfwSetWindowPosCallback</a></div><div class="ttdeci">GLFWwindowposfun glfwSetWindowPosCallback(GLFWwindow *window, GLFWwindowposfun callback)</div><div class="ttdoc">Sets the position callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives the new position, in screen coordinates, of the upper-left corner of the content area when the window is moved.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_pos_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> xpos, <span class="keywordtype">int</span> ypos)</div>
+<div class="line">{</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >There is also <a class="el" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a> for directly retrieving the current position of the content area of the window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> xpos, ypos;</div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a>(window, &amp;xpos, &amp;ypos);</div>
+<div class="ttc" id="agroup__window_html_ga73cb526c000876fd8ddf571570fdb634"><div class="ttname"><a href="group__window.html#ga73cb526c000876fd8ddf571570fdb634">glfwGetWindowPos</a></div><div class="ttdeci">void glfwGetWindowPos(GLFWwindow *window, int *xpos, int *ypos)</div><div class="ttdoc">Retrieves the position of the content area of the specified window.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="window_title"></a>
+Window title</h2>
+<p >All GLFW windows have a title, although undecorated or full screen windows may not display it or only display it in a task bar or similar interface. You can set a UTF-8 encoded window title with <a class="el" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;My Window&quot;</span>);</div>
+<div class="ttc" id="agroup__window_html_ga5d877f09e968cef7a360b513306f17ff"><div class="ttname"><a href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a></div><div class="ttdeci">void glfwSetWindowTitle(GLFWwindow *window, const char *title)</div><div class="ttdoc">Sets the title of the specified window.</div></div>
+</div><!-- fragment --><p >The specified string is copied before the function returns, so there is no need to keep it around.</p>
+<p >As long as your source file is encoded as UTF-8, you can use any Unicode characters directly in the source.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, <span class="stringliteral">&quot;ラストエグザイル&quot;</span>);</div>
+</div><!-- fragment --><p >If you are using C++11 or C11, you can use a UTF-8 string literal.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga5d877f09e968cef7a360b513306f17ff">glfwSetWindowTitle</a>(window, u8<span class="stringliteral">&quot;This is always a UTF-8 string&quot;</span>);</div>
+</div><!-- fragment --><h2><a class="anchor" id="window_icon"></a>
+Window icon</h2>
+<p >Decorated windows have icons on some platforms. You can set this icon by specifying a list of candidate images with <a class="el" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_struct" href="structGLFWimage.html">GLFWimage</a> images[2];</div>
+<div class="line">images[0] = load_icon(<span class="stringliteral">&quot;my_icon.png&quot;</span>);</div>
+<div class="line">images[1] = load_icon(<span class="stringliteral">&quot;my_icon_small.png&quot;</span>);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(window, 2, images);</div>
+<div class="ttc" id="agroup__window_html_gadd7ccd39fe7a7d1f0904666ae5932dc5"><div class="ttname"><a href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a></div><div class="ttdeci">void glfwSetWindowIcon(GLFWwindow *window, int count, const GLFWimage *images)</div><div class="ttdoc">Sets the icon for the specified window.</div></div>
+<div class="ttc" id="astructGLFWimage_html"><div class="ttname"><a href="structGLFWimage.html">GLFWimage</a></div><div class="ttdoc">Image data.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1721</div></div>
+</div><!-- fragment --><p >The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits per channel with the red channel first. The pixels are arranged canonically as sequential rows, starting from the top-left corner.</p>
+<p >To revert to the default window icon, pass in an empty image array.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gadd7ccd39fe7a7d1f0904666ae5932dc5">glfwSetWindowIcon</a>(window, 0, NULL);</div>
+</div><!-- fragment --><h2><a class="anchor" id="window_monitor"></a>
+Window monitor</h2>
+<p >Full screen windows are associated with a specific monitor. You can get the handle for this monitor with <a class="el" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_typedef" href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a>* monitor = <a class="code hl_function" href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a>(window);</div>
+<div class="ttc" id="agroup__monitor_html_ga8d9efd1cde9426692c73fe40437d0ae3"><div class="ttname"><a href="group__monitor.html#ga8d9efd1cde9426692c73fe40437d0ae3">GLFWmonitor</a></div><div class="ttdeci">struct GLFWmonitor GLFWmonitor</div><div class="ttdoc">Opaque monitor object.</div><div class="ttdef"><b>Definition:</b> glfw3.h:1173</div></div>
+<div class="ttc" id="agroup__window_html_ga4d766499ac02c60f02221a9dfab87299"><div class="ttname"><a href="group__window.html#ga4d766499ac02c60f02221a9dfab87299">glfwGetWindowMonitor</a></div><div class="ttdeci">GLFWmonitor * glfwGetWindowMonitor(GLFWwindow *window)</div><div class="ttdoc">Returns the monitor that the window uses for full screen mode.</div></div>
+</div><!-- fragment --><p >This monitor handle is one of those returned by <a class="el" href="group__monitor.html#ga70b1156d5d24e9928f145d6c864369d2">glfwGetMonitors</a>.</p>
+<p >For windowed mode windows, this function returns <code>NULL</code>. This is how to tell full screen windows from windowed mode windows.</p>
+<p >You can move windows between monitors or between full screen and windowed mode with <a class="el" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>. When making a window full screen on the same or on a different monitor, specify the desired monitor, resolution and refresh rate. The position arguments are ignored.</p>
+<div class="fragment"><div class="line"><span class="keyword">const</span> <a class="code hl_struct" href="structGLFWvidmode.html">GLFWvidmode</a>* mode = <a class="code hl_function" href="group__monitor.html#gaba376fa7e76634b4788bddc505d6c9d5">glfwGetVideoMode</a>(monitor);</div>
+<div class="line"> </div>
+<div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, monitor, 0, 0, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a698dcb200562051a7249cb6ae154c71d">width</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#ac65942a5f6981695517437a9d571d03c">height</a>, mode-&gt;<a class="code hl_variable" href="structGLFWvidmode.html#a791bdd6c7697b09f7e9c97054bf05649">refreshRate</a>);</div>
+</div><!-- fragment --><p >When making the window windowed, specify the desired position and size. The refresh rate argument is ignored.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga81c76c418af80a1cce7055bccb0ae0a7">glfwSetWindowMonitor</a>(window, NULL, xpos, ypos, width, height, 0);</div>
+</div><!-- fragment --><p >This restores any previous window settings such as whether it is decorated, floating, resizable, has size or aspect ratio limits, etc.. To restore a window that was originally windowed to its original size and position, save these before making it full screen and then pass them in as above.</p>
+<h2><a class="anchor" id="window_iconify"></a>
+Window iconification</h2>
+<p >Windows can be iconified (i.e. minimized) with <a class="el" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga1bb559c0ebaad63c5c05ad2a066779c4"><div class="ttname"><a href="group__window.html#ga1bb559c0ebaad63c5c05ad2a066779c4">glfwIconifyWindow</a></div><div class="ttdeci">void glfwIconifyWindow(GLFWwindow *window)</div><div class="ttdoc">Iconifies the specified window.</div></div>
+</div><!-- fragment --><p >When a full screen window is iconified, the original video mode of its monitor is restored until the user or application restores the window.</p>
+<p >Iconified windows can be restored with <a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>. This function also restores windows from maximization.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga52527a5904b47d802b6b4bb519cdebc7"><div class="ttname"><a href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a></div><div class="ttdeci">void glfwRestoreWindow(GLFWwindow *window)</div><div class="ttdoc">Restores the specified window.</div></div>
+</div><!-- fragment --><p >When a full screen window is restored, the desired video mode is restored to its monitor as well.</p>
+<p >If you wish to be notified when a window is iconified or restored, whether by the user, system or your own code, set an iconify callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a>(window, window_iconify_callback);</div>
+<div class="ttc" id="agroup__window_html_gac793e9efd255567b5fb8b445052cfd3e"><div class="ttname"><a href="group__window.html#gac793e9efd255567b5fb8b445052cfd3e">glfwSetWindowIconifyCallback</a></div><div class="ttdeci">GLFWwindowiconifyfun glfwSetWindowIconifyCallback(GLFWwindow *window, GLFWwindowiconifyfun callback)</div><div class="ttdoc">Sets the iconify callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives changes in the iconification state of the window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_iconify_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> iconified)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (iconified)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window was iconified</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span></div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window was restored</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >You can also get the current iconification state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> iconified = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a>);</div>
+<div class="ttc" id="agroup__window_html_ga39d44b7c056e55e581355a92d240b58a"><div class="ttname"><a href="group__window.html#ga39d44b7c056e55e581355a92d240b58a">GLFW_ICONIFIED</a></div><div class="ttdeci">#define GLFW_ICONIFIED</div><div class="ttdoc">Window iconification window attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:802</div></div>
+<div class="ttc" id="agroup__window_html_gacccb29947ea4b16860ebef42c2cb9337"><div class="ttname"><a href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a></div><div class="ttdeci">int glfwGetWindowAttrib(GLFWwindow *window, int attrib)</div><div class="ttdoc">Returns an attribute of the specified window.</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="window_maximize"></a>
+Window maximization</h2>
+<p >Windows can be maximized (i.e. zoomed) with <a class="el" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga3f541387449d911274324ae7f17ec56b"><div class="ttname"><a href="group__window.html#ga3f541387449d911274324ae7f17ec56b">glfwMaximizeWindow</a></div><div class="ttdeci">void glfwMaximizeWindow(GLFWwindow *window)</div><div class="ttdoc">Maximizes the specified window.</div></div>
+</div><!-- fragment --><p >Full screen windows cannot be maximized and passing a full screen window to this function does nothing.</p>
+<p >Maximized windows can be restored with <a class="el" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>. This function also restores windows from iconification.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga52527a5904b47d802b6b4bb519cdebc7">glfwRestoreWindow</a>(window);</div>
+</div><!-- fragment --><p >If you wish to be notified when a window is maximized or restored, whether by the user, system or your own code, set a maximize callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a>(window, window_maximize_callback);</div>
+<div class="ttc" id="agroup__window_html_gacbe64c339fbd94885e62145563b6dc93"><div class="ttname"><a href="group__window.html#gacbe64c339fbd94885e62145563b6dc93">glfwSetWindowMaximizeCallback</a></div><div class="ttdeci">GLFWwindowmaximizefun glfwSetWindowMaximizeCallback(GLFWwindow *window, GLFWwindowmaximizefun callback)</div><div class="ttdoc">Sets the maximize callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives changes in the maximization state of the window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_maximize_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> maximized)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (maximized)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window was maximized</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span></div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window was restored</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >You can also get the current maximization state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> maximized = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>);</div>
+<div class="ttc" id="agroup__window_html_gad8ccb396253ad0b72c6d4c917eb38a03"><div class="ttname"><a href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a></div><div class="ttdeci">#define GLFW_MAXIMIZED</div><div class="ttdoc">Window maximization window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:838</div></div>
+</div><!-- fragment --><p >By default, newly created windows are not maximized. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_MAXIMIZED_hint">GLFW_MAXIMIZED</a> window hint before creating the window.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gad8ccb396253ad0b72c6d4c917eb38a03">GLFW_MAXIMIZED</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="agroup__init_html_ga2744fbb29b5631bb28802dbe0cf36eba"><div class="ttname"><a href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a></div><div class="ttdeci">#define GLFW_TRUE</div><div class="ttdoc">One.</div><div class="ttdef"><b>Definition:</b> glfw3.h:312</div></div>
+</div><!-- fragment --><h2><a class="anchor" id="window_hide"></a>
+Window visibility</h2>
+<p >Windowed mode windows can be hidden with <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga49401f82a1ba5f15db5590728314d47c"><div class="ttname"><a href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a></div><div class="ttdeci">void glfwHideWindow(GLFWwindow *window)</div><div class="ttdoc">Hides the specified window.</div></div>
+</div><!-- fragment --><p >This makes the window completely invisible to the user, including removing it from the task bar, dock or window list. Full screen windows cannot be hidden and calling <a class="el" href="group__window.html#ga49401f82a1ba5f15db5590728314d47c">glfwHideWindow</a> on a full screen window does nothing.</p>
+<p >Hidden windows can be shown with <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga61be47917b72536a148300f46494fc66"><div class="ttname"><a href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a></div><div class="ttdeci">void glfwShowWindow(GLFWwindow *window)</div><div class="ttdoc">Makes the specified window visible.</div></div>
+</div><!-- fragment --><p >By default, this function will also set the input focus to that window. Set the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint to change this behavior for all newly created windows, or change the behavior for an existing window with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p >You can also get the current visibility state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> visible = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>);</div>
+<div class="ttc" id="agroup__window_html_gafb3cdc45297e06d8f1eb13adc69ca6c4"><div class="ttname"><a href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a></div><div class="ttdeci">#define GLFW_VISIBLE</div><div class="ttdoc">Window visibility window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:814</div></div>
+</div><!-- fragment --><p >By default, newly created windows are visible. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_VISIBLE_hint">GLFW_VISIBLE</a> window hint before creating the window.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#gafb3cdc45297e06d8f1eb13adc69ca6c4">GLFW_VISIBLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+</div><!-- fragment --><p >Windows created hidden are completely invisible to the user until shown. This can be useful if you need to set up your window further before showing it, for example moving it to a specific location.</p>
+<h2><a class="anchor" id="window_focus"></a>
+Window input focus</h2>
+<p >Windows can be given input focus and brought to the front with <a class="el" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga873780357abd3f3a081d71a40aae45a1"><div class="ttname"><a href="group__window.html#ga873780357abd3f3a081d71a40aae45a1">glfwFocusWindow</a></div><div class="ttdeci">void glfwFocusWindow(GLFWwindow *window)</div><div class="ttdoc">Brings the specified window to front and sets input focus.</div></div>
+</div><!-- fragment --><p >Keep in mind that it can be very disruptive to the user when a window is forced to the top. For a less disruptive way of getting the user's attention, see <a class="el" href="window_guide.html#window_attention">attention requests</a>.</p>
+<p >If you wish to be notified when a window gains or loses input focus, whether by the user, system or your own code, set a focus callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a>(window, window_focus_callback);</div>
+<div class="ttc" id="agroup__window_html_gac2d83c4a10f071baf841f6730528e66c"><div class="ttname"><a href="group__window.html#gac2d83c4a10f071baf841f6730528e66c">glfwSetWindowFocusCallback</a></div><div class="ttdeci">GLFWwindowfocusfun glfwSetWindowFocusCallback(GLFWwindow *window, GLFWwindowfocusfun callback)</div><div class="ttdoc">Sets the focus callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function receives changes in the input focus state of the window.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_focus_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window, <span class="keywordtype">int</span> focused)</div>
+<div class="line">{</div>
+<div class="line"> <span class="keywordflow">if</span> (focused)</div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window gained input focus</span></div>
+<div class="line"> }</div>
+<div class="line"> <span class="keywordflow">else</span></div>
+<div class="line"> {</div>
+<div class="line"> <span class="comment">// The window lost input focus</span></div>
+<div class="line"> }</div>
+<div class="line">}</div>
+</div><!-- fragment --><p >You can also get the current input focus state with <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">int</span> focused = <a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>);</div>
+<div class="ttc" id="agroup__window_html_ga54ddb14825a1541a56e22afb5f832a9e"><div class="ttname"><a href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a></div><div class="ttdeci">#define GLFW_FOCUSED</div><div class="ttdoc">Input focus window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:797</div></div>
+</div><!-- fragment --><p >By default, newly created windows are given input focus. You can change this behavior by setting the <a class="el" href="window_guide.html#GLFW_FOCUSED_hint">GLFW_FOCUSED</a> window hint before creating the window.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+</div><!-- fragment --><h2><a class="anchor" id="window_attention"></a>
+Window attention request</h2>
+<p >If you wish to notify the user of an event without interrupting, you can request attention with <a class="el" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a>(window);</div>
+<div class="ttc" id="agroup__window_html_ga2f8d59323fc4692c1d54ba08c863a703"><div class="ttname"><a href="group__window.html#ga2f8d59323fc4692c1d54ba08c863a703">glfwRequestWindowAttention</a></div><div class="ttdeci">void glfwRequestWindowAttention(GLFWwindow *window)</div><div class="ttdoc">Requests user attention to the specified window.</div></div>
+</div><!-- fragment --><p >The system will highlight the specified window, or on platforms where this is not supported, the application as a whole. Once the user has given it attention, the system will automatically end the request.</p>
+<h2><a class="anchor" id="window_refresh"></a>
+Window damage and refresh</h2>
+<p >If you wish to be notified when the contents of a window is damaged and needs to be refreshed, set a window refresh callback.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a>(m_handle, window_refresh_callback);</div>
+<div class="ttc" id="agroup__window_html_ga1c5c7eb889c33c7f4d10dd35b327654e"><div class="ttname"><a href="group__window.html#ga1c5c7eb889c33c7f4d10dd35b327654e">glfwSetWindowRefreshCallback</a></div><div class="ttdeci">GLFWwindowrefreshfun glfwSetWindowRefreshCallback(GLFWwindow *window, GLFWwindowrefreshfun callback)</div><div class="ttdoc">Sets the refresh callback for the specified window.</div></div>
+</div><!-- fragment --><p >The callback function is called when the contents of the window needs to be refreshed.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">void</span> window_refresh_callback(<a class="code hl_typedef" href="group__window.html#ga3c96d80d363e67d13a41b5d1821f3242">GLFWwindow</a>* window)</div>
+<div class="line">{</div>
+<div class="line"> draw_editor_ui(window);</div>
+<div class="line"> <a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+<div class="line">}</div>
+</div><!-- fragment --><dl class="section note"><dt>Note</dt><dd>On compositing window systems such as Aero, Compiz or Aqua, where the window contents are saved off-screen, this callback might only be called when the window or framebuffer is resized.</dd></dl>
+<h2><a class="anchor" id="window_transparency"></a>
+Window transparency</h2>
+<p >GLFW supports two kinds of transparency for windows; framebuffer transparency and whole window transparency. A single window may not use both methods. The results of doing this are undefined.</p>
+<p >Both methods require the platform to support it and not every version of every platform GLFW supports does this, so there are mechanisms to check whether the window really is transparent.</p>
+<p >Window framebuffers can be made transparent on a per-pixel per-frame basis with the <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_hint">GLFW_TRANSPARENT_FRAMEBUFFER</a> window hint.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga7d9c8c62384b1e2821c4dc48952d2033">glfwWindowHint</a>(<a class="code hl_define" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>, <a class="code hl_define" href="group__init.html#ga2744fbb29b5631bb28802dbe0cf36eba">GLFW_TRUE</a>);</div>
+<div class="ttc" id="agroup__window_html_ga60a0578c3b9449027d683a9c6abb9f14"><div class="ttname"><a href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a></div><div class="ttdeci">#define GLFW_TRANSPARENT_FRAMEBUFFER</div><div class="ttdoc">Window framebuffer transparency hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:850</div></div>
+</div><!-- fragment --><p >If supported by the system, the window content area will be composited with the background using the framebuffer per-pixel alpha channel. This requires desktop compositing to be enabled on the system. It does not affect window decorations.</p>
+<p >You can check whether the window framebuffer was successfully made transparent with the <a class="el" href="window_guide.html#GLFW_TRANSPARENT_FRAMEBUFFER_attrib">GLFW_TRANSPARENT_FRAMEBUFFER</a> window attribute.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga60a0578c3b9449027d683a9c6abb9f14">GLFW_TRANSPARENT_FRAMEBUFFER</a>))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// window framebuffer is currently transparent</span></div>
+<div class="line">}</div>
+</div><!-- fragment --><p >GLFW comes with an example that enabled framebuffer transparency called <code>gears</code>.</p>
+<p >The opacity of the whole window, including any decorations, can be set with <a class="el" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a>(window, 0.5f);</div>
+<div class="ttc" id="agroup__window_html_gac31caeb3d1088831b13d2c8a156802e9"><div class="ttname"><a href="group__window.html#gac31caeb3d1088831b13d2c8a156802e9">glfwSetWindowOpacity</a></div><div class="ttdeci">void glfwSetWindowOpacity(GLFWwindow *window, float opacity)</div><div class="ttdoc">Sets the opacity of the whole window.</div></div>
+</div><!-- fragment --><p >The opacity (or alpha) value is a positive finite number between zero and one, where 0 (zero) is fully transparent and 1 (one) is fully opaque. The initial opacity value for newly created windows is 1.</p>
+<p >The current opacity of a window can be queried with <a class="el" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>.</p>
+<div class="fragment"><div class="line"><span class="keywordtype">float</span> opacity = <a class="code hl_function" href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a>(window);</div>
+<div class="ttc" id="agroup__window_html_gad09f0bd7a6307c4533b7061828480a84"><div class="ttname"><a href="group__window.html#gad09f0bd7a6307c4533b7061828480a84">glfwGetWindowOpacity</a></div><div class="ttdeci">float glfwGetWindowOpacity(GLFWwindow *window)</div><div class="ttdoc">Returns the opacity of the whole window.</div></div>
+</div><!-- fragment --><p >If the system does not support whole window transparency, this function always returns one.</p>
+<p >GLFW comes with a test program that lets you control whole window transparency at run-time called <code>opacity</code>.</p>
+<h2><a class="anchor" id="window_attribs"></a>
+Window attributes</h2>
+<p >Windows have a number of attributes that can be returned using <a class="el" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>. Some reflect state that may change as a result of user interaction, (e.g. whether it has input focus), while others reflect inherent properties of the window (e.g. what kind of border it has). Some are related to the window and others to its OpenGL or OpenGL ES context.</p>
+<div class="fragment"><div class="line"><span class="keywordflow">if</span> (<a class="code hl_function" href="group__window.html#gacccb29947ea4b16860ebef42c2cb9337">glfwGetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#ga54ddb14825a1541a56e22afb5f832a9e">GLFW_FOCUSED</a>))</div>
+<div class="line">{</div>
+<div class="line"> <span class="comment">// window has input focus</span></div>
+<div class="line">}</div>
+</div><!-- fragment --><p >The <a class="el" href="window_guide.html#GLFW_DECORATED_attrib">GLFW_DECORATED</a>, <a class="el" href="window_guide.html#GLFW_RESIZABLE_attrib">GLFW_RESIZABLE</a>, <a class="el" href="window_guide.html#GLFW_FLOATING_attrib">GLFW_FLOATING</a>, <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_attrib">GLFW_AUTO_ICONIFY</a> and <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_attrib">GLFW_FOCUS_ON_SHOW</a> window attributes can be changed with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>(window, <a class="code hl_define" href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a>, <a class="code hl_define" href="group__init.html#gac877fe3b627d21ef3a0a23e0a73ba8c5">GLFW_FALSE</a>);</div>
+<div class="ttc" id="agroup__window_html_gace2afda29b4116ec012e410a6819033e"><div class="ttname"><a href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a></div><div class="ttdeci">void glfwSetWindowAttrib(GLFWwindow *window, int attrib, int value)</div><div class="ttdoc">Sets an attribute of the specified window.</div></div>
+<div class="ttc" id="agroup__window_html_gadba13c7a1b3aa40831eb2beedbd5bd1d"><div class="ttname"><a href="group__window.html#gadba13c7a1b3aa40831eb2beedbd5bd1d">GLFW_RESIZABLE</a></div><div class="ttdeci">#define GLFW_RESIZABLE</div><div class="ttdoc">Window resize-ability window hint and attribute.</div><div class="ttdef"><b>Definition:</b> glfw3.h:808</div></div>
+</div><!-- fragment --><h3><a class="anchor" id="window_attribs_wnd"></a>
+Window related attributes</h3>
+<p ><a class="anchor" id="GLFW_FOCUSED_attrib"></a><b>GLFW_FOCUSED</b> indicates whether the specified window has input focus. See <a class="el" href="window_guide.html#window_focus">Window input focus</a> for details.</p>
+<p ><a class="anchor" id="GLFW_ICONIFIED_attrib"></a><b>GLFW_ICONIFIED</b> indicates whether the specified window is iconified. See <a class="el" href="window_guide.html#window_iconify">Window iconification</a> for details.</p>
+<p ><a class="anchor" id="GLFW_MAXIMIZED_attrib"></a><b>GLFW_MAXIMIZED</b> indicates whether the specified window is maximized. See <a class="el" href="window_guide.html#window_maximize">Window maximization</a> for details.</p>
+<p ><a class="anchor" id="GLFW_HOVERED_attrib"></a><b>GLFW_HOVERED</b> indicates whether the cursor is currently directly over the content area of the window, with no other windows between. See <a class="el" href="input_guide.html#cursor_enter">Cursor enter/leave events</a> for details.</p>
+<p ><a class="anchor" id="GLFW_VISIBLE_attrib"></a><b>GLFW_VISIBLE</b> indicates whether the specified window is visible. See <a class="el" href="window_guide.html#window_hide">Window visibility</a> for details.</p>
+<p ><a class="anchor" id="GLFW_RESIZABLE_attrib"></a><b>GLFW_RESIZABLE</b> indicates whether the specified window is resizable <em>by the user</em>. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_RESIZABLE_hint">GLFW_RESIZABLE</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p ><a class="anchor" id="GLFW_DECORATED_attrib"></a><b>GLFW_DECORATED</b> indicates whether the specified window has decorations such as a border, a close widget, etc. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_DECORATED_hint">GLFW_DECORATED</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p ><a class="anchor" id="GLFW_AUTO_ICONIFY_attrib"></a><b>GLFW_AUTO_ICONIFY</b> indicates whether the specified full screen window is iconified on focus loss, a close widget, etc. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_AUTO_ICONIFY_hint">GLFW_AUTO_ICONIFY</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p ><a class="anchor" id="GLFW_FLOATING_attrib"></a><b>GLFW_FLOATING</b> indicates whether the specified window is floating, also called topmost or always-on-top. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_FLOATING_hint">GLFW_FLOATING</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<p ><a class="anchor" id="GLFW_TRANSPARENT_FRAMEBUFFER_attrib"></a><b>GLFW_TRANSPARENT_FRAMEBUFFER</b> indicates whether the specified window has a transparent framebuffer, i.e. the window contents is composited with the background using the window framebuffer alpha channel. See <a class="el" href="window_guide.html#window_transparency">Window transparency</a> for details.</p>
+<p ><a class="anchor" id="GLFW_FOCUS_ON_SHOW_attrib"></a><b>GLFW_FOCUS_ON_SHOW</b> specifies whether the window will be given input focus when <a class="el" href="group__window.html#ga61be47917b72536a148300f46494fc66">glfwShowWindow</a> is called. This can be set before creation with the <a class="el" href="window_guide.html#GLFW_FOCUS_ON_SHOW_hint">GLFW_FOCUS_ON_SHOW</a> window hint or after with <a class="el" href="group__window.html#gace2afda29b4116ec012e410a6819033e">glfwSetWindowAttrib</a>.</p>
+<h3><a class="anchor" id="window_attribs_ctx"></a>
+Context related attributes</h3>
+<p ><a class="anchor" id="GLFW_CLIENT_API_attrib"></a><b>GLFW_CLIENT_API</b> indicates the client API provided by the window's context; either <code>GLFW_OPENGL_API</code>, <code>GLFW_OPENGL_ES_API</code> or <code>GLFW_NO_API</code>.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_CREATION_API_attrib"></a><b>GLFW_CONTEXT_CREATION_API</b> indicates the context creation API used to create the window's context; either <code>GLFW_NATIVE_CONTEXT_API</code>, <code>GLFW_EGL_CONTEXT_API</code> or <code>GLFW_OSMESA_CONTEXT_API</code>.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_VERSION_MAJOR_attrib"></a><a class="anchor" id="GLFW_CONTEXT_VERSION_MINOR_attrib"></a><a class="anchor" id="GLFW_CONTEXT_REVISION_attrib"></a><b>GLFW_CONTEXT_VERSION_MAJOR</b>, <b>GLFW_CONTEXT_VERSION_MINOR</b> and <b>GLFW_CONTEXT_REVISION</b> indicate the client API version of the window's context.</p>
+<dl class="section note"><dt>Note</dt><dd>Do not confuse these attributes with <code>GLFW_VERSION_MAJOR</code>, <code>GLFW_VERSION_MINOR</code> and <code>GLFW_VERSION_REVISION</code> which provide the API version of the GLFW header.</dd></dl>
+<p><a class="anchor" id="GLFW_OPENGL_FORWARD_COMPAT_attrib"></a><b>GLFW_OPENGL_FORWARD_COMPAT</b> is <code>GLFW_TRUE</code> if the window's context is an OpenGL forward-compatible one, or <code>GLFW_FALSE</code> otherwise.</p>
+<p ><a class="anchor" id="GLFW_OPENGL_DEBUG_CONTEXT_attrib"></a><b>GLFW_OPENGL_DEBUG_CONTEXT</b> is <code>GLFW_TRUE</code> if the window's context is in debug mode, or <code>GLFW_FALSE</code> otherwise.</p>
+<p ><a class="anchor" id="GLFW_OPENGL_PROFILE_attrib"></a><b>GLFW_OPENGL_PROFILE</b> indicates the OpenGL profile used by the context. This is <code>GLFW_OPENGL_CORE_PROFILE</code> or <code>GLFW_OPENGL_COMPAT_PROFILE</code> if the context uses a known profile, or <code>GLFW_OPENGL_ANY_PROFILE</code> if the OpenGL profile is unknown or the context is an OpenGL ES context. Note that the returned profile may not match the profile bits of the context flags, as GLFW will try other means of detecting the profile when no bits are set.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib"></a><b>GLFW_CONTEXT_RELEASE_BEHAVIOR</b> indicates the release used by the context. Possible values are one of <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code> or <code>GLFW_RELEASE_BEHAVIOR_NONE</code>. If the behavior is <code>GLFW_ANY_RELEASE_BEHAVIOR</code>, the default behavior of the context creation API will be used. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_FLUSH</code>, the pipeline will be flushed whenever the context is released from being the current one. If the behavior is <code>GLFW_RELEASE_BEHAVIOR_NONE</code>, the pipeline will not be flushed on release.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_NO_ERROR_attrib"></a><b>GLFW_CONTEXT_NO_ERROR</b> indicates whether errors are generated by the context. Possible values are <code>GLFW_TRUE</code> and <code>GLFW_FALSE</code>. If enabled, situations that would have generated errors instead cause undefined behavior.</p>
+<p ><a class="anchor" id="GLFW_CONTEXT_ROBUSTNESS_attrib"></a><b>GLFW_CONTEXT_ROBUSTNESS</b> indicates the robustness strategy used by the context. This is <code>GLFW_LOSE_CONTEXT_ON_RESET</code> or <code>GLFW_NO_RESET_NOTIFICATION</code> if the window's context supports robustness, or <code>GLFW_NO_ROBUSTNESS</code> otherwise.</p>
+<h3><a class="anchor" id="window_attribs_fb"></a>
+Framebuffer related attributes</h3>
+<p >GLFW does not expose attributes of the default framebuffer (i.e. the framebuffer attached to the window) as these can be queried directly with either OpenGL, OpenGL ES or Vulkan.</p>
+<p >If you are using version 3.0 or later of OpenGL or OpenGL ES, the <code>glGetFramebufferAttachmentParameteriv</code> function can be used to retrieve the number of bits for the red, green, blue, alpha, depth and stencil buffer channels. Otherwise, the <code>glGetIntegerv</code> function can be used.</p>
+<p >The number of MSAA samples are always retrieved with <code>glGetIntegerv</code>. For contexts supporting framebuffer objects, the number of samples of the currently bound framebuffer is returned.</p>
+<table class="markdownTable">
+<tr class="markdownTableHead">
+<th class="markdownTableHeadNone">Attribute </th><th class="markdownTableHeadNone">glGetIntegerv </th><th class="markdownTableHeadNone">glGetFramebufferAttachmentParameteriv </th></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">Red bits </td><td class="markdownTableBodyNone"><code>GL_RED_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">Green bits </td><td class="markdownTableBodyNone"><code>GL_GREEN_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">Blue bits </td><td class="markdownTableBodyNone"><code>GL_BLUE_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">Alpha bits </td><td class="markdownTableBodyNone"><code>GL_ALPHA_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">Depth bits </td><td class="markdownTableBodyNone"><code>GL_DEPTH_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE</code> </td></tr>
+<tr class="markdownTableRowEven">
+<td class="markdownTableBodyNone">Stencil bits </td><td class="markdownTableBodyNone"><code>GL_STENCIL_BITS</code> </td><td class="markdownTableBodyNone"><code>GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE</code> </td></tr>
+<tr class="markdownTableRowOdd">
+<td class="markdownTableBodyNone">MSAA samples </td><td class="markdownTableBodyNone"><code>GL_SAMPLES</code> </td><td class="markdownTableBodyNone"><em>Not provided by this function</em> </td></tr>
+</table>
+<p >When calling <code>glGetFramebufferAttachmentParameteriv</code>, the red, green, blue and alpha sizes are queried from the <code>GL_BACK_LEFT</code>, while the depth and stencil sizes are queried from the <code>GL_DEPTH</code> and <code>GL_STENCIL</code> attachments, respectively.</p>
+<h1><a class="anchor" id="buffer_swap"></a>
+Buffer swapping</h1>
+<p >GLFW windows are by default double buffered. That means that you have two rendering buffers; a front buffer and a back buffer. The front buffer is the one being displayed and the back buffer the one you render to.</p>
+<p >When the entire frame has been rendered, it is time to swap the back and the front buffers in order to display what has been rendered and begin rendering a new frame. This is done with <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>.</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a>(window);</div>
+</div><!-- fragment --><p >Sometimes it can be useful to select when the buffer swap will occur. With the function <a class="el" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a> it is possible to select the minimum number of monitor refreshes the driver should wait from the time <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> was called before swapping the buffers:</p>
+<div class="fragment"><div class="line"><a class="code hl_function" href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a>(1);</div>
+<div class="ttc" id="agroup__context_html_ga6d4e0cdf151b5e579bd67f13202994ed"><div class="ttname"><a href="group__context.html#ga6d4e0cdf151b5e579bd67f13202994ed">glfwSwapInterval</a></div><div class="ttdeci">void glfwSwapInterval(int interval)</div><div class="ttdoc">Sets the swap interval for the current context.</div></div>
+</div><!-- fragment --><p >If the interval is zero, the swap will take place immediately when <a class="el" href="group__window.html#ga15a5a1ee5b3c2ca6b15ca209a12efd14">glfwSwapBuffers</a> is called without waiting for a refresh. Otherwise at least interval retraces will pass between each buffer swap. Using a swap interval of zero can be useful for benchmarking purposes, when it is not desirable to measure the time it takes to wait for the vertical retrace. However, a swap interval of one lets you avoid tearing.</p>
+<p >Note that this may not work on all machines, as some drivers have user-controlled settings that override any swap interval the application requests.</p>
+<p >A context that supports either the <code>WGL_EXT_swap_control_tear</code> or the <code>GLX_EXT_swap_control_tear</code> extension also accepts <em>negative</em> swap intervals, which allows the driver to swap immediately even if a frame arrives a little bit late. This trades the risk of visible tears for greater framerate stability. You can check for these extensions with <a class="el" href="group__context.html#ga87425065c011cef1ebd6aac75e059dfa">glfwExtensionSupported</a>. </p>
+</div></div><!-- contents -->
+</div><!-- PageDoc -->
+<address class="footer">
+<p>
+Last update on Fri Jul 22 2022 for GLFW 3.3.8
+</p>
+</address>
+</body>
+</html>
diff --git a/libs/glfw-3.3.8/docs/input.dox b/libs/glfw-3.3.8/docs/input.dox
new file mode 100644
index 0000000..1d61e5b
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/input.dox
@@ -0,0 +1,962 @@
+/*!
+
+@page input_guide Input guide
+
+@tableofcontents
+
+This guide introduces the input related functions of GLFW. For details on
+a specific function in this category, see the @ref input. There are also guides
+for the other areas of GLFW.
+
+ - @ref intro_guide
+ - @ref window_guide
+ - @ref context_guide
+ - @ref vulkan_guide
+ - @ref monitor_guide
+
+GLFW provides many kinds of input. While some can only be polled, like time, or
+only received via callbacks, like scrolling, many provide both callbacks and
+polling. Callbacks are more work to use than polling but is less CPU intensive
+and guarantees that you do not miss state changes.
+
+All input callbacks receive a window handle. By using the
+[window user pointer](@ref window_userptr), you can access non-global structures
+or objects from your callbacks.
+
+To get a better feel for how the various events callbacks behave, run the
+`events` test program. It register every callback supported by GLFW and prints
+out all arguments provided for every event, along with time and sequence
+information.
+
+
+@section events Event processing
+
+GLFW needs to poll the window system for events both to provide input to the
+application and to prove to the window system that the application hasn't locked
+up. Event processing is normally done each frame after
+[buffer swapping](@ref buffer_swap). Even when you have no windows, event
+polling needs to be done in order to receive monitor and joystick connection
+events.
+
+There are three functions for processing pending events. @ref glfwPollEvents,
+processes only those events that have already been received and then returns
+immediately.
+
+@code
+glfwPollEvents();
+@endcode
+
+This is the best choice when rendering continuously, like most games do.
+
+If you only need to update the contents of the window when you receive new
+input, @ref glfwWaitEvents is a better choice.
+
+@code
+glfwWaitEvents();
+@endcode
+
+It puts the thread to sleep until at least one event has been received and then
+processes all received events. This saves a great deal of CPU cycles and is
+useful for, for example, editing tools.
+
+If you want to wait for events but have UI elements or other tasks that need
+periodic updates, @ref glfwWaitEventsTimeout lets you specify a timeout.
+
+@code
+glfwWaitEventsTimeout(0.7);
+@endcode
+
+It puts the thread to sleep until at least one event has been received, or until
+the specified number of seconds have elapsed. It then processes any received
+events.
+
+If the main thread is sleeping in @ref glfwWaitEvents, you can wake it from
+another thread by posting an empty event to the event queue with @ref
+glfwPostEmptyEvent.
+
+@code
+glfwPostEmptyEvent();
+@endcode
+
+Do not assume that callbacks will _only_ be called in response to the above
+functions. While it is necessary to process events in one or more of the ways
+above, window systems that require GLFW to register callbacks of its own can
+pass events to GLFW in response to many window system function calls. GLFW will
+pass those events on to the application callbacks before returning.
+
+For example, on Windows the system function that @ref glfwSetWindowSize is
+implemented with will send window size events directly to the event callback
+that every window has and that GLFW implements for its windows. If you have set
+a [window size callback](@ref window_size) GLFW will call it in turn with the
+new size before everything returns back out of the @ref glfwSetWindowSize call.
+
+
+@section input_keyboard Keyboard input
+
+GLFW divides keyboard input into two categories; key events and character
+events. Key events relate to actual physical keyboard keys, whereas character
+events relate to the Unicode code points generated by pressing some of them.
+
+Keys and characters do not map 1:1. A single key press may produce several
+characters, and a single character may require several keys to produce. This
+may not be the case on your machine, but your users are likely not all using the
+same keyboard layout, input method or even operating system as you.
+
+
+@subsection input_key Key input
+
+If you wish to be notified when a physical key is pressed or released or when it
+repeats, set a key callback.
+
+@code
+glfwSetKeyCallback(window, key_callback);
+@endcode
+
+The callback function receives the [keyboard key](@ref keys), platform-specific
+scancode, key action and [modifier bits](@ref mods).
+
+@code
+void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
+{
+ if (key == GLFW_KEY_E && action == GLFW_PRESS)
+ activate_airship();
+}
+@endcode
+
+The action is one of `GLFW_PRESS`, `GLFW_REPEAT` or `GLFW_RELEASE`. Events with
+`GLFW_PRESS` and `GLFW_RELEASE` actions are emitted for every key press. Most
+keys will also emit events with `GLFW_REPEAT` actions while a key is held down.
+
+Key events with `GLFW_REPEAT` actions are intended for text input. They are
+emitted at the rate set in the user's keyboard settings. At most one key is
+repeated even if several keys are held down. `GLFW_REPEAT` actions should not
+be relied on to know which keys are being held down or to drive animation.
+Instead you should either save the state of relevant keys based on `GLFW_PRESS`
+and `GLFW_RELEASE` actions, or call @ref glfwGetKey, which provides basic cached
+key state.
+
+The key will be one of the existing [key tokens](@ref keys), or
+`GLFW_KEY_UNKNOWN` if GLFW lacks a token for it, for example _E-mail_ and _Play_
+keys.
+
+The scancode is unique for every key, regardless of whether it has a key token.
+Scancodes are platform-specific but consistent over time, so keys will have
+different scancodes depending on the platform but they are safe to save to disk.
+You can query the scancode for any [named key](@ref keys) on the current
+platform with @ref glfwGetKeyScancode.
+
+@code
+const int scancode = glfwGetKeyScancode(GLFW_KEY_X);
+set_key_mapping(scancode, swap_weapons);
+@endcode
+
+The last reported state for every [named key](@ref keys) is also saved in
+per-window state arrays that can be polled with @ref glfwGetKey.
+
+@code
+int state = glfwGetKey(window, GLFW_KEY_E);
+if (state == GLFW_PRESS)
+{
+ activate_airship();
+}
+@endcode
+
+The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`.
+
+This function only returns cached key event state. It does not poll the
+system for the current physical state of the key.
+
+@anchor GLFW_STICKY_KEYS
+Whenever you poll state, you risk missing the state change you are looking for.
+If a pressed key is released again before you poll its state, you will have
+missed the key press. The recommended solution for this is to use a
+key callback, but there is also the `GLFW_STICKY_KEYS` input mode.
+
+@code
+glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_TRUE);
+@endcode
+
+When sticky keys mode is enabled, the pollable state of a key will remain
+`GLFW_PRESS` until the state of that key is polled with @ref glfwGetKey. Once
+it has been polled, if a key release event had been processed in the meantime,
+the state will reset to `GLFW_RELEASE`, otherwise it will remain `GLFW_PRESS`.
+
+@anchor GLFW_LOCK_KEY_MODS
+If you wish to know what the state of the Caps Lock and Num Lock keys was when
+input events were generated, set the `GLFW_LOCK_KEY_MODS` input mode.
+
+@code
+glfwSetInputMode(window, GLFW_LOCK_KEY_MODS, GLFW_TRUE);
+@endcode
+
+When this input mode is enabled, any callback that receives
+[modifier bits](@ref mods) will have the @ref GLFW_MOD_CAPS_LOCK bit set if Caps
+Lock was on when the event occurred and the @ref GLFW_MOD_NUM_LOCK bit set if
+Num Lock was on.
+
+The `GLFW_KEY_LAST` constant holds the highest value of any
+[named key](@ref keys).
+
+
+@subsection input_char Text input
+
+GLFW supports text input in the form of a stream of
+[Unicode code points](https://en.wikipedia.org/wiki/Unicode), as produced by the
+operating system text input system. Unlike key input, text input obeys keyboard
+layouts and modifier keys and supports composing characters using
+[dead keys](https://en.wikipedia.org/wiki/Dead_key). Once received, you can
+encode the code points into UTF-8 or any other encoding you prefer.
+
+Because an `unsigned int` is 32 bits long on all platforms supported by GLFW,
+you can treat the code point argument as native endian UTF-32.
+
+If you wish to offer regular text input, set a character callback.
+
+@code
+glfwSetCharCallback(window, character_callback);
+@endcode
+
+The callback function receives Unicode code points for key events that would
+have led to regular text input and generally behaves as a standard text field on
+that platform.
+
+@code
+void character_callback(GLFWwindow* window, unsigned int codepoint)
+{
+}
+@endcode
+
+
+@subsection input_key_name Key names
+
+If you wish to refer to keys by name, you can query the keyboard layout
+dependent name of printable keys with @ref glfwGetKeyName.
+
+@code
+const char* key_name = glfwGetKeyName(GLFW_KEY_W, 0);
+show_tutorial_hint("Press %s to move forward", key_name);
+@endcode
+
+This function can handle both [keys and scancodes](@ref input_key). If the
+specified key is `GLFW_KEY_UNKNOWN` then the scancode is used, otherwise it is
+ignored. This matches the behavior of the key callback, meaning the callback
+arguments can always be passed unmodified to this function.
+
+
+@section input_mouse Mouse input
+
+Mouse input comes in many forms, including mouse motion, button presses and
+scrolling offsets. The cursor appearance can also be changed, either to
+a custom image or a standard cursor shape from the system theme.
+
+
+@subsection cursor_pos Cursor position
+
+If you wish to be notified when the cursor moves over the window, set a cursor
+position callback.
+
+@code
+glfwSetCursorPosCallback(window, cursor_position_callback);
+@endcode
+
+The callback functions receives the cursor position, measured in screen
+coordinates but relative to the top-left corner of the window content area. On
+platforms that provide it, the full sub-pixel cursor position is passed on.
+
+@code
+static void cursor_position_callback(GLFWwindow* window, double xpos, double ypos)
+{
+}
+@endcode
+
+The cursor position is also saved per-window and can be polled with @ref
+glfwGetCursorPos.
+
+@code
+double xpos, ypos;
+glfwGetCursorPos(window, &xpos, &ypos);
+@endcode
+
+
+@subsection cursor_mode Cursor mode
+
+@anchor GLFW_CURSOR
+The `GLFW_CURSOR` input mode provides several cursor modes for special forms of
+mouse motion input. By default, the cursor mode is `GLFW_CURSOR_NORMAL`,
+meaning the regular arrow cursor (or another cursor set with @ref glfwSetCursor)
+is used and cursor motion is not limited.
+
+If you wish to implement mouse motion based camera controls or other input
+schemes that require unlimited mouse movement, set the cursor mode to
+`GLFW_CURSOR_DISABLED`.
+
+@code
+glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
+@endcode
+
+This will hide the cursor and lock it to the specified window. GLFW will then
+take care of all the details of cursor re-centering and offset calculation and
+providing the application with a virtual cursor position. This virtual position
+is provided normally via both the cursor position callback and through polling.
+
+@note You should not implement your own version of this functionality using
+other features of GLFW. It is not supported and will not work as robustly as
+`GLFW_CURSOR_DISABLED`.
+
+If you only wish the cursor to become hidden when it is over a window but still
+want it to behave normally, set the cursor mode to `GLFW_CURSOR_HIDDEN`.
+
+@code
+glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
+@endcode
+
+This mode puts no limit on the motion of the cursor.
+
+To exit out of either of these special modes, restore the `GLFW_CURSOR_NORMAL`
+cursor mode.
+
+@code
+glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
+@endcode
+
+
+@anchor GLFW_RAW_MOUSE_MOTION
+@subsection raw_mouse_motion Raw mouse motion
+
+When the cursor is disabled, raw (unscaled and unaccelerated) mouse motion can
+be enabled if available.
+
+Raw mouse motion is closer to the actual motion of the mouse across a surface.
+It is not affected by the scaling and acceleration applied to the motion of the
+desktop cursor. That processing is suitable for a cursor while raw motion is
+better for controlling for example a 3D camera. Because of this, raw mouse
+motion is only provided when the cursor is disabled.
+
+Call @ref glfwRawMouseMotionSupported to check if the current machine provides
+raw motion and set the `GLFW_RAW_MOUSE_MOTION` input mode to enable it. It is
+disabled by default.
+
+@code
+if (glfwRawMouseMotionSupported())
+ glfwSetInputMode(window, GLFW_RAW_MOUSE_MOTION, GLFW_TRUE);
+@endcode
+
+If supported, raw mouse motion can be enabled or disabled per-window and at any
+time but it will only be provided when the cursor is disabled.
+
+
+@subsection cursor_object Cursor objects
+
+GLFW supports creating both custom and system theme cursor images, encapsulated
+as @ref GLFWcursor objects. They are created with @ref glfwCreateCursor or @ref
+glfwCreateStandardCursor and destroyed with @ref glfwDestroyCursor, or @ref
+glfwTerminate, if any remain.
+
+
+@subsubsection cursor_custom Custom cursor creation
+
+A custom cursor is created with @ref glfwCreateCursor, which returns a handle to
+the created cursor object. For example, this creates a 16x16 white square
+cursor with the hot-spot in the upper-left corner:
+
+@code
+unsigned char pixels[16 * 16 * 4];
+memset(pixels, 0xff, sizeof(pixels));
+
+GLFWimage image;
+image.width = 16;
+image.height = 16;
+image.pixels = pixels;
+
+GLFWcursor* cursor = glfwCreateCursor(&image, 0, 0);
+@endcode
+
+If cursor creation fails, `NULL` will be returned, so it is necessary to check
+the return value.
+
+The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits
+per channel with the red channel first. The pixels are arranged canonically as
+sequential rows, starting from the top-left corner.
+
+
+@subsubsection cursor_standard Standard cursor creation
+
+A cursor with a [standard shape](@ref shapes) from the current system cursor
+theme can be can be created with @ref glfwCreateStandardCursor.
+
+@code
+GLFWcursor* cursor = glfwCreateStandardCursor(GLFW_HRESIZE_CURSOR);
+@endcode
+
+These cursor objects behave in the exact same way as those created with @ref
+glfwCreateCursor except that the system cursor theme provides the actual image.
+
+
+@subsubsection cursor_destruction Cursor destruction
+
+When a cursor is no longer needed, destroy it with @ref glfwDestroyCursor.
+
+@code
+glfwDestroyCursor(cursor);
+@endcode
+
+Cursor destruction always succeeds. If the cursor is current for any window,
+that window will revert to the default cursor. This does not affect the cursor
+mode. All remaining cursors are destroyed when @ref glfwTerminate is called.
+
+
+@subsubsection cursor_set Cursor setting
+
+A cursor can be set as current for a window with @ref glfwSetCursor.
+
+@code
+glfwSetCursor(window, cursor);
+@endcode
+
+Once set, the cursor image will be used as long as the system cursor is over the
+content area of the window and the [cursor mode](@ref cursor_mode) is set
+to `GLFW_CURSOR_NORMAL`.
+
+A single cursor may be set for any number of windows.
+
+To revert to the default cursor, set the cursor of that window to `NULL`.
+
+@code
+glfwSetCursor(window, NULL);
+@endcode
+
+When a cursor is destroyed, any window that has it set will revert to the
+default cursor. This does not affect the cursor mode.
+
+
+@subsection cursor_enter Cursor enter/leave events
+
+If you wish to be notified when the cursor enters or leaves the content area of
+a window, set a cursor enter/leave callback.
+
+@code
+glfwSetCursorEnterCallback(window, cursor_enter_callback);
+@endcode
+
+The callback function receives the new classification of the cursor.
+
+@code
+void cursor_enter_callback(GLFWwindow* window, int entered)
+{
+ if (entered)
+ {
+ // The cursor entered the content area of the window
+ }
+ else
+ {
+ // The cursor left the content area of the window
+ }
+}
+@endcode
+
+You can query whether the cursor is currently inside the content area of the
+window with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute.
+
+@code
+if (glfwGetWindowAttrib(window, GLFW_HOVERED))
+{
+ highlight_interface();
+}
+@endcode
+
+
+@subsection input_mouse_button Mouse button input
+
+If you wish to be notified when a mouse button is pressed or released, set
+a mouse button callback.
+
+@code
+glfwSetMouseButtonCallback(window, mouse_button_callback);
+@endcode
+
+The callback function receives the [mouse button](@ref buttons), button action
+and [modifier bits](@ref mods).
+
+@code
+void mouse_button_callback(GLFWwindow* window, int button, int action, int mods)
+{
+ if (button == GLFW_MOUSE_BUTTON_RIGHT && action == GLFW_PRESS)
+ popup_menu();
+}
+@endcode
+
+The action is one of `GLFW_PRESS` or `GLFW_RELEASE`.
+
+Mouse button states for [named buttons](@ref buttons) are also saved in
+per-window state arrays that can be polled with @ref glfwGetMouseButton.
+
+@code
+int state = glfwGetMouseButton(window, GLFW_MOUSE_BUTTON_LEFT);
+if (state == GLFW_PRESS)
+{
+ upgrade_cow();
+}
+@endcode
+
+The returned state is one of `GLFW_PRESS` or `GLFW_RELEASE`.
+
+This function only returns cached mouse button event state. It does not poll
+the system for the current state of the mouse button.
+
+@anchor GLFW_STICKY_MOUSE_BUTTONS
+Whenever you poll state, you risk missing the state change you are looking for.
+If a pressed mouse button is released again before you poll its state, you will have
+missed the button press. The recommended solution for this is to use a
+mouse button callback, but there is also the `GLFW_STICKY_MOUSE_BUTTONS`
+input mode.
+
+@code
+glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, GLFW_TRUE);
+@endcode
+
+When sticky mouse buttons mode is enabled, the pollable state of a mouse button
+will remain `GLFW_PRESS` until the state of that button is polled with @ref
+glfwGetMouseButton. Once it has been polled, if a mouse button release event
+had been processed in the meantime, the state will reset to `GLFW_RELEASE`,
+otherwise it will remain `GLFW_PRESS`.
+
+The `GLFW_MOUSE_BUTTON_LAST` constant holds the highest value of any
+[named button](@ref buttons).
+
+
+@subsection scrolling Scroll input
+
+If you wish to be notified when the user scrolls, whether with a mouse wheel or
+touchpad gesture, set a scroll callback.
+
+@code
+glfwSetScrollCallback(window, scroll_callback);
+@endcode
+
+The callback function receives two-dimensional scroll offsets.
+
+@code
+void scroll_callback(GLFWwindow* window, double xoffset, double yoffset)
+{
+}
+@endcode
+
+A normal mouse wheel, being vertical, provides offsets along the Y-axis.
+
+
+@section joystick Joystick input
+
+The joystick functions expose connected joysticks and controllers, with both
+referred to as joysticks. It supports up to sixteen joysticks, ranging from
+`GLFW_JOYSTICK_1`, `GLFW_JOYSTICK_2` up to and including `GLFW_JOYSTICK_16` or
+`GLFW_JOYSTICK_LAST`. You can test whether a [joystick](@ref joysticks) is
+present with @ref glfwJoystickPresent.
+
+@code
+int present = glfwJoystickPresent(GLFW_JOYSTICK_1);
+@endcode
+
+Each joystick has zero or more axes, zero or more buttons, zero or more hats,
+a human-readable name, a user pointer and an SDL compatible GUID.
+
+When GLFW is initialized, detected joysticks are added to the beginning of
+the array. Once a joystick is detected, it keeps its assigned ID until it is
+disconnected or the library is terminated, so as joysticks are connected and
+disconnected, there may appear gaps in the IDs.
+
+Joystick axis, button and hat state is updated when polled and does not require
+a window to be created or events to be processed. However, if you want joystick
+connection and disconnection events reliably delivered to the
+[joystick callback](@ref joystick_event) then you must
+[process events](@ref events).
+
+To see all the properties of all connected joysticks in real-time, run the
+`joysticks` test program.
+
+
+@subsection joystick_axis Joystick axis states
+
+The positions of all axes of a joystick are returned by @ref
+glfwGetJoystickAxes. See the reference documentation for the lifetime of the
+returned array.
+
+@code
+int count;
+const float* axes = glfwGetJoystickAxes(GLFW_JOYSTICK_5, &count);
+@endcode
+
+Each element in the returned array is a value between -1.0 and 1.0.
+
+
+@subsection joystick_button Joystick button states
+
+The states of all buttons of a joystick are returned by @ref
+glfwGetJoystickButtons. See the reference documentation for the lifetime of the
+returned array.
+
+@code
+int count;
+const unsigned char* buttons = glfwGetJoystickButtons(GLFW_JOYSTICK_3, &count);
+@endcode
+
+Each element in the returned array is either `GLFW_PRESS` or `GLFW_RELEASE`.
+
+For backward compatibility with earlier versions that did not have @ref
+glfwGetJoystickHats, the button array by default also includes all hats. See
+the reference documentation for @ref glfwGetJoystickButtons for details.
+
+
+@subsection joystick_hat Joystick hat states
+
+The states of all hats are returned by @ref glfwGetJoystickHats. See the
+reference documentation for the lifetime of the returned array.
+
+@code
+int count;
+const unsigned char* hats = glfwGetJoystickHats(GLFW_JOYSTICK_7, &count);
+@endcode
+
+Each element in the returned array is one of the following:
+
+Name | Value
+---- | -----
+`GLFW_HAT_CENTERED` | 0
+`GLFW_HAT_UP` | 1
+`GLFW_HAT_RIGHT` | 2
+`GLFW_HAT_DOWN` | 4
+`GLFW_HAT_LEFT` | 8
+`GLFW_HAT_RIGHT_UP` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_UP`
+`GLFW_HAT_RIGHT_DOWN` | `GLFW_HAT_RIGHT` \| `GLFW_HAT_DOWN`
+`GLFW_HAT_LEFT_UP` | `GLFW_HAT_LEFT` \| `GLFW_HAT_UP`
+`GLFW_HAT_LEFT_DOWN` | `GLFW_HAT_LEFT` \| `GLFW_HAT_DOWN`
+
+The diagonal directions are bitwise combinations of the primary (up, right, down
+and left) directions and you can test for these individually by ANDing it with
+the corresponding direction.
+
+@code
+if (hats[2] & GLFW_HAT_RIGHT)
+{
+ // State of hat 2 could be right-up, right or right-down
+}
+@endcode
+
+For backward compatibility with earlier versions that did not have @ref
+glfwGetJoystickHats, all hats are by default also included in the button array.
+See the reference documentation for @ref glfwGetJoystickButtons for details.
+
+
+@subsection joystick_name Joystick name
+
+The human-readable, UTF-8 encoded name of a joystick is returned by @ref
+glfwGetJoystickName. See the reference documentation for the lifetime of the
+returned string.
+
+@code
+const char* name = glfwGetJoystickName(GLFW_JOYSTICK_4);
+@endcode
+
+Joystick names are not guaranteed to be unique. Two joysticks of the same model
+and make may have the same name. Only the [joystick ID](@ref joysticks) is
+guaranteed to be unique, and only until that joystick is disconnected.
+
+
+@subsection joystick_userptr Joystick user pointer
+
+Each joystick has a user pointer that can be set with @ref
+glfwSetJoystickUserPointer and queried with @ref glfwGetJoystickUserPointer.
+This can be used for any purpose you need and will not be modified by GLFW. The
+value will be kept until the joystick is disconnected or until the library is
+terminated.
+
+The initial value of the pointer is `NULL`.
+
+
+@subsection joystick_event Joystick configuration changes
+
+If you wish to be notified when a joystick is connected or disconnected, set
+a joystick callback.
+
+@code
+glfwSetJoystickCallback(joystick_callback);
+@endcode
+
+The callback function receives the ID of the joystick that has been connected
+and disconnected and the event that occurred.
+
+@code
+void joystick_callback(int jid, int event)
+{
+ if (event == GLFW_CONNECTED)
+ {
+ // The joystick was connected
+ }
+ else if (event == GLFW_DISCONNECTED)
+ {
+ // The joystick was disconnected
+ }
+}
+@endcode
+
+For joystick connection and disconnection events to be delivered on all
+platforms, you need to call one of the [event processing](@ref events)
+functions. Joystick disconnection may also be detected and the callback
+called by joystick functions. The function will then return whatever it
+returns for a disconnected joystick.
+
+Only @ref glfwGetJoystickName and @ref glfwGetJoystickUserPointer will return
+useful values for a disconnected joystick and only before the monitor callback
+returns.
+
+
+@subsection gamepad Gamepad input
+
+The joystick functions provide unlabeled axes, buttons and hats, with no
+indication of where they are located on the device. Their order may also vary
+between platforms even with the same device.
+
+To solve this problem the SDL community crowdsourced the
+[SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) project,
+a database of mappings from many different devices to an Xbox-like gamepad.
+
+GLFW supports this mapping format and contains a copy of the mappings
+available at the time of release. See @ref gamepad_mapping for how to update
+this at runtime. Mappings will be assigned to joysticks automatically any time
+a joystick is connected or the mappings are updated.
+
+You can check whether a joystick is both present and has a gamepad mapping with
+@ref glfwJoystickIsGamepad.
+
+@code
+if (glfwJoystickIsGamepad(GLFW_JOYSTICK_2))
+{
+ // Use as gamepad
+}
+@endcode
+
+If you are only interested in gamepad input you can use this function instead of
+@ref glfwJoystickPresent.
+
+You can query the human-readable name provided by the gamepad mapping with @ref
+glfwGetGamepadName. This may or may not be the same as the
+[joystick name](@ref joystick_name).
+
+@code
+const char* name = glfwGetGamepadName(GLFW_JOYSTICK_7);
+@endcode
+
+To retrieve the gamepad state of a joystick, call @ref glfwGetGamepadState.
+
+@code
+GLFWgamepadstate state;
+
+if (glfwGetGamepadState(GLFW_JOYSTICK_3, &state))
+{
+ if (state.buttons[GLFW_GAMEPAD_BUTTON_A])
+ {
+ input_jump();
+ }
+
+ input_speed(state.axes[GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER]);
+}
+@endcode
+
+The @ref GLFWgamepadstate struct has two arrays; one for button states and one
+for axis states. The values for each button and axis are the same as for the
+@ref glfwGetJoystickButtons and @ref glfwGetJoystickAxes functions, i.e.
+`GLFW_PRESS` or `GLFW_RELEASE` for buttons and -1.0 to 1.0 inclusive for axes.
+
+The sizes of the arrays and the positions within each array are fixed.
+
+The [button indices](@ref gamepad_buttons) are `GLFW_GAMEPAD_BUTTON_A`,
+`GLFW_GAMEPAD_BUTTON_B`, `GLFW_GAMEPAD_BUTTON_X`, `GLFW_GAMEPAD_BUTTON_Y`,
+`GLFW_GAMEPAD_BUTTON_LEFT_BUMPER`, `GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER`,
+`GLFW_GAMEPAD_BUTTON_BACK`, `GLFW_GAMEPAD_BUTTON_START`,
+`GLFW_GAMEPAD_BUTTON_GUIDE`, `GLFW_GAMEPAD_BUTTON_LEFT_THUMB`,
+`GLFW_GAMEPAD_BUTTON_RIGHT_THUMB`, `GLFW_GAMEPAD_BUTTON_DPAD_UP`,
+`GLFW_GAMEPAD_BUTTON_DPAD_RIGHT`, `GLFW_GAMEPAD_BUTTON_DPAD_DOWN` and
+`GLFW_GAMEPAD_BUTTON_DPAD_LEFT`.
+
+For those who prefer, there are also the `GLFW_GAMEPAD_BUTTON_CROSS`,
+`GLFW_GAMEPAD_BUTTON_CIRCLE`, `GLFW_GAMEPAD_BUTTON_SQUARE` and
+`GLFW_GAMEPAD_BUTTON_TRIANGLE` aliases for the A, B, X and Y button indices.
+
+The [axis indices](@ref gamepad_axes) are `GLFW_GAMEPAD_AXIS_LEFT_X`,
+`GLFW_GAMEPAD_AXIS_LEFT_Y`, `GLFW_GAMEPAD_AXIS_RIGHT_X`,
+`GLFW_GAMEPAD_AXIS_RIGHT_Y`, `GLFW_GAMEPAD_AXIS_LEFT_TRIGGER` and
+`GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER`.
+
+The `GLFW_GAMEPAD_BUTTON_LAST` and `GLFW_GAMEPAD_AXIS_LAST` constants equal
+the largest available index for each array.
+
+
+@subsection gamepad_mapping Gamepad mappings
+
+GLFW contains a copy of the mappings available in
+[SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB) at the
+time of release. Newer ones can be added at runtime with @ref
+glfwUpdateGamepadMappings.
+
+@code
+const char* mappings = load_file_contents("game/data/gamecontrollerdb.txt");
+
+glfwUpdateGamepadMappings(mappings);
+@endcode
+
+This function supports everything from single lines up to and including the
+unmodified contents of the whole `gamecontrollerdb.txt` file.
+
+If you are compiling GLFW from source with CMake you can update the built-in mappings by
+building the _update_mappings_ target. This runs the `GenerateMappings.cmake` CMake
+script, which downloads `gamecontrollerdb.txt` and regenerates the `mappings.h` header
+file.
+
+Below is a description of the mapping format. Please keep in mind that __this
+description is not authoritative__. The format is defined by the SDL and
+SDL_GameControllerDB projects and their documentation and code takes precedence.
+
+Each mapping is a single line of comma-separated values describing the GUID,
+name and layout of the gamepad. Lines that do not begin with a hexadecimal
+digit are ignored.
+
+The first value is always the gamepad GUID, a 32 character long hexadecimal
+string that typically identifies its make, model, revision and the type of
+connection to the computer. When this information is not available, the GUID is
+generated using the gamepad name. GLFW uses the SDL 2.0.5+ GUID format but can
+convert from the older formats.
+
+The second value is always the human-readable name of the gamepad.
+
+All subsequent values are in the form `<field>:<value>` and describe the layout
+of the mapping. These fields may not all be present and may occur in any order.
+
+The button fields are `a`, `b`, `x`, `y`, `back`, `start`, `guide`, `dpup`,
+`dpright`, `dpdown`, `dpleft`, `leftshoulder`, `rightshoulder`, `leftstick` and
+`rightstick`.
+
+The axis fields are `leftx`, `lefty`, `rightx`, `righty`, `lefttrigger` and
+`righttrigger`.
+
+The value of an axis or button field can be a joystick button, a joystick axis,
+a hat bitmask or empty. Joystick buttons are specified as `bN`, for example
+`b2` for the third button. Joystick axes are specified as `aN`, for example
+`a7` for the eighth button. Joystick hat bit masks are specified as `hN.N`, for
+example `h0.8` for left on the first hat. More than one bit may be set in the
+mask.
+
+Before an axis there may be a `+` or `-` range modifier, for example `+a3` for
+the positive half of the fourth axis. This restricts input to only the positive
+or negative halves of the joystick axis. After an axis or half-axis there may
+be the `~` inversion modifier, for example `a2~` or `-a7~`. This negates the
+values of the gamepad axis.
+
+The hat bit mask match the [hat states](@ref hat_state) in the joystick
+functions.
+
+There is also the special `platform` field that specifies which platform the
+mapping is valid for. Possible values are `Windows`, `Mac OS X` and `Linux`.
+
+Below is an example of what a gamepad mapping might look like. It is the
+one built into GLFW for Xbox controllers accessed via the XInput API on Windows.
+This example has been broken into several lines to fit on the page, but real
+gamepad mappings must be a single line.
+
+@code{.unparsed}
+78696e70757401000000000000000000,XInput Gamepad (GLFW),platform:Windows,a:b0,
+b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,back:b6,start:b7,leftstick:b8,
+rightstick:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,
+righttrigger:a5,dpup:h0.1,dpright:h0.2,dpdown:h0.4,dpleft:h0.8,
+@endcode
+
+@note GLFW does not yet support the output range and modifiers `+` and `-` that
+were recently added to SDL. The input modifiers `+`, `-` and `~` are supported
+and described above.
+
+
+@section time Time input
+
+GLFW provides high-resolution time input, in seconds, with @ref glfwGetTime.
+
+@code
+double seconds = glfwGetTime();
+@endcode
+
+It returns the number of seconds since the library was initialized with @ref
+glfwInit. The platform-specific time sources used typically have micro- or
+nanosecond resolution.
+
+You can modify the base time with @ref glfwSetTime.
+
+@code
+glfwSetTime(4.0);
+@endcode
+
+This sets the time to the specified time, in seconds, and it continues to count
+from there.
+
+You can also access the raw timer used to implement the functions above,
+with @ref glfwGetTimerValue.
+
+@code
+uint64_t value = glfwGetTimerValue();
+@endcode
+
+This value is in 1&nbsp;/&nbsp;frequency seconds. The frequency of the raw
+timer varies depending on the operating system and hardware. You can query the
+frequency, in Hz, with @ref glfwGetTimerFrequency.
+
+@code
+uint64_t frequency = glfwGetTimerFrequency();
+@endcode
+
+
+@section clipboard Clipboard input and output
+
+If the system clipboard contains a UTF-8 encoded string or if it can be
+converted to one, you can retrieve it with @ref glfwGetClipboardString. See the
+reference documentation for the lifetime of the returned string.
+
+@code
+const char* text = glfwGetClipboardString(NULL);
+if (text)
+{
+ insert_text(text);
+}
+@endcode
+
+If the clipboard is empty or if its contents could not be converted, `NULL` is
+returned.
+
+The contents of the system clipboard can be set to a UTF-8 encoded string with
+@ref glfwSetClipboardString.
+
+@code
+glfwSetClipboardString(NULL, "A string with words in it");
+@endcode
+
+
+@section path_drop Path drop input
+
+If you wish to receive the paths of files and/or directories dropped on
+a window, set a file drop callback.
+
+@code
+glfwSetDropCallback(window, drop_callback);
+@endcode
+
+The callback function receives an array of paths encoded as UTF-8.
+
+@code
+void drop_callback(GLFWwindow* window, int count, const char** paths)
+{
+ int i;
+ for (i = 0; i < count; i++)
+ handle_dropped_file(paths[i]);
+}
+@endcode
+
+The path array and its strings are only valid until the file drop callback
+returns, as they may have been generated specifically for that event. You need
+to make a deep copy of the array if you want to keep the paths.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/internal.dox b/libs/glfw-3.3.8/docs/internal.dox
new file mode 100644
index 0000000..685c6d1
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/internal.dox
@@ -0,0 +1,115 @@
+/*!
+
+@page internals_guide Internal structure
+
+@tableofcontents
+
+There are several interfaces inside GLFW. Each interface has its own area of
+responsibility and its own naming conventions.
+
+
+@section internals_public Public interface
+
+The most well-known is the public interface, described in the glfw3.h header
+file. This is implemented in source files shared by all platforms and these
+files contain no platform-specific code. This code usually ends up calling the
+platform and internal interfaces to do the actual work.
+
+The public interface uses the OpenGL naming conventions except with GLFW and
+glfw instead of GL and gl. For struct members, where OpenGL sets no precedent,
+it use headless camel case.
+
+Examples: `glfwCreateWindow`, `GLFWwindow`, `GLFW_RED_BITS`
+
+
+@section internals_native Native interface
+
+The [native interface](@ref native) is a small set of publicly available
+but platform-specific functions, described in the glfw3native.h header file and
+used to gain access to the underlying window, context and (on some platforms)
+display handles used by the platform interface.
+
+The function names of the native interface are similar to those of the public
+interface, but embeds the name of the interface that the returned handle is
+from.
+
+Examples: `glfwGetX11Window`, `glfwGetWGLContext`
+
+
+@section internals_internal Internal interface
+
+The internal interface consists of utility functions used by all other
+interfaces. It is shared code implemented in the same shared source files as
+the public and event interfaces. The internal interface is described in the
+internal.h header file.
+
+The internal interface is in charge of GLFW's global data, which it stores in
+a `_GLFWlibrary` struct named `_glfw`.
+
+The internal interface uses the same style as the public interface, except all
+global names have a leading underscore.
+
+Examples: `_glfwIsValidContextConfig`, `_GLFWwindow`, `_glfw.monitorCount`
+
+
+@section internals_platform Platform interface
+
+The platform interface implements all platform-specific operations as a service
+to the public interface. This includes event processing. The platform
+interface is never directly called by application code and never directly calls
+application-provided callbacks. It is also prohibited from modifying the
+platform-independent part of the internal structs. Instead, it calls the event
+interface when events interesting to GLFW are received.
+
+The platform interface mirrors those parts of the public interface that needs to
+perform platform-specific operations on some or all platforms. The are also
+named the same except that the glfw function prefix is replaced by
+_glfwPlatform.
+
+Examples: `_glfwPlatformCreateWindow`
+
+The platform interface also defines structs that contain platform-specific
+global and per-object state. Their names mirror those of the internal
+interface, except that an interface-specific suffix is added.
+
+Examples: `_GLFWwindowX11`, `_GLFWcontextWGL`
+
+These structs are incorporated as members into the internal interface structs
+using special macros that name them after the specific interface used. This
+prevents shared code from accidentally using these members.
+
+Examples: `window->win32.handle`, `_glfw.x11.display`
+
+
+@section internals_event Event interface
+
+The event interface is implemented in the same shared source files as the public
+interface and is responsible for delivering the events it receives to the
+application, either via callbacks, via window state changes or both.
+
+The function names of the event interface use a `_glfwInput` prefix and the
+ObjectEvent pattern.
+
+Examples: `_glfwInputWindowFocus`, `_glfwInputCursorPos`
+
+
+@section internals_static Static functions
+
+Static functions may be used by any interface and have no prefixes or suffixes.
+These use headless camel case.
+
+Examples: `isValidElementForJoystick`
+
+
+@section internals_config Configuration macros
+
+GLFW uses a number of configuration macros to select at compile time which
+interfaces and code paths to use. They are defined in the glfw_config.h header file,
+which is generated from the `glfw_config.h.in` file by CMake.
+
+Configuration macros the same style as tokens in the public interface, except
+with a leading underscore.
+
+Examples: `_GLFW_WIN32`, `_GLFW_BUILD_DLL`
+
+*/
diff --git a/libs/glfw-3.3.8/docs/intro.dox b/libs/glfw-3.3.8/docs/intro.dox
new file mode 100644
index 0000000..e563b50
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/intro.dox
@@ -0,0 +1,454 @@
+/*!
+
+@page intro_guide Introduction to the API
+
+@tableofcontents
+
+This guide introduces the basic concepts of GLFW and describes initialization,
+error handling and API guarantees and limitations. For a broad but shallow
+tutorial, see @ref quick_guide instead. For details on a specific function in
+this category, see the @ref init.
+
+There are also guides for the other areas of GLFW.
+
+ - @ref window_guide
+ - @ref context_guide
+ - @ref vulkan_guide
+ - @ref monitor_guide
+ - @ref input_guide
+
+
+@section intro_init Initialization and termination
+
+Before most GLFW functions may be called, the library must be initialized.
+This initialization checks what features are available on the machine,
+enumerates monitors and joysticks, initializes the timer and performs any
+required platform-specific initialization.
+
+Only the following functions may be called before the library has been
+successfully initialized, and only from the main thread.
+
+ - @ref glfwGetVersion
+ - @ref glfwGetVersionString
+ - @ref glfwGetError
+ - @ref glfwSetErrorCallback
+ - @ref glfwInitHint
+ - @ref glfwInit
+ - @ref glfwTerminate
+
+Calling any other function before successful initialization will cause a @ref
+GLFW_NOT_INITIALIZED error.
+
+
+@subsection intro_init_init Initializing GLFW
+
+The library is initialized with @ref glfwInit, which returns `GLFW_FALSE` if an
+error occurred.
+
+@code
+if (!glfwInit())
+{
+ // Handle initialization failure
+}
+@endcode
+
+If any part of initialization fails, any parts that succeeded are terminated as
+if @ref glfwTerminate had been called. The library only needs to be initialized
+once and additional calls to an already initialized library will return
+`GLFW_TRUE` immediately.
+
+Once the library has been successfully initialized, it should be terminated
+before the application exits. Modern systems are very good at freeing resources
+allocated by programs that exit, but GLFW sometimes has to change global system
+settings and these might not be restored without termination.
+
+
+@subsection init_hints Initialization hints
+
+Initialization hints are set before @ref glfwInit and affect how the library
+behaves until termination. Hints are set with @ref glfwInitHint.
+
+@code
+glfwInitHint(GLFW_JOYSTICK_HAT_BUTTONS, GLFW_FALSE);
+@endcode
+
+The values you set hints to are never reset by GLFW, but they only take effect
+during initialization. Once GLFW has been initialized, any values you set will
+be ignored until the library is terminated and initialized again.
+
+Some hints are platform specific. These may be set on any platform but they
+will only affect their specific platform. Other platforms will ignore them.
+Setting these hints requires no platform specific headers or functions.
+
+
+@subsubsection init_hints_shared Shared init hints
+
+@anchor GLFW_JOYSTICK_HAT_BUTTONS
+__GLFW_JOYSTICK_HAT_BUTTONS__ specifies whether to also expose joystick hats as
+buttons, for compatibility with earlier versions of GLFW that did not have @ref
+glfwGetJoystickHats. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+
+
+@subsubsection init_hints_osx macOS specific init hints
+
+@anchor GLFW_COCOA_CHDIR_RESOURCES_hint
+__GLFW_COCOA_CHDIR_RESOURCES__ specifies whether to set the current directory to
+the application to the `Contents/Resources` subdirectory of the application's
+bundle, if present. Set this with @ref glfwInitHint.
+
+@anchor GLFW_COCOA_MENUBAR_hint
+__GLFW_COCOA_MENUBAR__ specifies whether to create a basic menu bar, either from
+a nib or manually, when the first window is created, which is when AppKit is
+initialized. Set this with @ref glfwInitHint.
+
+
+@subsubsection init_hints_values Supported and default values
+
+Initialization hint | Default value | Supported values
+------------------------------- | ------------- | ----------------
+@ref GLFW_JOYSTICK_HAT_BUTTONS | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+@ref GLFW_COCOA_CHDIR_RESOURCES | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+@ref GLFW_COCOA_MENUBAR | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+
+
+@subsection intro_init_terminate Terminating GLFW
+
+Before your application exits, you should terminate the GLFW library if it has
+been initialized. This is done with @ref glfwTerminate.
+
+@code
+glfwTerminate();
+@endcode
+
+This will destroy any remaining window, monitor and cursor objects, restore any
+modified gamma ramps, re-enable the screensaver if it had been disabled and free
+any other resources allocated by GLFW.
+
+Once the library is terminated, it is as if it had never been initialized and
+you will need to initialize it again before being able to use GLFW. If the
+library was not initialized or had already been terminated, it return
+immediately.
+
+
+@section error_handling Error handling
+
+Some GLFW functions have return values that indicate an error, but this is often
+not very helpful when trying to figure out what happened or why it occurred.
+Other functions have no return value reserved for errors, so error notification
+needs a separate channel. Finally, far from all GLFW functions have return
+values.
+
+The last [error code](@ref errors) for the calling thread can be queried at any
+time with @ref glfwGetError.
+
+@code
+int code = glfwGetError(NULL);
+
+if (code != GLFW_NO_ERROR)
+ handle_error(code);
+@endcode
+
+If no error has occurred since the last call, @ref GLFW_NO_ERROR (zero) is
+returned. The error is cleared before the function returns.
+
+The error code indicates the general category of the error. Some error codes,
+such as @ref GLFW_NOT_INITIALIZED has only a single meaning, whereas others like
+@ref GLFW_PLATFORM_ERROR are used for many different errors.
+
+GLFW often has more information about an error than its general category. You
+can retrieve a UTF-8 encoded human-readable description along with the error
+code. If no error has occurred since the last call, the description is set to
+`NULL`.
+
+@code
+const char* description;
+int code = glfwGetError(&description);
+
+if (description)
+ display_error_message(code, description);
+@endcode
+
+The retrieved description string is only valid until the next error occurs.
+This means you must make a copy of it if you want to keep it.
+
+You can also set an error callback, which will be called each time an error
+occurs. It is set with @ref glfwSetErrorCallback.
+
+@code
+glfwSetErrorCallback(error_callback);
+@endcode
+
+The error callback receives the same error code and human-readable description
+returned by @ref glfwGetError.
+
+@code
+void error_callback(int code, const char* description)
+{
+ display_error_message(code, description);
+}
+@endcode
+
+The error callback is called after the error is stored, so calling @ref
+glfwGetError from within the error callback returns the same values as the
+callback argument.
+
+The description string passed to the callback is only valid until the error
+callback returns. This means you must make a copy of it if you want to keep it.
+
+__Reported errors are never fatal.__ As long as GLFW was successfully
+initialized, it will remain initialized and in a safe state until terminated
+regardless of how many errors occur. If an error occurs during initialization
+that causes @ref glfwInit to fail, any part of the library that was initialized
+will be safely terminated.
+
+Do not rely on a currently invalid call to generate a specific error, as in the
+future that same call may generate a different error or become valid.
+
+
+@section coordinate_systems Coordinate systems
+
+GLFW has two primary coordinate systems: the _virtual screen_ and the window
+_content area_ or _content area_. Both use the same unit: _virtual screen
+coordinates_, or just _screen coordinates_, which don't necessarily correspond
+to pixels.
+
+<img src="spaces.svg" width="90%" />
+
+Both the virtual screen and the content area coordinate systems have the X-axis
+pointing to the right and the Y-axis pointing down.
+
+Window and monitor positions are specified as the position of the upper-left
+corners of their content areas relative to the virtual screen, while cursor
+positions are specified relative to a window's content area.
+
+Because the origin of the window's content area coordinate system is also the
+point from which the window position is specified, you can translate content
+area coordinates to the virtual screen by adding the window position. The
+window frame, when present, extends out from the content area but does not
+affect the window position.
+
+Almost all positions and sizes in GLFW are measured in screen coordinates
+relative to one of the two origins above. This includes cursor positions,
+window positions and sizes, window frame sizes, monitor positions and video mode
+resolutions.
+
+Two exceptions are the [monitor physical size](@ref monitor_size), which is
+measured in millimetres, and [framebuffer size](@ref window_fbsize), which is
+measured in pixels.
+
+Pixels and screen coordinates may map 1:1 on your machine, but they won't on
+every other machine, for example on a Mac with a Retina display. The ratio
+between screen coordinates and pixels may also change at run-time depending on
+which monitor the window is currently considered to be on.
+
+
+@section guarantees_limitations Guarantees and limitations
+
+This section describes the conditions under which GLFW can be expected to
+function, barring bugs in the operating system or drivers. Use of GLFW outside
+of these limits may work on some platforms, or on some machines, or some of the
+time, or on some versions of GLFW, but it may break at any time and this will
+not be considered a bug.
+
+
+@subsection lifetime Pointer lifetimes
+
+GLFW will never free any pointer you provide to it and you must never free any
+pointer it provides to you.
+
+Many GLFW functions return pointers to dynamically allocated structures, strings
+or arrays, and some callbacks are provided with strings or arrays. These are
+always managed by GLFW and should never be freed by the application. The
+lifetime of these pointers is documented for each GLFW function and callback.
+If you need to keep this data, you must copy it before its lifetime expires.
+
+Many GLFW functions accept pointers to structures or strings allocated by the
+application. These are never freed by GLFW and are always the responsibility of
+the application. If GLFW needs to keep the data in these structures or strings,
+it is copied before the function returns.
+
+Pointer lifetimes are guaranteed not to be shortened in future minor or patch
+releases.
+
+
+@subsection reentrancy Reentrancy
+
+GLFW event processing and object destruction are not reentrant. This means that
+the following functions must not be called from any callback function:
+
+ - @ref glfwDestroyWindow
+ - @ref glfwDestroyCursor
+ - @ref glfwPollEvents
+ - @ref glfwWaitEvents
+ - @ref glfwWaitEventsTimeout
+ - @ref glfwTerminate
+
+These functions may be made reentrant in future minor or patch releases, but
+functions not on this list will not be made non-reentrant.
+
+
+@subsection thread_safety Thread safety
+
+Most GLFW functions must only be called from the main thread (the thread that
+calls main), but some may be called from any thread once the library has been
+initialized. Before initialization the whole library is thread-unsafe.
+
+The reference documentation for every GLFW function states whether it is limited
+to the main thread.
+
+Initialization, termination, event processing and the creation and
+destruction of windows, cursors and OpenGL and OpenGL ES contexts are all
+restricted to the main thread due to limitations of one or several platforms.
+
+Because event processing must be performed on the main thread, all callbacks
+except for the error callback will only be called on that thread. The error
+callback may be called on any thread, as any GLFW function may generate errors.
+
+The error code and description may be queried from any thread.
+
+ - @ref glfwGetError
+
+Empty events may be posted from any thread.
+
+ - @ref glfwPostEmptyEvent
+
+The window user pointer and close flag may be read and written from any thread,
+but this is not synchronized by GLFW.
+
+ - @ref glfwGetWindowUserPointer
+ - @ref glfwSetWindowUserPointer
+ - @ref glfwWindowShouldClose
+ - @ref glfwSetWindowShouldClose
+
+These functions for working with OpenGL and OpenGL ES contexts may be called
+from any thread, but the window object is not synchronized by GLFW.
+
+ - @ref glfwMakeContextCurrent
+ - @ref glfwGetCurrentContext
+ - @ref glfwSwapBuffers
+ - @ref glfwSwapInterval
+ - @ref glfwExtensionSupported
+ - @ref glfwGetProcAddress
+
+The raw timer functions may be called from any thread.
+
+ - @ref glfwGetTimerFrequency
+ - @ref glfwGetTimerValue
+
+The regular timer may be used from any thread, but reading and writing the timer
+offset is not synchronized by GLFW.
+
+ - @ref glfwGetTime
+ - @ref glfwSetTime
+
+Library version information may be queried from any thread.
+
+ - @ref glfwGetVersion
+ - @ref glfwGetVersionString
+
+All Vulkan related functions may be called from any thread.
+
+ - @ref glfwVulkanSupported
+ - @ref glfwGetRequiredInstanceExtensions
+ - @ref glfwGetInstanceProcAddress
+ - @ref glfwGetPhysicalDevicePresentationSupport
+ - @ref glfwCreateWindowSurface
+
+GLFW uses synchronization objects internally only to manage the per-thread
+context and error states. Additional synchronization is left to the
+application.
+
+Functions that may currently be called from any thread will always remain so,
+but functions that are currently limited to the main thread may be updated to
+allow calls from any thread in future releases.
+
+
+@subsection compatibility Version compatibility
+
+GLFW uses [Semantic Versioning](https://semver.org/). This guarantees source
+and binary backward compatibility with earlier minor versions of the API. This
+means that you can drop in a newer version of the library and existing programs
+will continue to compile and existing binaries will continue to run.
+
+Once a function or constant has been added, the signature of that function or
+value of that constant will remain unchanged until the next major version of
+GLFW. No compatibility of any kind is guaranteed between major versions.
+
+Undocumented behavior, i.e. behavior that is not described in the documentation,
+may change at any time until it is documented.
+
+If the reference documentation and the implementation differ, the reference
+documentation will almost always take precedence and the implementation will be
+fixed in the next release. The reference documentation will also take
+precedence over anything stated in a guide.
+
+
+@subsection event_order Event order
+
+The order of arrival of related events is not guaranteed to be consistent
+across platforms. The exception is synthetic key and mouse button release
+events, which are always delivered after the window defocus event.
+
+
+@section intro_version Version management
+
+GLFW provides mechanisms for identifying what version of GLFW your application
+was compiled against as well as what version it is currently running against.
+If you are loading GLFW dynamically (not just linking dynamically), you can use
+this to verify that the library binary is compatible with your application.
+
+
+@subsection intro_version_compile Compile-time version
+
+The compile-time version of GLFW is provided by the GLFW header with the
+`GLFW_VERSION_MAJOR`, `GLFW_VERSION_MINOR` and `GLFW_VERSION_REVISION` macros.
+
+@code
+printf("Compiled against GLFW %i.%i.%i\n",
+ GLFW_VERSION_MAJOR,
+ GLFW_VERSION_MINOR,
+ GLFW_VERSION_REVISION);
+@endcode
+
+
+@subsection intro_version_runtime Run-time version
+
+The run-time version can be retrieved with @ref glfwGetVersion, a function that
+may be called regardless of whether GLFW is initialized.
+
+@code
+int major, minor, revision;
+glfwGetVersion(&major, &minor, &revision);
+
+printf("Running against GLFW %i.%i.%i\n", major, minor, revision);
+@endcode
+
+
+@subsection intro_version_string Version string
+
+GLFW 3 also provides a compile-time generated version string that describes the
+version, platform, compiler and any platform-specific compile-time options.
+This is primarily intended for submitting bug reports, to allow developers to
+see which code paths are enabled in a binary.
+
+The version string is returned by @ref glfwGetVersionString, a function that may
+be called regardless of whether GLFW is initialized.
+
+__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.
+
+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
+
+For example, when compiling GLFW 3.0 with MinGW using the Win32 and WGL
+back ends, the version string may look something like this:
+
+@code
+3.0.0 Win32 WGL MinGW
+@endcode
+
+*/
diff --git a/libs/glfw-3.3.8/docs/main.dox b/libs/glfw-3.3.8/docs/main.dox
new file mode 100644
index 0000000..bd563d9
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/main.dox
@@ -0,0 +1,46 @@
+/*!
+
+@mainpage notitle
+
+@section main_intro Introduction
+
+GLFW is a free, Open Source, multi-platform library for OpenGL, OpenGL ES and
+Vulkan application development. It provides a simple, platform-independent API
+for creating windows, contexts and surfaces, reading input, handling events, etc.
+
+@ref news_33 list new features, caveats and deprecations.
+
+@ref quick_guide is a guide for users new to GLFW. It takes you through how to
+write a small but complete program.
+
+There are guides for each section of the API:
+
+ - @ref intro_guide – initialization, error handling and high-level design
+ - @ref window_guide – creating and working with windows and framebuffers
+ - @ref context_guide – working with OpenGL and OpenGL ES contexts
+ - @ref vulkan_guide - working with Vulkan objects and extensions
+ - @ref monitor_guide – enumerating and working with monitors and video modes
+ - @ref input_guide – receiving events, polling and processing input
+
+Once you have written a program, see @ref compile_guide and @ref build_guide.
+
+The [reference documentation](modules.html) provides more detailed information
+about specific functions.
+
+@ref moving_guide explains what has changed and how to update existing code to
+use the new API.
+
+There is a section on @ref guarantees_limitations for pointer lifetimes,
+reentrancy, thread safety, event order and backward and forward compatibility.
+
+The [FAQ](https://www.glfw.org/faq.html) answers many common questions about the
+design, implementation and use of GLFW.
+
+Finally, @ref compat_guide explains what APIs, standards and protocols GLFW uses
+and what happens when they are not present on a given machine.
+
+This documentation was generated with Doxygen. The sources for it are available
+in both the [source distribution](https://www.glfw.org/download.html) and
+[GitHub repository](https://github.com/glfw/glfw).
+
+*/
diff --git a/libs/glfw-3.3.8/docs/monitor.dox b/libs/glfw-3.3.8/docs/monitor.dox
new file mode 100644
index 0000000..86eb454
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/monitor.dox
@@ -0,0 +1,268 @@
+/*!
+
+@page monitor_guide Monitor guide
+
+@tableofcontents
+
+This guide introduces the monitor related functions of GLFW. For details on
+a specific function in this category, see the @ref monitor. There are also
+guides for the other areas of GLFW.
+
+ - @ref intro_guide
+ - @ref window_guide
+ - @ref context_guide
+ - @ref vulkan_guide
+ - @ref input_guide
+
+
+@section monitor_object Monitor objects
+
+A monitor object represents a currently connected monitor and is represented as
+a pointer to the [opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type
+@ref GLFWmonitor. Monitor objects cannot be created or destroyed by the
+application and retain their addresses until the monitors they represent are
+disconnected or until the library is [terminated](@ref intro_init_terminate).
+
+Each monitor has a current video mode, a list of supported video modes,
+a virtual position, a human-readable name, an estimated physical size and
+a gamma ramp. One of the monitors is the primary monitor.
+
+The virtual position of a monitor is in
+[screen coordinates](@ref coordinate_systems) and, together with the current
+video mode, describes the viewports that the connected monitors provide into the
+virtual desktop that spans them.
+
+To see how GLFW views your monitor setup and its available video modes, run the
+`monitors` test program.
+
+
+@subsection monitor_monitors Retrieving monitors
+
+The primary monitor is returned by @ref glfwGetPrimaryMonitor. It is the user's
+preferred monitor and is usually the one with global UI elements like task bar
+or menu bar.
+
+@code
+GLFWmonitor* primary = glfwGetPrimaryMonitor();
+@endcode
+
+You can retrieve all currently connected monitors with @ref glfwGetMonitors.
+See the reference documentation for the lifetime of the returned array.
+
+@code
+int count;
+GLFWmonitor** monitors = glfwGetMonitors(&count);
+@endcode
+
+The primary monitor is always the first monitor in the returned array, but other
+monitors may be moved to a different index when a monitor is connected or
+disconnected.
+
+
+@subsection monitor_event Monitor configuration changes
+
+If you wish to be notified when a monitor is connected or disconnected, set
+a monitor callback.
+
+@code
+glfwSetMonitorCallback(monitor_callback);
+@endcode
+
+The callback function receives the handle for the monitor that has been
+connected or disconnected and the event that occurred.
+
+@code
+void monitor_callback(GLFWmonitor* monitor, int event)
+{
+ if (event == GLFW_CONNECTED)
+ {
+ // The monitor was connected
+ }
+ else if (event == GLFW_DISCONNECTED)
+ {
+ // The monitor was disconnected
+ }
+}
+@endcode
+
+If a monitor is disconnected, all windows that are full screen on it will be
+switched to windowed mode before the callback is called. Only @ref
+glfwGetMonitorName and @ref glfwGetMonitorUserPointer will return useful values
+for a disconnected monitor and only before the monitor callback returns.
+
+
+@section monitor_properties Monitor properties
+
+Each monitor has a current video mode, a list of supported video modes,
+a virtual position, a content scale, a human-readable name, a user pointer, an
+estimated physical size and a gamma ramp.
+
+
+@subsection monitor_modes Video modes
+
+GLFW generally does a good job selecting a suitable video mode when you create
+a full screen window, change its video mode or make a windowed one full
+screen, but it is sometimes useful to know exactly which video modes are
+supported.
+
+Video modes are represented as @ref GLFWvidmode structures. You can get an
+array of the video modes supported by a monitor with @ref glfwGetVideoModes.
+See the reference documentation for the lifetime of the returned array.
+
+@code
+int count;
+GLFWvidmode* modes = glfwGetVideoModes(monitor, &count);
+@endcode
+
+To get the current video mode of a monitor call @ref glfwGetVideoMode. See the
+reference documentation for the lifetime of the returned pointer.
+
+@code
+const GLFWvidmode* mode = glfwGetVideoMode(monitor);
+@endcode
+
+The resolution of a video mode is specified in
+[screen coordinates](@ref coordinate_systems), not pixels.
+
+
+@subsection monitor_size Physical size
+
+The physical size of a monitor in millimetres, or an estimation of it, can be
+retrieved with @ref glfwGetMonitorPhysicalSize. This has no relation to its
+current _resolution_, i.e. the width and height of its current
+[video mode](@ref monitor_modes).
+
+@code
+int width_mm, height_mm;
+glfwGetMonitorPhysicalSize(monitor, &width_mm, &height_mm);
+@endcode
+
+While this can be used to calculate the raw DPI of a monitor, this is often not
+useful. Instead use the [monitor content scale](@ref monitor_scale) and
+[window content scale](@ref window_scale) to scale your content.
+
+
+@subsection monitor_scale Content scale
+
+The content scale for a monitor can be retrieved with @ref
+glfwGetMonitorContentScale.
+
+@code
+float xscale, yscale;
+glfwGetMonitorContentScale(monitor, &xscale, &yscale);
+@endcode
+
+The content scale is the ratio between the current DPI and the platform's
+default DPI. This is especially important for text and any UI elements. If the
+pixel dimensions of your UI scaled by this look appropriate on your machine then
+it should appear at a reasonable size on other machines regardless of their DPI
+and scaling settings. This relies on the system DPI and scaling settings being
+somewhat correct.
+
+The content scale may depend on both the monitor resolution and pixel density
+and on user settings. It may be very different from the raw DPI calculated from
+the physical size and current resolution.
+
+
+@subsection monitor_pos Virtual position
+
+The position of the monitor on the virtual desktop, in
+[screen coordinates](@ref coordinate_systems), can be retrieved with @ref
+glfwGetMonitorPos.
+
+@code
+int xpos, ypos;
+glfwGetMonitorPos(monitor, &xpos, &ypos);
+@endcode
+
+
+@subsection monitor_workarea Work area
+
+The area of a monitor not occupied by global task bars or menu bars is the work
+area. This is specified in [screen coordinates](@ref coordinate_systems) and
+can be retrieved with @ref glfwGetMonitorWorkarea.
+
+@code
+int xpos, ypos, width, height;
+glfwGetMonitorWorkarea(monitor, &xpos, &ypos, &width, &height);
+@endcode
+
+
+@subsection monitor_name Human-readable name
+
+The human-readable, UTF-8 encoded name of a monitor is returned by @ref
+glfwGetMonitorName. See the reference documentation for the lifetime of the
+returned string.
+
+@code
+const char* name = glfwGetMonitorName(monitor);
+@endcode
+
+Monitor names are not guaranteed to be unique. Two monitors of the same model
+and make may have the same name. Only the monitor handle is guaranteed to be
+unique, and only until that monitor is disconnected.
+
+
+@subsection monitor_userptr User pointer
+
+Each monitor has a user pointer that can be set with @ref
+glfwSetMonitorUserPointer and queried with @ref glfwGetMonitorUserPointer. This
+can be used for any purpose you need and will not be modified by GLFW. The
+value will be kept until the monitor is disconnected or until the library is
+terminated.
+
+The initial value of the pointer is `NULL`.
+
+
+@subsection monitor_gamma Gamma ramp
+
+The gamma ramp of a monitor can be set with @ref glfwSetGammaRamp, which accepts
+a monitor handle and a pointer to a @ref GLFWgammaramp structure.
+
+@code
+GLFWgammaramp ramp;
+unsigned short red[256], green[256], blue[256];
+
+ramp.size = 256;
+ramp.red = red;
+ramp.green = green;
+ramp.blue = blue;
+
+for (i = 0; i < ramp.size; i++)
+{
+ // Fill out gamma ramp arrays as desired
+}
+
+glfwSetGammaRamp(monitor, &ramp);
+@endcode
+
+The gamma ramp data is copied before the function returns, so there is no need
+to keep it around once the ramp has been set.
+
+It is recommended that your gamma ramp have the same size as the current gamma
+ramp for that monitor.
+
+The current gamma ramp for a monitor is returned by @ref glfwGetGammaRamp. See
+the reference documentation for the lifetime of the returned structure.
+
+@code
+const GLFWgammaramp* ramp = glfwGetGammaRamp(monitor);
+@endcode
+
+If you wish to set a regular gamma ramp, you can have GLFW calculate it for you
+from the desired exponent with @ref glfwSetGamma, which in turn calls @ref
+glfwSetGammaRamp with the resulting ramp.
+
+@code
+glfwSetGamma(monitor, 1.0);
+@endcode
+
+To experiment with gamma correction via the @ref glfwSetGamma function, run the
+`gamma` test program.
+
+@note The software controlled gamma ramp is applied _in addition_ to the
+hardware gamma correction, which today is usually an approximation of sRGB
+gamma. This means that setting a perfectly linear ramp, or gamma 1.0, will
+produce the default (usually sRGB-like) behavior.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/moving.dox b/libs/glfw-3.3.8/docs/moving.dox
new file mode 100644
index 0000000..b80d84a
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/moving.dox
@@ -0,0 +1,513 @@
+/*!
+
+@page moving_guide Moving from GLFW 2 to 3
+
+@tableofcontents
+
+This is a transition guide for moving from GLFW 2 to 3. It describes what has
+changed or been removed, but does _not_ include
+[new features](@ref news) unless they are required when moving an existing code
+base onto the new API. For example, the new multi-monitor functions are
+required to create full screen windows with GLFW 3.
+
+
+@section moving_removed Changed and removed features
+
+@subsection moving_renamed_files Renamed library and header file
+
+The GLFW 3 header is named @ref glfw3.h and moved to the `GLFW` directory, to
+avoid collisions with the headers of other major versions. Similarly, the GLFW
+3 library is named `glfw3,` except when it's installed as a shared library on
+Unix-like systems, where it uses the
+[soname](https://en.wikipedia.org/wiki/soname) `libglfw.so.3`.
+
+@par Old syntax
+@code
+#include <GL/glfw.h>
+@endcode
+
+@par New syntax
+@code
+#include <GLFW/glfw3.h>
+@endcode
+
+
+@subsection moving_threads Removal of threading functions
+
+The threading functions have been removed, including the per-thread sleep
+function. They were fairly primitive, under-used, poorly integrated and took
+time away from the focus of GLFW (i.e. context, input and window). There are
+better threading libraries available and native threading support is available
+in both [C++11](https://en.cppreference.com/w/cpp/thread) and
+[C11](https://en.cppreference.com/w/c/thread), both of which are gaining
+traction.
+
+If you wish to use the C++11 or C11 facilities but your compiler doesn't yet
+support them, see the
+[TinyThread++](https://gitorious.org/tinythread/tinythreadpp) and
+[TinyCThread](https://github.com/tinycthread/tinycthread) projects created by
+the original author of GLFW. These libraries implement a usable subset of the
+threading APIs in C++11 and C11, and in fact some GLFW 3 test programs use
+TinyCThread.
+
+However, GLFW 3 has better support for _use from multiple threads_ than GLFW
+2 had. Contexts can be made current on any thread, although only a single
+thread at a time, and the documentation explicitly states which functions may be
+used from any thread and which must only be used from the main thread.
+
+@par Removed functions
+`glfwSleep`, `glfwCreateThread`, `glfwDestroyThread`, `glfwWaitThread`,
+`glfwGetThreadID`, `glfwCreateMutex`, `glfwDestroyMutex`, `glfwLockMutex`,
+`glfwUnlockMutex`, `glfwCreateCond`, `glfwDestroyCond`, `glfwWaitCond`,
+`glfwSignalCond`, `glfwBroadcastCond` and `glfwGetNumberOfProcessors`.
+
+@par Removed types
+`GLFWthreadfun`
+
+
+@subsection moving_image Removal of image and texture loading
+
+The image and texture loading functions have been removed. They only supported
+the Targa image format, making them mostly useful for beginner level examples.
+To become of sufficiently high quality to warrant keeping them in GLFW 3, they
+would need not only to support other formats, but also modern extensions to
+OpenGL texturing. This would either add a number of external
+dependencies (libjpeg, libpng, etc.), or force GLFW to ship with inline versions
+of these libraries.
+
+As there already are libraries doing this, it is unnecessary both to duplicate
+the work and to tie the duplicate to GLFW. The resulting library would also be
+platform-independent, as both OpenGL and stdio are available wherever GLFW is.
+
+@par Removed functions
+`glfwReadImage`, `glfwReadMemoryImage`, `glfwFreeImage`, `glfwLoadTexture2D`,
+`glfwLoadMemoryTexture2D` and `glfwLoadTextureImage2D`.
+
+
+@subsection moving_stdcall Removal of GLFWCALL macro
+
+The `GLFWCALL` macro, which made callback functions use
+[__stdcall](https://msdn.microsoft.com/en-us/library/zxk0tw93.aspx) on Windows,
+has been removed. GLFW is written in C, not Pascal. Removing this macro means
+there's one less thing for application programmers to remember, i.e. the
+requirement to mark all callback functions with `GLFWCALL`. It also simplifies
+the creation of DLLs and DLL link libraries, as there's no need to explicitly
+disable `@n` entry point suffixes.
+
+@par Old syntax
+@code
+void GLFWCALL callback_function(...);
+@endcode
+
+@par New syntax
+@code
+void callback_function(...);
+@endcode
+
+
+@subsection moving_window_handles Window handle parameters
+
+Because GLFW 3 supports multiple windows, window handle parameters have been
+added to all window-related GLFW functions and callbacks. The handle of
+a newly created window is returned by @ref glfwCreateWindow (formerly
+`glfwOpenWindow`). Window handles are pointers to the
+[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWwindow.
+
+@par Old syntax
+@code
+glfwSetWindowTitle("New Window Title");
+@endcode
+
+@par New syntax
+@code
+glfwSetWindowTitle(window, "New Window Title");
+@endcode
+
+
+@subsection moving_monitor Explicit monitor selection
+
+GLFW 3 provides support for multiple monitors. To request a full screen mode window,
+instead of passing `GLFW_FULLSCREEN` you specify which monitor you wish the
+window to use. The @ref glfwGetPrimaryMonitor function returns the monitor that
+GLFW 2 would have selected, but there are many other
+[monitor functions](@ref monitor_guide). Monitor handles are pointers to the
+[opaque](https://en.wikipedia.org/wiki/Opaque_data_type) type @ref GLFWmonitor.
+
+@par Old basic full screen
+@code
+glfwOpenWindow(640, 480, 8, 8, 8, 0, 24, 0, GLFW_FULLSCREEN);
+@endcode
+
+@par New basic full screen
+@code
+window = glfwCreateWindow(640, 480, "My Window", glfwGetPrimaryMonitor(), NULL);
+@endcode
+
+@note The framebuffer bit depth parameters of `glfwOpenWindow` have been turned
+into [window hints](@ref window_hints), but as they have been given
+[sane defaults](@ref window_hints_values) you rarely need to set these hints.
+
+
+@subsection moving_autopoll Removal of automatic event polling
+
+GLFW 3 does not automatically poll for events in @ref glfwSwapBuffers, meaning
+you need to call @ref glfwPollEvents or @ref glfwWaitEvents yourself. Unlike
+buffer swap, which acts on a single window, the event processing functions act
+on all windows at once.
+
+@par Old basic main loop
+@code
+while (...)
+{
+ // Process input
+ // Render output
+ glfwSwapBuffers();
+}
+@endcode
+
+@par New basic main loop
+@code
+while (...)
+{
+ // Process input
+ // Render output
+ glfwSwapBuffers(window);
+ glfwPollEvents();
+}
+@endcode
+
+
+@subsection moving_context Explicit context management
+
+Each GLFW 3 window has its own OpenGL context and only you, the application
+programmer, can know which context should be current on which thread at any
+given time. Therefore, GLFW 3 leaves that decision to you.
+
+This means that you need to call @ref glfwMakeContextCurrent after creating
+a window before you can call any OpenGL functions.
+
+
+@subsection moving_hidpi Separation of window and framebuffer sizes
+
+Window positions and sizes now use screen coordinates, which may not be the same
+as pixels on machines with high-DPI monitors. This is important as OpenGL uses
+pixels, not screen coordinates. For example, the rectangle specified with
+`glViewport` needs to use pixels. Therefore, framebuffer size functions have
+been added. You can retrieve the size of the framebuffer of a window with @ref
+glfwGetFramebufferSize function. A framebuffer size callback has also been
+added, which can be set with @ref glfwSetFramebufferSizeCallback.
+
+@par Old basic viewport setup
+@code
+glfwGetWindowSize(&width, &height);
+glViewport(0, 0, width, height);
+@endcode
+
+@par New basic viewport setup
+@code
+glfwGetFramebufferSize(window, &width, &height);
+glViewport(0, 0, width, height);
+@endcode
+
+
+@subsection moving_window_close Window closing changes
+
+The `GLFW_OPENED` window parameter has been removed. As long as the window has
+not been destroyed, whether through @ref glfwDestroyWindow or @ref
+glfwTerminate, the window is "open".
+
+A user attempting to close a window is now just an event like any other. Unlike
+GLFW 2, windows and contexts created with GLFW 3 will never be destroyed unless
+you choose them to be. Each window now has a close flag that is set to
+`GLFW_TRUE` when the user attempts to close that window. By default, nothing else
+happens and the window stays visible. It is then up to you to either destroy
+the window, take some other action or ignore the request.
+
+You can query the close flag at any time with @ref glfwWindowShouldClose and set
+it at any time with @ref glfwSetWindowShouldClose.
+
+@par Old basic main loop
+@code
+while (glfwGetWindowParam(GLFW_OPENED))
+{
+ ...
+}
+@endcode
+
+@par New basic main loop
+@code
+while (!glfwWindowShouldClose(window))
+{
+ ...
+}
+@endcode
+
+The close callback no longer returns a value. Instead, it is called after the
+close flag has been set so it can override its value, if it chooses to, before
+event processing completes. You may however not call @ref glfwDestroyWindow
+from the close callback (or any other window related callback).
+
+@par Old syntax
+@code
+int GLFWCALL window_close_callback(void);
+@endcode
+
+@par New syntax
+@code
+void window_close_callback(GLFWwindow* window);
+@endcode
+
+@note GLFW never clears the close flag to `GLFW_FALSE`, meaning you can use it
+for other reasons to close the window as well, for example the user choosing
+Quit from an in-game menu.
+
+
+@subsection moving_hints Persistent window hints
+
+The `glfwOpenWindowHint` function has been renamed to @ref glfwWindowHint.
+
+Window hints are no longer reset to their default values on window creation, but
+instead retain their values until modified by @ref glfwWindowHint or @ref
+glfwDefaultWindowHints, or until the library is terminated and re-initialized.
+
+
+@subsection moving_video_modes Video mode enumeration
+
+Video mode enumeration is now per-monitor. The @ref glfwGetVideoModes function
+now returns all available modes for a specific monitor instead of requiring you
+to guess how large an array you need. The `glfwGetDesktopMode` function, which
+had poorly defined behavior, has been replaced by @ref glfwGetVideoMode, which
+returns the current mode of a monitor.
+
+
+@subsection moving_char_up Removal of character actions
+
+The action parameter of the [character callback](@ref GLFWcharfun) has been
+removed. This was an artefact of the origin of GLFW, i.e. being developed in
+English by a Swede. However, many keyboard layouts require more than one key to
+produce characters with diacritical marks. Even the Swedish keyboard layout
+requires this for uncommon cases like ü.
+
+@par Old syntax
+@code
+void GLFWCALL character_callback(int character, int action);
+@endcode
+
+@par New syntax
+@code
+void character_callback(GLFWwindow* window, int character);
+@endcode
+
+
+@subsection moving_cursorpos Cursor position changes
+
+The `glfwGetMousePos` function has been renamed to @ref glfwGetCursorPos,
+`glfwSetMousePos` to @ref glfwSetCursorPos and `glfwSetMousePosCallback` to @ref
+glfwSetCursorPosCallback.
+
+The cursor position is now `double` instead of `int`, both for the direct
+functions and for the callback. Some platforms can provide sub-pixel cursor
+movement and this data is now passed on to the application where available. On
+platforms where this is not provided, the decimal part is zero.
+
+GLFW 3 only allows you to position the cursor within a window using @ref
+glfwSetCursorPos (formerly `glfwSetMousePos`) when that window is active.
+Unless the window is active, the function fails silently.
+
+
+@subsection moving_wheel Wheel position replaced by scroll offsets
+
+The `glfwGetMouseWheel` function has been removed. Scrolling is the input of
+offsets and has no absolute position. The mouse wheel callback has been
+replaced by a [scroll callback](@ref GLFWscrollfun) that receives
+two-dimensional floating point scroll offsets. This allows you to receive
+precise scroll data from for example modern touchpads.
+
+@par Old syntax
+@code
+void GLFWCALL mouse_wheel_callback(int position);
+@endcode
+
+@par New syntax
+@code
+void scroll_callback(GLFWwindow* window, double xoffset, double yoffset);
+@endcode
+
+@par Removed functions
+`glfwGetMouseWheel`
+
+
+@subsection moving_repeat Key repeat action
+
+The `GLFW_KEY_REPEAT` enable has been removed and key repeat is always enabled
+for both keys and characters. A new key action, `GLFW_REPEAT`, has been added
+to allow the [key callback](@ref GLFWkeyfun) to distinguish an initial key press
+from a repeat. Note that @ref glfwGetKey still returns only `GLFW_PRESS` or
+`GLFW_RELEASE`.
+
+
+@subsection moving_keys Physical key input
+
+GLFW 3 key tokens map to physical keys, unlike in GLFW 2 where they mapped to
+the values generated by the current keyboard layout. The tokens are named
+according to the values they would have using the standard US layout, but this
+is only a convenience, as most programmers are assumed to know that layout.
+This means that (for example) `GLFW_KEY_LEFT_BRACKET` is always a single key and
+is the same key in the same place regardless of what keyboard layouts the users
+of your program has.
+
+The key input facility was never meant for text input, although using it that
+way worked slightly better in GLFW 2. If you were using it to input text, you
+should be using the character callback instead, on both GLFW 2 and 3. This will
+give you the characters being input, as opposed to the keys being pressed.
+
+GLFW 3 has key tokens for all keys on a standard 105 key keyboard, so instead of
+having to remember whether to check for `a` or `A`, you now check for
+@ref GLFW_KEY_A.
+
+
+@subsection moving_joystick Joystick function changes
+
+The `glfwGetJoystickPos` function has been renamed to @ref glfwGetJoystickAxes.
+
+The `glfwGetJoystickParam` function and the `GLFW_PRESENT`, `GLFW_AXES` and
+`GLFW_BUTTONS` tokens have been replaced by the @ref glfwJoystickPresent
+function as well as axis and button counts returned by the @ref
+glfwGetJoystickAxes and @ref glfwGetJoystickButtons functions.
+
+
+@subsection moving_mbcs Win32 MBCS support
+
+The Win32 port of GLFW 3 will not compile in
+[MBCS mode](https://msdn.microsoft.com/en-us/library/5z097dxa.aspx).
+However, because the use of the Unicode version of the Win32 API doesn't affect
+the process as a whole, but only those windows created using it, it's perfectly
+possible to call MBCS functions from other parts of the same application.
+Therefore, even if an application using GLFW has MBCS mode code, there's no need
+for GLFW itself to support it.
+
+
+@subsection moving_windows Support for versions of Windows older than XP
+
+All explicit support for version of Windows older than XP has been removed.
+There is no code that actively prevents GLFW 3 from running on these earlier
+versions, but it uses Win32 functions that those versions lack.
+
+Windows XP was released in 2001, and by now (January 2015) it has not only
+replaced almost all earlier versions of Windows, but is itself rapidly being
+replaced by Windows 7 and 8. The MSDN library doesn't even provide
+documentation for version older than Windows 2000, making it difficult to
+maintain compatibility with these versions even if it was deemed worth the
+effort.
+
+The Win32 API has also not stood still, and GLFW 3 uses many functions only
+present on Windows XP or later. Even supporting an OS as new as XP (new
+from the perspective of GLFW 2, which still supports Windows 95) requires
+runtime checking for a number of functions that are present only on modern
+version of Windows.
+
+
+@subsection moving_syskeys Capture of system-wide hotkeys
+
+The ability to disable and capture system-wide hotkeys like Alt+Tab has been
+removed. Modern applications, whether they're games, scientific visualisations
+or something else, are nowadays expected to be good desktop citizens and allow
+these hotkeys to function even when running in full screen mode.
+
+
+@subsection moving_terminate Automatic termination
+
+GLFW 3 does not register @ref glfwTerminate with `atexit` at initialization,
+because `exit` calls registered functions from the calling thread and while it
+is permitted to call `exit` from any thread, @ref glfwTerminate must only be
+called from the main thread.
+
+To release all resources allocated by GLFW, you should call @ref glfwTerminate
+yourself, from the main thread, before the program terminates. Note that this
+destroys all windows not already destroyed with @ref glfwDestroyWindow,
+invalidating any window handles you may still have.
+
+
+@subsection moving_glu GLU header inclusion
+
+GLFW 3 does not by default include the GLU header and GLU itself has been
+deprecated by [Khronos](https://en.wikipedia.org/wiki/Khronos_Group). __New
+projects should not use GLU__, but if you need it for legacy code that
+has been moved to GLFW 3, you can request that the GLFW header includes it by
+defining @ref GLFW_INCLUDE_GLU before the inclusion of the GLFW header.
+
+@par Old syntax
+@code
+#include <GL/glfw.h>
+@endcode
+
+@par New syntax
+@code
+#define GLFW_INCLUDE_GLU
+#include <GLFW/glfw3.h>
+@endcode
+
+There are many libraries that offer replacements for the functionality offered
+by GLU. For the matrix helper functions, see math libraries like
+[GLM](https://github.com/g-truc/glm) (for C++),
+[linmath.h](https://github.com/datenwolf/linmath.h) (for C) and others. For the
+tessellation functions, see for example
+[libtess2](https://github.com/memononen/libtess2).
+
+
+@section moving_tables Name change tables
+
+
+@subsection moving_renamed_functions Renamed functions
+
+| GLFW 2 | GLFW 3 | Notes |
+| --------------------------- | ----------------------------- | ----- |
+| `glfwOpenWindow` | @ref glfwCreateWindow | All channel bit depths are now hints
+| `glfwCloseWindow` | @ref glfwDestroyWindow | |
+| `glfwOpenWindowHint` | @ref glfwWindowHint | Now accepts all `GLFW_*_BITS` tokens |
+| `glfwEnable` | @ref glfwSetInputMode | |
+| `glfwDisable` | @ref glfwSetInputMode | |
+| `glfwGetMousePos` | @ref glfwGetCursorPos | |
+| `glfwSetMousePos` | @ref glfwSetCursorPos | |
+| `glfwSetMousePosCallback` | @ref glfwSetCursorPosCallback | |
+| `glfwSetMouseWheelCallback` | @ref glfwSetScrollCallback | Accepts two-dimensional scroll offsets as doubles |
+| `glfwGetJoystickPos` | @ref glfwGetJoystickAxes | |
+| `glfwGetWindowParam` | @ref glfwGetWindowAttrib | |
+| `glfwGetGLVersion` | @ref glfwGetWindowAttrib | Use `GLFW_CONTEXT_VERSION_MAJOR`, `GLFW_CONTEXT_VERSION_MINOR` and `GLFW_CONTEXT_REVISION` |
+| `glfwGetDesktopMode` | @ref glfwGetVideoMode | Returns the current mode of a monitor |
+| `glfwGetJoystickParam` | @ref glfwJoystickPresent | The axis and button counts are provided by @ref glfwGetJoystickAxes and @ref glfwGetJoystickButtons |
+
+
+@subsection moving_renamed_types Renamed types
+
+| GLFW 2 | GLFW 3 | Notes |
+| ------------------- | --------------------- | |
+| `GLFWmousewheelfun` | @ref GLFWscrollfun | |
+| `GLFWmouseposfun` | @ref GLFWcursorposfun | |
+
+
+@subsection moving_renamed_tokens Renamed tokens
+
+| GLFW 2 | GLFW 3 | Notes |
+| --------------------------- | ---------------------------- | ----- |
+| `GLFW_OPENGL_VERSION_MAJOR` | `GLFW_CONTEXT_VERSION_MAJOR` | Renamed as it applies to OpenGL ES as well |
+| `GLFW_OPENGL_VERSION_MINOR` | `GLFW_CONTEXT_VERSION_MINOR` | Renamed as it applies to OpenGL ES as well |
+| `GLFW_FSAA_SAMPLES` | `GLFW_SAMPLES` | Renamed to match the OpenGL API |
+| `GLFW_ACTIVE` | `GLFW_FOCUSED` | Renamed to match the window focus callback |
+| `GLFW_WINDOW_NO_RESIZE` | `GLFW_RESIZABLE` | The default has been inverted |
+| `GLFW_MOUSE_CURSOR` | `GLFW_CURSOR` | Used with @ref glfwSetInputMode |
+| `GLFW_KEY_ESC` | `GLFW_KEY_ESCAPE` | |
+| `GLFW_KEY_DEL` | `GLFW_KEY_DELETE` | |
+| `GLFW_KEY_PAGEUP` | `GLFW_KEY_PAGE_UP` | |
+| `GLFW_KEY_PAGEDOWN` | `GLFW_KEY_PAGE_DOWN` | |
+| `GLFW_KEY_KP_NUM_LOCK` | `GLFW_KEY_NUM_LOCK` | |
+| `GLFW_KEY_LCTRL` | `GLFW_KEY_LEFT_CONTROL` | |
+| `GLFW_KEY_LSHIFT` | `GLFW_KEY_LEFT_SHIFT` | |
+| `GLFW_KEY_LALT` | `GLFW_KEY_LEFT_ALT` | |
+| `GLFW_KEY_LSUPER` | `GLFW_KEY_LEFT_SUPER` | |
+| `GLFW_KEY_RCTRL` | `GLFW_KEY_RIGHT_CONTROL` | |
+| `GLFW_KEY_RSHIFT` | `GLFW_KEY_RIGHT_SHIFT` | |
+| `GLFW_KEY_RALT` | `GLFW_KEY_RIGHT_ALT` | |
+| `GLFW_KEY_RSUPER` | `GLFW_KEY_RIGHT_SUPER` | |
+
+*/
diff --git a/libs/glfw-3.3.8/docs/news.dox b/libs/glfw-3.3.8/docs/news.dox
new file mode 100644
index 0000000..1f016d3
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/news.dox
@@ -0,0 +1,876 @@
+/*!
+
+@page news Release notes
+
+@tableofcontents
+
+
+@section news_33 Release notes for version 3.3
+
+These are the release notes for version 3.3. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+Please review the caveats, deprecations and removals if your project was written
+against an earlier version of GLFW 3.
+
+
+@subsection features_33 New features in version 3.3
+
+@subsubsection gamepad_33 Gamepad input via SDL_GameControllerDB
+
+GLFW can now remap game controllers to a standard Xbox-like layout using
+a built-in copy of SDL_GameControllerDB. Call @ref glfwJoystickIsGamepad to
+check if a joystick has a mapping, @ref glfwGetGamepadState to retrieve its
+input state, @ref glfwUpdateGamepadMappings to add newer mappings and @ref
+glfwGetGamepadName and @ref glfwGetJoystickGUID for mapping related information.
+
+For more information see @ref gamepad.
+
+
+@subsubsection moltenvk_33 Support for Vulkan on macOS via MoltenVK
+
+GLFW now supports [MoltenVK](https://moltengl.com/moltenvk/), a Vulkan
+implementation on top of the Metal API, and its `VK_MVK_macos_surface` window
+surface creation extension. MoltenVK is included in the [macOS Vulkan
+SDK](https://vulkan.lunarg.com/).
+
+For more information see @ref vulkan_guide.
+
+
+@subsubsection content_scale_33 Content scale queries for DPI-aware rendering
+
+GLFW now provides content scales for windows and monitors, i.e. the ratio
+between their current DPI and the platform's default DPI, with @ref
+glfwGetWindowContentScale and @ref glfwGetMonitorContentScale.
+
+Changes of the content scale of a window can be received with the window content
+scale callback, set with @ref glfwSetWindowContentScaleCallback.
+
+The @ref GLFW_SCALE_TO_MONITOR window hint enables automatic resizing of a
+window by the content scale of the monitor it is placed, on platforms like
+Windows where this is necessary. This takes effect both on creation and when
+the window is moved between monitors. It is related to but different from
+[GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint).
+
+For more information see @ref window_scale.
+
+
+@subsubsection setwindowattrib_33 Support for updating window attributes
+
+GLFW now supports changing the [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
+[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
+[GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
+[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
+[GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) attributes for existing
+windows with @ref glfwSetWindowAttrib.
+
+For more information see @ref window_attribs.
+
+
+@subsubsection raw_motion_33 Support for raw mouse motion
+
+GLFW now supports raw (unscaled and unaccelerated) mouse motion in disabled
+cursor mode with the [GLFW_RAW_MOUSE_MOTION](@ref GLFW_RAW_MOUSE_MOTION) input
+mode. Raw mouse motion input is not yet implemented on macOS. Call @ref
+glfwRawMouseMotionSupported to check if GLFW can provide raw mouse motion on the
+current system.
+
+For more information see @ref raw_mouse_motion.
+
+
+@subsubsection joysticks_33 Joystick hats
+
+GLFW can now return the state of hats (i.e. POVs or D-pads) of a joystick with
+@ref glfwGetJoystickHats. For compatibility, hats are also exposed as buttons.
+This can be disabled with the @ref GLFW_JOYSTICK_HAT_BUTTONS initialization
+hint.
+
+For more information see @ref joystick_hat.
+
+
+@subsubsection geterror_33 Error query
+
+GLFW now supports querying the last error code for the calling thread and its
+human-readable description with @ref glfwGetError. This can be used instead of
+or together with the error callback.
+
+For more information see @ref error_handling.
+
+
+@subsubsection init_hints_33 Support for initialization hints
+
+GLFW now supports setting library initialization hints with @ref glfwInitHint.
+These must be set before initialization to take effect. Some of these hints are
+platform specific but are safe to set on any platform.
+
+For more information see @ref init_hints.
+
+
+@subsubsection attention_33 User attention request
+
+GLFW now supports requesting user attention with @ref
+glfwRequestWindowAttention. Where possible this calls attention to the
+specified window. On platforms like macOS it calls attention to the whole
+application.
+
+For more information see @ref window_attention.
+
+
+@subsubsection maximize_33 Window maximization callback
+
+GLFW now supports notifying the application that the window has been maximized
+@ref glfwSetWindowMaximizeCallback. This is called both when the window was
+maximized by the user and when it was done with @ref glfwMaximizeWindow.
+
+For more information see @ref window_maximize.
+
+
+@subsubsection workarea_33 Query for the monitor work area
+
+GLFW now supports querying the work area of a monitor, i.e. the area not
+occupied by task bars or global menu bars, with @ref glfwGetMonitorWorkarea. On
+platforms that lack this concept, the whole area of the monitor is returned.
+
+For more information see @ref monitor_workarea.
+
+
+@subsubsection transparency_33 Transparent windows and framebuffers
+
+GLFW now supports the creation of windows with transparent framebuffers on
+systems with desktop compositing enabled with the @ref
+GLFW_TRANSPARENT_FRAMEBUFFER window hint and attribute. This hint must be set
+before window creation and leaves any window decorations opaque.
+
+GLFW now also supports whole window transparency with @ref glfwGetWindowOpacity
+and @ref glfwSetWindowOpacity. This value controls the opacity of the whole
+window including decorations and unlike framebuffer transparency can be changed
+at any time after window creation.
+
+For more information see @ref window_transparency.
+
+
+@subsubsection key_scancode_33 Query for the scancode of a key
+
+GLFW now supports querying the platform dependent scancode of any physical key
+with @ref glfwGetKeyScancode.
+
+For more information see @ref input_key.
+
+
+@subsubsection center_cursor_33 Cursor centering window hint
+
+GLFW now supports controlling whether the cursor is centered over newly created
+full screen windows with the [GLFW_CENTER_CURSOR](@ref GLFW_CENTER_CURSOR_hint)
+window hint. It is enabled by default.
+
+
+@subsubsection cursor_hover_33 Mouse cursor hover window attribute
+
+GLFW now supports polling whether the cursor is hovering over the window content
+area with the [GLFW_HOVERED](@ref GLFW_HOVERED_attrib) window attribute. This
+attribute corresponds to the [cursor enter/leave](@ref cursor_enter) event.
+
+
+@subsubsection focusonshow_33 Window hint and attribute for input focus on show
+
+GLFW now has the [GLFW_FOCUS_ON_SHOW](@ref GLFW_DECORATED_hint) window hint and
+attribute for controlling whether a window gets input focus when shown. It is
+enabled by default. It applies both when creating an visible window with @ref
+glfwCreateWindow and when showing it with @ref glfwShowWindow.
+
+This is a workaround for GLFW 3.0 lacking @ref glfwFocusWindow and will be
+corrected in the next major version.
+
+For more information see @ref window_hide.
+
+
+@subsubsection device_userptr_33 Monitor and joystick user pointers
+
+GLFW now supports setting and querying user pointers for connected monitors and
+joysticks with @ref glfwSetMonitorUserPointer, @ref glfwGetMonitorUserPointer,
+@ref glfwSetJoystickUserPointer and @ref glfwGetJoystickUserPointer.
+
+For more information see @ref monitor_userptr and @ref joystick_userptr.
+
+
+@subsubsection macos_nib_33 macOS menu bar from nib file
+
+GLFW will now load a `MainMenu.nib` file if found in the `Contents/Resources`
+directory of the application bundle, as a way to replace the GLFW menu bar
+without recompiling GLFW. This behavior can be disabled with the
+[GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint) initialization hint.
+
+
+@subsubsection glext_33 Support for more context creation extensions
+
+The context hint @ref GLFW_SRGB_CAPABLE now supports OpenGL ES via
+`WGL_EXT_colorspace`, the context hint @ref GLFW_CONTEXT_NO_ERROR now supports
+`WGL_ARB_create_context_no_error` and `GLX_ARB_create_context_no_error`, the
+context hint @ref GLFW_CONTEXT_RELEASE_BEHAVIOR now supports
+`EGL_KHR_context_flush_control` and @ref glfwGetProcAddress now supports
+`EGL_KHR_get_all_proc_addresses`.
+
+
+@subsubsection osmesa_33 OSMesa off-screen context creation support
+
+GLFW now supports creating off-screen OpenGL contexts using
+[OSMesa](https://www.mesa3d.org/osmesa.html) by setting
+[GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint) to
+`GLFW_OSMESA_CONTEXT_API`. Native access function have been added to retrieve
+the OSMesa color and depth buffers.
+
+There is also a new null backend that uses OSMesa as its native context
+creation API, intended for automated testing. This backend does not provide
+input.
+
+
+@subsection caveats_33 Caveats for version 3.3
+
+@subsubsection joystick_layout_33 Layout of joysticks have changed
+
+The way joystick elements are arranged have changed to match SDL2 in order to
+support SDL_GameControllerDB mappings. The layout of joysticks may
+change again if required for compatibility with SDL2. If you need a known and
+stable layout for game controllers, see if you can switch to @ref gamepad.
+
+Existing code that depends on a specific joystick layout will likely have to be
+updated.
+
+
+@subsubsection wait_events_33 No window required to wait for events
+
+The @ref glfwWaitEvents and @ref glfwWaitEventsTimeout functions no longer need
+a window to be created to wait for events. Before version 3.3 these functions
+would return immediately if there were no user-created windows. On platforms
+where only windows can receive events, an internal helper window is used.
+
+Existing code that depends on the earlier behavior will likely have to be
+updated.
+
+
+@subsubsection gamma_ramp_size_33 Gamma ramp size of 256 may be rejected
+
+The documentation for versions before 3.3 stated that a gamma ramp size of 256
+would always be accepted. This was never the case on X11 and could lead to
+artifacts on macOS. The @ref glfwSetGamma function has been updated to always
+generate a ramp of the correct size.
+
+Existing code that hardcodes a size of 256 should be updated to use the size of
+the current ramp of a monitor when setting a new ramp for that monitor.
+
+
+@subsubsection xinput_deadzone_33 Windows XInput deadzone removed
+
+GLFW no longer applies any deadzone to the input state received from the XInput
+API. This was never done for any other platform joystick API so this change
+makes the behavior more consistent but you will need to apply your own deadzone
+if desired.
+
+
+@subsubsection x11_clipboard_33 X11 clipboard transfer limits
+
+GLFW now supports reading clipboard text via the `INCR` method, which removes
+the limit on how much text can be read with @ref glfwGetClipboardString.
+However, writing via this method is not yet supported, so you may not be able to
+write a very large string with @ref glfwSetClipboardString even if you read it
+from the clipboard earlier.
+
+The exact size limit for writing to the clipboard is negotiated with each
+receiving application but is at least several tens of kilobytes. Note that only
+the read limit has changed. Any string that could be written before still can
+be.
+
+
+@subsubsection x11_linking_33 X11 extension libraries are loaded dynamically
+
+GLFW now loads all X11 extension libraries at initialization. The only X11
+library you need to link against is `libX11`. The header files for the
+extension libraries are still required for compilation.
+
+Existing projects and makefiles that link GLFW directly against the extension
+libraries should still build correctly but will add these libraries as load-time
+dependencies.
+
+
+@subsubsection cmake_version_33 CMake 3.0 or later is required
+
+The minimum CMake version has been raised from 2.8.12 to 3.0. This is only
+a requirement of the GLFW CMake files. The GLFW source files do not depend on
+CMake.
+
+
+@subsubsection caveat_fbtransparency_33 Framebuffer transparency requires DWM transparency
+
+GLFW no longer supports framebuffer transparency enabled via @ref
+GLFW_TRANSPARENT_FRAMEBUFFER on Windows 7 if DWM transparency is off
+(the Transparency setting under Personalization > Window Color).
+
+
+@subsubsection emptyevents_33 Empty events on X11 no longer roundtrip to server
+
+Starting with GLFW 3.3.7, events posted with @ref glfwPostEmptyEvent now use a separate
+unnamed pipe instead of sending an X11 client event to the helper window.
+
+
+@subsection deprecations_33 Deprecations in version 3.3
+
+@subsubsection charmods_callback_33 Character with modifiers callback
+
+The character with modifiers callback set with @ref glfwSetCharModsCallback has
+been deprecated and should if possible not be used.
+
+Existing code should still work but further bug fixes will likely not be made.
+The callback will be removed in the next major version.
+
+
+@subsubsection clipboard_window_33 Window parameter to clipboard functions
+
+The window parameter of the clipboard functions @ref glfwGetClipboardString and
+@ref glfwSetClipboardString has been deprecated and is no longer used on any
+platform. On platforms where the clipboard must be owned by a specific window,
+an internal helper window is used.
+
+Existing code should still work unless it depends on a specific window owning
+the clipboard. New code may pass `NULL` as the window argument. The parameter
+will be removed in a future release.
+
+
+@subsection removals_33 Removals in 3.3
+
+@subsubsection macos_options_33 macOS specific CMake options and macros
+
+The `GLFW_USE_RETINA`, `GLFW_USE_CHDIR` and `GLFW_USE_MENUBAR` CMake options and
+the `_GLFW_USE_RETINA`, `_GLFW_USE_CHDIR` and `_GLFW_USE_MENUBAR` compile-time
+macros have been removed.
+
+These options and macros are replaced by the window hint
+[GLFW_COCOA_RETINA_FRAMEBUFFER](@ref GLFW_COCOA_RETINA_FRAMEBUFFER_hint)
+and the init hints
+[GLFW_COCOA_CHDIR_RESOURCES](@ref GLFW_COCOA_CHDIR_RESOURCES_hint) and
+[GLFW_COCOA_MENUBAR](@ref GLFW_COCOA_MENUBAR_hint).
+
+Existing projects and makefiles that set these options or define these macros
+during compilation of GLFW will still build but it will have no effect and the
+default behaviors will be used.
+
+
+@subsubsection vulkan_sdk_33 LunarG Vulkan SDK dependency
+
+The GLFW test programs that previously depended on the LunarG Vulkan SDK now
+instead uses a Vulkan loader generated by
+[glad2](https://github.com/Dav1dde/glad). This means the GLFW CMake files no
+longer look for the Vulkan SDK.
+
+Existing CMake projects that depended on the Vulkan SDK cache variables from
+GLFW will need to call `find_package(Vulkan)` themselves. CMake 3.7 and later
+already comes with a
+[Vulkan find module](https://cmake.org/cmake/help/latest/module/FindVulkan.html)
+similar to the one GLFW previously included.
+
+
+@subsubsection lib_suffix_33 CMake option LIB_SUFFIX
+
+The `LIB_SUFFIX` CMake option has been removed. GLFW now uses the
+GNUInstallDirs CMake package to handle platform specific details like the
+library directory suffix and the `LIB_SUFFIX` CMake option has been removed.
+
+Existing projects and makefiles that set the `LIB_SUFFIX` option will use the
+suffix chosen by the GNUInstallDirs package and the option will be ignored.
+
+
+@subsubsection wl_shell_33 Support for the wl_shell protocol
+
+Support for the wl_shell protocol has been removed and GLFW now only supports
+the XDG-Shell protocol. If your Wayland compositor does not support XDG-Shell
+then GLFW will fail to initialize.
+
+
+@subsubsection mir_removed_33 Mir support
+
+The experimental Mir support has been completely removed as the Mir project has
+implemented support for the Wayland protocol and is recommending that
+applications use that instead.
+
+Existing projects and makefiles that select Mir when compiling GLFW will fail.
+Use Wayland or X11 instead.
+
+
+@subsection symbols_33 New symbols in version 3.3
+
+@subsubsection functions_33 New functions in version 3.3
+
+ - @ref glfwInitHint
+ - @ref glfwGetError
+ - @ref glfwGetMonitorWorkarea
+ - @ref glfwGetMonitorContentScale
+ - @ref glfwGetMonitorUserPointer
+ - @ref glfwSetMonitorUserPointer
+ - @ref glfwWindowHintString
+ - @ref glfwGetWindowContentScale
+ - @ref glfwGetWindowOpacity
+ - @ref glfwSetWindowOpacity
+ - @ref glfwRequestWindowAttention
+ - @ref glfwSetWindowAttrib
+ - @ref glfwSetWindowMaximizeCallback
+ - @ref glfwSetWindowContentScaleCallback
+ - @ref glfwRawMouseMotionSupported
+ - @ref glfwGetKeyScancode
+ - @ref glfwGetJoystickHats
+ - @ref glfwGetJoystickGUID
+ - @ref glfwGetJoystickUserPointer
+ - @ref glfwSetJoystickUserPointer
+ - @ref glfwJoystickIsGamepad
+ - @ref glfwUpdateGamepadMappings
+ - @ref glfwGetGamepadName
+ - @ref glfwGetGamepadState
+
+
+@subsubsection types_33 New types in version 3.3
+
+ - @ref GLFWwindowmaximizefun
+ - @ref GLFWwindowcontentscalefun
+ - @ref GLFWgamepadstate
+
+
+@subsubsection constants_33 New constants in version 3.3
+
+ - @ref GLFW_NO_ERROR
+ - @ref GLFW_JOYSTICK_HAT_BUTTONS
+ - @ref GLFW_COCOA_CHDIR_RESOURCES
+ - @ref GLFW_COCOA_MENUBAR
+ - @ref GLFW_CENTER_CURSOR
+ - @ref GLFW_TRANSPARENT_FRAMEBUFFER
+ - @ref GLFW_HOVERED
+ - @ref GLFW_FOCUS_ON_SHOW
+ - @ref GLFW_SCALE_TO_MONITOR
+ - @ref GLFW_COCOA_RETINA_FRAMEBUFFER
+ - @ref GLFW_COCOA_FRAME_NAME
+ - @ref GLFW_COCOA_GRAPHICS_SWITCHING
+ - @ref GLFW_X11_CLASS_NAME
+ - @ref GLFW_X11_INSTANCE_NAME
+ - @ref GLFW_OSMESA_CONTEXT_API
+ - @ref GLFW_HAT_CENTERED
+ - @ref GLFW_HAT_UP
+ - @ref GLFW_HAT_RIGHT
+ - @ref GLFW_HAT_DOWN
+ - @ref GLFW_HAT_LEFT
+ - @ref GLFW_HAT_RIGHT_UP
+ - @ref GLFW_HAT_RIGHT_DOWN
+ - @ref GLFW_HAT_LEFT_UP
+ - @ref GLFW_HAT_LEFT_DOWN
+ - @ref GLFW_MOD_CAPS_LOCK
+ - @ref GLFW_MOD_NUM_LOCK
+ - @ref GLFW_LOCK_KEY_MODS
+ - @ref GLFW_RAW_MOUSE_MOTION
+ - @ref GLFW_GAMEPAD_BUTTON_A
+ - @ref GLFW_GAMEPAD_BUTTON_B
+ - @ref GLFW_GAMEPAD_BUTTON_X
+ - @ref GLFW_GAMEPAD_BUTTON_Y
+ - @ref GLFW_GAMEPAD_BUTTON_LEFT_BUMPER
+ - @ref GLFW_GAMEPAD_BUTTON_RIGHT_BUMPER
+ - @ref GLFW_GAMEPAD_BUTTON_BACK
+ - @ref GLFW_GAMEPAD_BUTTON_START
+ - @ref GLFW_GAMEPAD_BUTTON_GUIDE
+ - @ref GLFW_GAMEPAD_BUTTON_LEFT_THUMB
+ - @ref GLFW_GAMEPAD_BUTTON_RIGHT_THUMB
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_UP
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_RIGHT
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_DOWN
+ - @ref GLFW_GAMEPAD_BUTTON_DPAD_LEFT
+ - @ref GLFW_GAMEPAD_BUTTON_LAST
+ - @ref GLFW_GAMEPAD_BUTTON_CROSS
+ - @ref GLFW_GAMEPAD_BUTTON_CIRCLE
+ - @ref GLFW_GAMEPAD_BUTTON_SQUARE
+ - @ref GLFW_GAMEPAD_BUTTON_TRIANGLE
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_X
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_Y
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_X
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_Y
+ - @ref GLFW_GAMEPAD_AXIS_LEFT_TRIGGER
+ - @ref GLFW_GAMEPAD_AXIS_RIGHT_TRIGGER
+ - @ref GLFW_GAMEPAD_AXIS_LAST
+
+
+@section news_32 Release notes for 3.2
+
+These are the release notes for version 3.2. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_32 New features in version 3.2
+
+@subsubsection news_32_vulkan Support for Vulkan
+
+GLFW now supports basic integration with Vulkan with @ref glfwVulkanSupported,
+@ref glfwGetRequiredInstanceExtensions, @ref glfwGetInstanceProcAddress, @ref
+glfwGetPhysicalDevicePresentationSupport and @ref glfwCreateWindowSurface.
+Vulkan header inclusion can be selected with
+@ref GLFW_INCLUDE_VULKAN.
+
+
+@subsubsection news_32_setwindowmonitor Window mode switching
+
+GLFW now supports switching between windowed and full screen modes and updating
+the monitor and desired resolution and refresh rate of full screen windows with
+@ref glfwSetWindowMonitor.
+
+
+@subsubsection news_32_maximize Window maxmimization support
+
+GLFW now supports window maximization with @ref glfwMaximizeWindow and the
+@ref GLFW_MAXIMIZED window hint and attribute.
+
+
+@subsubsection news_32_focus Window input focus control
+
+GLFW now supports giving windows input focus with @ref glfwFocusWindow.
+
+
+@subsubsection news_32_sizelimits Window size limit support
+
+GLFW now supports setting both absolute and relative window size limits with
+@ref glfwSetWindowSizeLimits and @ref glfwSetWindowAspectRatio.
+
+
+@subsubsection news_32_keyname Localized key names
+
+GLFW now supports querying the localized name of printable keys with @ref
+glfwGetKeyName, either by key token or by scancode.
+
+
+@subsubsection news_32_waittimeout Wait for events with timeout
+
+GLFW now supports waiting for events for a set amount of time with @ref
+glfwWaitEventsTimeout.
+
+
+@subsubsection news_32_icon Window icon support
+
+GLFW now supports setting the icon of windows with @ref glfwSetWindowIcon.
+
+
+@subsubsection news_32_timer Raw timer access
+
+GLFW now supports raw timer values with @ref glfwGetTimerValue and @ref
+glfwGetTimerFrequency.
+
+
+@subsubsection news_32_joystick Joystick connection callback
+
+GLFW now supports notifying when a joystick has been connected or disconnected
+with @ref glfwSetJoystickCallback.
+
+
+@subsubsection news_32_noapi Context-less windows
+
+GLFW now supports creating windows without a OpenGL or OpenGL ES context by
+setting the [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_NO_API`.
+
+
+@subsubsection news_32_contextapi Run-time context creation API selection
+
+GLFW now supports selecting and querying the context creation API at run-time
+with the @ref GLFW_CONTEXT_CREATION_API hint and attribute.
+
+
+@subsubsection news_32_noerror Error-free context creation
+
+GLFW now supports creating and querying OpenGL and OpenGL ES contexts that do
+not emit errors with the @ref GLFW_CONTEXT_NO_ERROR hint, provided the machine
+supports the `GL_KHR_no_error` extension.
+
+
+@subsubsection news_32_cmake CMake config-file package support
+
+GLFW now supports being used as a
+[config-file package](@ref build_link_cmake_package) from other projects for
+easy linking with the library and its dependencies.
+
+
+@section news_31 Release notes for 3.1
+
+These are the release notes for version 3.1. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_31 New features in version 3.1
+
+@subsubsection news_31_cursor Custom mouse cursor images
+
+GLFW now supports creating and setting both custom cursor images and standard
+cursor shapes. They are created with @ref glfwCreateCursor or @ref
+glfwCreateStandardCursor, set with @ref glfwSetCursor and destroyed with @ref
+glfwDestroyCursor.
+
+@see @ref cursor_object
+
+
+@subsubsection news_31_drop Path drop event
+
+GLFW now provides a callback for receiving the paths of files and directories
+dropped onto GLFW windows. The callback is set with @ref glfwSetDropCallback.
+
+@see @ref path_drop
+
+
+@subsubsection news_31_emptyevent Main thread wake-up
+
+GLFW now provides the @ref glfwPostEmptyEvent function for posting an empty
+event from another thread to the main thread event queue, causing @ref
+glfwWaitEvents to return.
+
+@see @ref events
+
+
+@subsubsection news_31_framesize Window frame size query
+
+GLFW now supports querying the size, on each side, of the frame around the
+content area of a window, with @ref glfwGetWindowFrameSize.
+
+@see [Window size](@ref window_size)
+
+
+@subsubsection news_31_autoiconify Simultaneous multi-monitor rendering
+
+GLFW now supports disabling auto-iconification of full screen windows with
+the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint. This is
+intended for people building multi-monitor installations, where you need windows
+to stay in full screen despite losing input focus.
+
+
+@subsubsection news_31_floating Floating windows
+
+GLFW now supports floating windows, also called topmost or always on top, for
+easier debugging with the @ref GLFW_FLOATING window hint and attribute.
+
+
+@subsubsection news_31_focused Initially unfocused windows
+
+GLFW now supports preventing a windowed mode window from gaining input focus on
+creation, with the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint.
+
+
+@subsubsection news_31_direct Direct access for window attributes and cursor position
+
+GLFW now queries the window input focus, visibility and iconification attributes
+and the cursor position directly instead of returning cached data.
+
+
+@subsubsection news_31_charmods Character with modifiers callback
+
+GLFW now provides a callback for character events with modifier key bits. The
+callback is set with @ref glfwSetCharModsCallback. Unlike the regular character
+callback, this will report character events that will not result in a character
+being input, for example if the Control key is held down.
+
+@see @ref input_char
+
+
+@subsubsection news_31_single Single buffered framebuffers
+
+GLFW now supports the creation of single buffered windows, with the @ref
+GLFW_DOUBLEBUFFER hint.
+
+
+@subsubsection news_31_glext Macro for including extension header
+
+GLFW now includes the extension header appropriate for the chosen OpenGL or
+OpenGL ES header when @ref GLFW_INCLUDE_GLEXT is defined. GLFW does not provide
+these headers. They must be provided by your development environment or your
+OpenGL or OpenGL ES SDK.
+
+
+@subsubsection news_31_release Context release behaviors
+
+GLFW now supports controlling and querying whether the pipeline is flushed when
+a context is made non-current, with the @ref GLFW_CONTEXT_RELEASE_BEHAVIOR hint
+and attribute, provided the machine supports the `GL_KHR_context_flush_control`
+extension.
+
+
+@subsubsection news_31_wayland (Experimental) Wayland support
+
+GLFW now has an _experimental_ Wayland display protocol backend that can be
+selected on Linux with a CMake option.
+
+
+@subsubsection news_31_mir (Experimental) Mir support
+
+GLFW now has an _experimental_ Mir display server backend that can be selected
+on Linux with a CMake option.
+
+
+@section news_30 Release notes for 3.0
+
+These are the release notes for version 3.0. For a more detailed view including
+all fixed bugs see the [version history](https://www.glfw.org/changelog.html).
+
+
+@subsection features_30 New features in version 3.0
+
+@subsubsection news_30_cmake CMake build system
+
+GLFW now uses the CMake build system instead of the various makefiles and
+project files used by earlier versions. CMake is available for all platforms
+supported by GLFW, is present in most package systems and can generate
+makefiles and/or project files for most popular development environments.
+
+For more information on how to use CMake, see the
+[CMake manual](https://cmake.org/cmake/help/documentation.html).
+
+
+@subsubsection news_30_multiwnd Multi-window support
+
+GLFW now supports the creation of multiple windows, each with their own OpenGL
+or OpenGL ES context, and all window functions now take a window handle. Event
+callbacks are now per-window and are provided with the handle of the window that
+received the event. The @ref glfwMakeContextCurrent function has been added to
+select which context is current on a given thread.
+
+
+@subsubsection news_30_multimon Multi-monitor support
+
+GLFW now explicitly supports multiple monitors. They can be enumerated with
+@ref glfwGetMonitors, queried with @ref glfwGetVideoModes, @ref
+glfwGetMonitorPos, @ref glfwGetMonitorName and @ref glfwGetMonitorPhysicalSize,
+and specified at window creation to make the newly created window full screen on
+that specific monitor.
+
+
+@subsubsection news_30_unicode Unicode support
+
+All string arguments to GLFW functions and all strings returned by GLFW now use
+the UTF-8 encoding. This includes the window title, error string, clipboard
+text, monitor and joystick names as well as the extension function arguments (as
+ASCII is a subset of UTF-8).
+
+
+@subsubsection news_30_clipboard Clipboard text I/O
+
+GLFW now supports reading and writing plain text to and from the system
+clipboard, with the @ref glfwGetClipboardString and @ref glfwSetClipboardString
+functions.
+
+
+@subsubsection news_30_gamma Gamma ramp support
+
+GLFW now supports setting and reading back the gamma ramp of monitors, with the
+@ref glfwGetGammaRamp and @ref glfwSetGammaRamp functions. There is also @ref
+glfwSetGamma, which generates a ramp from a gamma value and then sets it.
+
+
+@subsubsection news_30_gles OpenGL ES support
+
+GLFW now supports the creation of OpenGL ES contexts, by setting the
+[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint to `GLFW_OPENGL_ES_API`, where
+creation of such contexts are supported. Note that GLFW _does not implement_
+OpenGL ES, so your driver must provide support in a way usable by GLFW. Modern
+Nvidia and Intel drivers support creation of OpenGL ES context using the GLX and
+WGL APIs, while AMD provides an EGL implementation instead.
+
+
+@subsubsection news_30_egl (Experimental) EGL support
+
+GLFW now has an experimental EGL context creation back end that can be selected
+through CMake options.
+
+
+@subsubsection news_30_hidpi High-DPI support
+
+GLFW now supports high-DPI monitors on both Windows and macOS, giving windows
+full resolution framebuffers where other UI elements are scaled up. To achieve
+this, @ref glfwGetFramebufferSize and @ref glfwSetFramebufferSizeCallback have
+been added. These work with pixels, while the rest of the GLFW API works with
+screen coordinates. This is important as OpenGL uses pixels, not screen
+coordinates.
+
+
+@subsubsection news_30_error Error callback
+
+GLFW now has an error callback, which can provide your application with much
+more detailed diagnostics than was previously possible. The callback is passed
+an error code and a description string.
+
+
+@subsubsection news_30_wndptr Per-window user pointer
+
+Each window now has a user-defined pointer, retrieved with @ref
+glfwGetWindowUserPointer and set with @ref glfwSetWindowUserPointer, to make it
+easier to integrate GLFW into C++ code.
+
+
+@subsubsection news_30_iconifyfun Window iconification callback
+
+Each window now has a callback for iconification and restoration events,
+which is set with @ref glfwSetWindowIconifyCallback.
+
+
+@subsubsection news_30_wndposfun Window position callback
+
+Each window now has a callback for position events, which is set with @ref
+glfwSetWindowPosCallback.
+
+
+@subsubsection news_30_wndpos Window position query
+
+The position of a window can now be retrieved using @ref glfwGetWindowPos.
+
+
+@subsubsection news_30_focusfun Window focus callback
+
+Each windows now has a callback for focus events, which is set with @ref
+glfwSetWindowFocusCallback.
+
+
+@subsubsection news_30_enterleave Cursor enter/leave callback
+
+Each window now has a callback for when the mouse cursor enters or leaves its
+content area, which is set with @ref glfwSetCursorEnterCallback.
+
+
+@subsubsection news_30_wndtitle Initial window title
+
+The title of a window is now specified at creation time, as one of the arguments
+to @ref glfwCreateWindow.
+
+
+@subsubsection news_30_hidden Hidden windows
+
+Windows can now be hidden with @ref glfwHideWindow, shown using @ref
+glfwShowWindow and created initially hidden with the @ref GLFW_VISIBLE window
+hint and attribute. This allows for off-screen rendering in a way compatible
+with most drivers, as well as moving a window to a specific position before
+showing it.
+
+
+@subsubsection news_30_undecorated Undecorated windows
+
+Windowed mode windows can now be created without decorations, e.g. things like
+a frame, a title bar, with the @ref GLFW_DECORATED window hint and attribute.
+This allows for the creation of things like splash screens.
+
+
+@subsubsection news_30_keymods Modifier key bit masks
+
+[Modifier key bit mask](@ref mods) parameters have been added to the
+[mouse button](@ref GLFWmousebuttonfun) and [key](@ref GLFWkeyfun) callbacks.
+
+
+@subsubsection news_30_scancode Platform-specific scancodes
+
+A scancode parameter has been added to the [key callback](@ref GLFWkeyfun). Keys
+that don't have a [key token](@ref keys) still get passed on with the key
+parameter set to `GLFW_KEY_UNKNOWN`. These scancodes will vary between machines
+and are intended to be used for key bindings.
+
+
+@subsubsection news_30_jsname Joystick names
+
+The name of a joystick can now be retrieved using @ref glfwGetJoystickName.
+
+
+@subsubsection news_30_doxygen Doxygen documentation
+
+You are reading it.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/quick.dox b/libs/glfw-3.3.8/docs/quick.dox
new file mode 100644
index 0000000..3645fc0
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/quick.dox
@@ -0,0 +1,365 @@
+/*!
+
+@page quick_guide Getting started
+
+@tableofcontents
+
+This guide takes you through writing a simple application using GLFW 3. The
+application will create a window and OpenGL context, render a rotating triangle
+and exit when the user closes the window or presses _Escape_. This guide will
+introduce a few of the most commonly used functions, but there are many more.
+
+This guide assumes no experience with earlier versions of GLFW. If you
+have used GLFW 2 in the past, read @ref moving_guide, as some functions
+behave differently in GLFW 3.
+
+
+@section quick_steps Step by step
+
+@subsection quick_include Including the GLFW header
+
+In the source files of your application where you use GLFW, you need to include
+its header file.
+
+@code
+#include <GLFW/glfw3.h>
+@endcode
+
+This header provides all the constants, types and function prototypes of the
+GLFW API.
+
+By default it also includes the OpenGL header from your development environment.
+On some platforms this header only supports older versions of OpenGL. The most
+extreme case is Windows, where it typically only supports OpenGL 1.2.
+
+Most programs will instead use an
+[extension loader library](@ref context_glext_auto) and include its header.
+This example uses files generated by [glad](https://gen.glad.sh/). The GLFW
+header can detect most such headers if they are included first and will then not
+include the one from your development environment.
+
+@code
+#include <glad/gl.h>
+#include <GLFW/glfw3.h>
+@endcode
+
+To make sure there will be no header conflicts, you can define @ref
+GLFW_INCLUDE_NONE before the GLFW header to explicitly disable inclusion of the
+development environment header. This also allows the two headers to be included
+in any order.
+
+@code
+#define GLFW_INCLUDE_NONE
+#include <GLFW/glfw3.h>
+#include <glad/gl.h>
+@endcode
+
+
+@subsection quick_init_term Initializing and terminating GLFW
+
+Before you can use most GLFW functions, the library must be initialized. On
+successful initialization, `GLFW_TRUE` is returned. If an error occurred,
+`GLFW_FALSE` is returned.
+
+@code
+if (!glfwInit())
+{
+ // Initialization failed
+}
+@endcode
+
+Note that `GLFW_TRUE` and `GLFW_FALSE` are and will always be one and zero.
+
+When you are done using GLFW, typically just before the application exits, you
+need to terminate GLFW.
+
+@code
+glfwTerminate();
+@endcode
+
+This destroys any remaining windows and releases any other resources allocated by
+GLFW. After this call, you must initialize GLFW again before using any GLFW
+functions that require it.
+
+
+@subsection quick_capture_error Setting an error callback
+
+Most events are reported through callbacks, whether it's a key being pressed,
+a GLFW window being moved, or an error occurring. Callbacks are C functions (or
+C++ static methods) that are called by GLFW with arguments describing the event.
+
+In case a GLFW function fails, an error is reported to the GLFW error callback.
+You can receive these reports with an error callback. This function must have
+the signature below but may do anything permitted in other callbacks.
+
+@code
+void error_callback(int error, const char* description)
+{
+ fprintf(stderr, "Error: %s\n", description);
+}
+@endcode
+
+Callback functions must be set, so GLFW knows to call them. The function to set
+the error callback is one of the few GLFW functions that may be called before
+initialization, which lets you be notified of errors both during and after
+initialization.
+
+@code
+glfwSetErrorCallback(error_callback);
+@endcode
+
+
+@subsection quick_create_window Creating a window and context
+
+The window and its OpenGL context are created with a single call to @ref
+glfwCreateWindow, which returns a handle to the created combined window and
+context object
+
+@code
+GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
+if (!window)
+{
+ // Window or OpenGL context creation failed
+}
+@endcode
+
+This creates a 640 by 480 windowed mode window with an OpenGL context. If
+window or OpenGL context creation fails, `NULL` will be returned. You should
+always check the return value. While window creation rarely fails, context
+creation depends on properly installed drivers and may fail even on machines
+with the necessary hardware.
+
+By default, the OpenGL context GLFW creates may have any version. You can
+require a minimum OpenGL version by setting the `GLFW_CONTEXT_VERSION_MAJOR` and
+`GLFW_CONTEXT_VERSION_MINOR` hints _before_ creation. If the required minimum
+version is not supported on the machine, context (and window) creation fails.
+
+@code
+glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
+glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
+GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
+if (!window)
+{
+ // Window or context creation failed
+}
+@endcode
+
+The window handle is passed to all window related functions and is provided to
+along to all window related callbacks, so they can tell which window received
+the event.
+
+When a window and context is no longer needed, destroy it.
+
+@code
+glfwDestroyWindow(window);
+@endcode
+
+Once this function is called, no more events will be delivered for that window
+and its handle becomes invalid.
+
+
+@subsection quick_context_current Making the OpenGL context current
+
+Before you can use the OpenGL API, you must have a current OpenGL context.
+
+@code
+glfwMakeContextCurrent(window);
+@endcode
+
+The context will remain current until you make another context current or until
+the window owning the current context is destroyed.
+
+If you are using an [extension loader library](@ref context_glext_auto) to
+access modern OpenGL then this is when to initialize it, as the loader needs
+a current context to load from. This example uses
+[glad](https://github.com/Dav1dde/glad), but the same rule applies to all such
+libraries.
+
+@code
+gladLoadGL(glfwGetProcAddress);
+@endcode
+
+
+@subsection quick_window_close Checking the window close flag
+
+Each window has a flag indicating whether the window should be closed.
+
+When the user attempts to close the window, either by pressing the close widget
+in the title bar or using a key combination like Alt+F4, this flag is set to 1.
+Note that __the window isn't actually closed__, so you are expected to monitor
+this flag and either destroy the window or give some kind of feedback to the
+user.
+
+@code
+while (!glfwWindowShouldClose(window))
+{
+ // Keep running
+}
+@endcode
+
+You can be notified when the user is attempting to close the window by setting
+a close callback with @ref glfwSetWindowCloseCallback. The callback will be
+called immediately after the close flag has been set.
+
+You can also set it yourself with @ref glfwSetWindowShouldClose. This can be
+useful if you want to interpret other kinds of input as closing the window, like
+for example pressing the _Escape_ key.
+
+
+@subsection quick_key_input Receiving input events
+
+Each window has a large number of callbacks that can be set to receive all the
+various kinds of events. To receive key press and release events, create a key
+callback function.
+
+@code
+static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
+{
+ if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
+ glfwSetWindowShouldClose(window, GLFW_TRUE);
+}
+@endcode
+
+The key callback, like other window related callbacks, are set per-window.
+
+@code
+glfwSetKeyCallback(window, key_callback);
+@endcode
+
+In order for event callbacks to be called when events occur, you need to process
+events as described below.
+
+
+@subsection quick_render Rendering with OpenGL
+
+Once you have a current OpenGL context, you can use OpenGL normally. In this
+tutorial, a multi-colored rotating triangle will be rendered. The framebuffer
+size needs to be retrieved for `glViewport`.
+
+@code
+int width, height;
+glfwGetFramebufferSize(window, &width, &height);
+glViewport(0, 0, width, height);
+@endcode
+
+You can also set a framebuffer size callback using @ref
+glfwSetFramebufferSizeCallback and be notified when the size changes.
+
+The details of how to render with OpenGL is outside the scope of this tutorial,
+but there are many excellent resources for learning modern OpenGL. Here are
+a few of them:
+
+ - [Anton's OpenGL 4 Tutorials](https://antongerdelan.net/opengl/)
+ - [Learn OpenGL](https://learnopengl.com/)
+ - [Open.GL](https://open.gl/)
+
+These all happen to use GLFW, but OpenGL itself works the same whatever API you
+use to create the window and context.
+
+
+@subsection quick_timer Reading the timer
+
+To create smooth animation, a time source is needed. GLFW provides a timer that
+returns the number of seconds since initialization. The time source used is the
+most accurate on each platform and generally has micro- or nanosecond
+resolution.
+
+@code
+double time = glfwGetTime();
+@endcode
+
+
+@subsection quick_swap_buffers Swapping buffers
+
+GLFW windows by default use double buffering. That means that each window has
+two rendering buffers; a front buffer and a back buffer. The front buffer is
+the one being displayed and the back buffer the one you render to.
+
+When the entire frame has been rendered, the buffers need to be swapped with one
+another, so the back buffer becomes the front buffer and vice versa.
+
+@code
+glfwSwapBuffers(window);
+@endcode
+
+The swap interval indicates how many frames to wait until swapping the buffers,
+commonly known as _vsync_. By default, the swap interval is zero, meaning
+buffer swapping will occur immediately. On fast machines, many of those frames
+will never be seen, as the screen is still only updated typically 60-75 times
+per second, so this wastes a lot of CPU and GPU cycles.
+
+Also, because the buffers will be swapped in the middle the screen update,
+leading to [screen tearing](https://en.wikipedia.org/wiki/Screen_tearing).
+
+For these reasons, applications will typically want to set the swap interval to
+one. It can be set to higher values, but this is usually not recommended,
+because of the input latency it leads to.
+
+@code
+glfwSwapInterval(1);
+@endcode
+
+This function acts on the current context and will fail unless a context is
+current.
+
+
+@subsection quick_process_events Processing events
+
+GLFW needs to communicate regularly with the window system both in order to
+receive events and to show that the application hasn't locked up. Event
+processing must be done regularly while you have visible windows and is normally
+done each frame after buffer swapping.
+
+There are two methods for processing pending events; polling and waiting. This
+example will use event polling, which processes only those events that have
+already been received and then returns immediately.
+
+@code
+glfwPollEvents();
+@endcode
+
+This is the best choice when rendering continually, like most games do. If
+instead you only need to update your rendering once you have received new input,
+@ref glfwWaitEvents is a better choice. It waits until at least one event has
+been received, putting the thread to sleep in the meantime, and then processes
+all received events. This saves a great deal of CPU cycles and is useful for,
+for example, many kinds of editing tools.
+
+
+@section quick_example Putting it together
+
+Now that you know how to initialize GLFW, create a window and poll for
+keyboard input, it's possible to create a simple program.
+
+This program creates a 640 by 480 windowed mode window and starts a loop that
+clears the screen, renders a triangle and processes events until the user either
+presses _Escape_ or closes the window.
+
+@snippet simple.c code
+
+The program above can be found in the
+[source package](https://www.glfw.org/download.html) as `examples/simple.c`
+and is compiled along with all other examples when you build GLFW. If you
+built GLFW from the source package then you already have this as `simple.exe` on
+Windows, `simple` on Linux or `simple.app` on macOS.
+
+This tutorial used only a few of the many functions GLFW provides. There are
+guides for each of the areas covered by GLFW. Each guide will introduce all the
+functions for that category.
+
+ - @ref intro_guide
+ - @ref window_guide
+ - @ref context_guide
+ - @ref monitor_guide
+ - @ref input_guide
+
+You can access reference documentation for any GLFW function by clicking it and
+the reference for each function links to related functions and guide sections.
+
+The tutorial ends here. Once you have written a program that uses GLFW, you
+will need to compile and link it. How to do that depends on the development
+environment you are using and is best explained by the documentation for that
+environment. To learn about the details that are specific to GLFW, see
+@ref build_guide.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/spaces.svg b/libs/glfw-3.3.8/docs/spaces.svg
new file mode 100644
index 0000000..5b32646
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/spaces.svg
@@ -0,0 +1,877 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="688.48718"
+ height="327.98221"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="spaces.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lend"
+ style="overflow:visible;">
+ <path
+ id="path3888"
+ style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) rotate(180) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.8110012"
+ inkscape:cx="320.68941"
+ inkscape:cy="159.80509"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1021"
+ inkscape:window-x="0"
+ inkscape:window-y="30"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ units="px"
+ showborder="false"
+ inkscape:showpageshadow="false" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-12.627039,-339.86462)">
+ <rect
+ style="fill:#ffffff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:3,3;stroke-dashoffset:0"
+ id="rect2985"
+ width="687.36469"
+ height="326.85971"
+ x="13.188287"
+ y="340.42587"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <rect
+ style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3757"
+ width="318.05698"
+ height="277.04684"
+ x="38.315689"
+ y="366.05841"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <rect
+ style="fill:#f3fff3;fill-opacity:1;stroke:#00b800;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3767"
+ width="319.01456"
+ height="198.09369"
+ x="356.36722"
+ y="366.01291"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3769">
+ <path
+ d="m 365.3732,374.63632 0,2.73926 1.24023,0 c 0.45898,0 0.8138,-0.11881 1.06446,-0.35645 0.25064,-0.23762 0.37597,-0.57616 0.37597,-1.01562 0,-0.43619 -0.12533,-0.77311 -0.37597,-1.01074 -0.25066,-0.23763 -0.60548,-0.35644 -1.06446,-0.35645 l -1.24023,0 m -0.98633,-0.81054 2.22656,0 c 0.81706,0 1.43392,0.18555 1.85059,0.55664 0.41992,0.36784 0.62988,0.9082 0.62988,1.62109 0,0.7194 -0.20996,1.26302 -0.62988,1.63086 -0.41667,0.36784 -1.03353,0.55176 -1.85059,0.55176 l -1.24023,0 0,2.92968 -0.98633,0 0,-7.29003"
+ style="font-size:10px"
+ id="path3281" />
+ <path
+ d="m 373.37613,376.48691 c -0.10092,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15788,0.0179 0.24903,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3283" />
+ <path
+ d="m 374.32828,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3285" />
+ <path
+ d="m 381.35953,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.0091,0.2002 1.31836,0.60058 0.30923,0.39714 0.46385,0.96355 0.46386,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10351,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40528,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c 0,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.472,-0.38086 -0.85937,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27019,0.30925 -0.40528,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62662,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3287" />
+ <path
+ d="m 389.33316,378.36679 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10416,0.57292 0.3125,0.76172 0.21159,0.18555 0.49804,0.27832 0.85937,0.27832 0.49805,0 0.89681,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.4541,-0.82519 0.45411,-1.41113 l 0,-0.2002 -0.89356,0 m 1.79199,-0.37109 0,3.12011 -0.89843,0 0,-0.83007 c -0.20509,0.33203 -0.46062,0.5778 -0.76661,0.7373 -0.30599,0.15625 -0.68034,0.23438 -1.12304,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -10e-6,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27019,-0.22786 -0.65105,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91309,0.1123 -0.29622,0.0749 -0.58105,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32878,-0.12695 0.64779,-0.22135 0.95703,-0.28321 0.30925,-0.0651 0.61035,-0.0977 0.90332,-0.0977 0.79102,0 1.38184,0.20508 1.77247,0.61523 0.39062,0.41016 0.58593,1.03191 0.58593,1.86524"
+ style="font-size:10px"
+ id="path3289" />
+ <path
+ d="m 396.14957,376.48691 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12696 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3291" />
+ <path
+ d="m 399.37711,381.62363 c -0.25391,0.65104 -0.50131,1.07584 -0.74219,1.27441 -0.24089,0.19857 -0.56315,0.29785 -0.9668,0.29785 l -0.71777,0 0,-0.75195 0.52734,0 c 0.2474,0 0.43945,-0.0586 0.57617,-0.17578 0.13672,-0.11719 0.28809,-0.39388 0.45411,-0.83008 l 0.16113,-0.41016 -2.21192,-5.38086 0.95215,0 1.70899,4.27735 1.70898,-4.27735 0.95215,0 -2.40234,5.97657"
+ style="font-size:10px"
+ id="path3293" />
+ <path
+ d="m 410.46109,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68034,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30924,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90332,0 0,-3.27148 c -1e-5,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18556,-0.2539 -0.46876,-0.38086 -0.84961,-0.38086 -0.4655,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18555,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73405,0.10092 1.01074,0.30273 0.27995,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3295" />
+ <path
+ d="m 418.06851,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3297" />
+ <path
+ d="m 426.60855,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3299" />
+ <path
+ d="m 428.41031,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3301" />
+ <path
+ d="m 432.07242,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17187,-0.12858 -1.43554,-0.38574 -0.26368,-0.26041 -0.39551,-0.73242 -0.39551,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3303" />
+ <path
+ d="m 437.22867,376.27695 c -0.48178,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3305" />
+ <path
+ d="m 444.39175,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30274,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3307" />
+ <path
+ d="m 449.39664,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41667,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20833,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84961,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40527,0.89193 -0.40527,1.55273 0,0.66081 0.13509,1.18002 0.40527,1.55762 0.27344,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
+ style="font-size:10px"
+ id="path3309" />
+ <path
+ d="m 456.99429,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -10e-6,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3311" />
+ <path
+ d="m 464.47476,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -10e-6,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48015,0.22949 0.96192,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27017,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.13021 -0.52247,-0.25553 -1.07911,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
+ style="font-size:10px"
+ id="path3313" />
+ <path
+ d="m 466.20328,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3315" />
+ <path
+ d="m 469.86539,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3317" />
+ <path
+ d="m 472.9025,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3319" />
+ <path
+ d="m 477.79507,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66244,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3321" />
+ <path
+ d="m 486.33511,377.81503 0,3.30078 -0.89843,0 0,-3.27148 c -1e-5,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
+ style="font-size:10px"
+ id="path3323" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3773">
+ <path
+ d="m 242.85294,625.22699 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.375 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.15821 -0.64453,10e-6 -1.14258,0.12501 -1.49414,0.375 -0.34765,0.25001 -0.52148,0.60548 -0.52148,1.06641 0,0.38673 0.11523,0.67969 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16797 1.53319,0.46485 1.95117,0.89063 0.42187,0.42187 0.6328,0.98828 0.63281,1.69921 -1e-5,0.84766 -0.28516,1.49024 -0.85547,1.92774 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14063 -0.46485,-0.0937 -0.94727,-0.23242 -1.44727,-0.41601 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60937 0.46094,0.13672 0.91406,0.20508 1.35938,0.20508 0.67577,0 1.19726,-0.13281 1.56445,-0.39844 0.36718,-0.26562 0.55078,-0.64453 0.55078,-1.13671 0,-0.42969 -0.13282,-0.76563 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82618 -0.39453,-0.37499 -0.59179,-0.89647 -0.59179,-1.56445 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29882,-0.66796 2.25586,-0.66797 0.41015,10e-6 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
+ style=""
+ id="path3355" />
+ <path
+ d="m 250.79239,630.13715 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96093,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38673,0.16407 -0.78321,0.28907 -1.18946,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04687,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91406,-1.43359 -0.91406,-2.47266 0,-1.07421 0.28906,-1.92578 0.86719,-2.55469 0.58202,-0.6328 1.36523,-0.94921 2.3496,-0.94922 0.88281,10e-6 1.58008,0.28517 2.0918,0.85547 0.51562,0.56641 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49804,-1.41211 -0.32032,-0.35156 -0.7461,-0.52734 -1.27735,-0.52734 -0.60156,0 -1.08398,0.16992 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3357" />
+ <path
+ d="m 257.28458,627.37738 0,1.00781 c -0.3047,-0.16796 -0.61134,-0.29296 -0.91993,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.6289,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58008,1.86328 0,0.80078 0.19336,1.42383 0.58008,1.86914 0.38671,0.4414 0.92968,0.66211 1.6289,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91993,-0.38086 l 0,0.99609 c -0.30079,0.14063 -0.61329,0.2461 -0.9375,0.31641 -0.32032,0.0703 -0.66212,0.10547 -1.02539,0.10547 -0.98829,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58204,-0.62109 -0.87305,-1.45898 -0.87305,-2.51367 0,-1.07031 0.29297,-1.91211 0.87891,-2.52539 0.58984,-0.61328 1.39648,-0.91992 2.41992,-0.91993 0.33203,10e-6 0.65624,0.0352 0.97265,0.10547 0.31641,0.0664 0.62305,0.16798 0.91993,0.30469"
+ style=""
+ id="path3359" />
+ <path
+ d="m 261.71426,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3361" />
+ <path
+ d="m 271.96231,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
+ style=""
+ id="path3363" />
+ <path
+ d="m 278.44278,628.12152 0,-3.55078 1.07812,0 0,9.11719 -1.07812,0 0,-0.98438 c -0.22657,0.39063 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28125 -1.24219,0.28125 -0.79297,0 -1.43945,-0.31641 -1.93945,-0.94922 -0.49609,-0.63281 -0.74414,-1.46484 -0.74414,-2.49609 0,-1.03125 0.24805,-1.86328 0.74414,-2.4961 0.5,-0.6328 1.14648,-0.94921 1.93945,-0.94922 0.48438,10e-6 0.89844,0.0957 1.24219,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29102 c 0,0.79297 0.16211,1.41601 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.5703,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45313 0.49218,-1.07617 0.49219,-1.86914 -1e-5,-0.79297 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77735,-0.67969 -1.34765,-0.67969 -0.57032,0 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07031 -0.48633,1.86328"
+ style=""
+ id="path3365" />
+ <path
+ d="m 284.72403,630.3891 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -1e-5,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42578 0.54492,-0.99023 0.54493,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.9961 c -0.2461,0.39844 -0.55274,0.69336 -0.91993,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11719 0.94922,10e-6 1.6582,0.2461 2.12696,0.73829 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
+ style=""
+ id="path3367" />
+ <path
+ d="m 292.90372,628.13324 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36327,-0.1953 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3369" />
+ <path
+ d="m 296.77676,634.2973 c -0.30469,0.78125 -0.60156,1.29102 -0.89062,1.5293 -0.28907,0.23828 -0.67578,0.35742 -1.16016,0.35742 l -0.86133,0 0,-0.90234 0.63282,0 c 0.29687,0 0.52734,-0.0703 0.6914,-0.21094 0.16406,-0.14063 0.3457,-0.47266 0.54493,-0.99609 l 0.19335,-0.49219 -2.65429,-6.45703 1.14258,0 2.05078,5.13281 2.05078,-5.13281 1.14258,0 -2.88282,7.17187"
+ style=""
+ id="path3371" />
+ <path
+ d="m 305.01505,624.93988 1.76367,0 2.23242,5.95313 2.24414,-5.95313 1.76367,0 0,8.74805 -1.1543,0 0,-7.68164 -2.25585,6 -1.18946,0 -2.25586,-6 0,7.68164 -1.14843,0 0,-8.74805"
+ style=""
+ id="path3373" />
+ <path
+ d="m 317.87051,627.88129 c -0.57812,0 -1.03515,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33594,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.0293,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33594,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67383,0.3047 2.20899,0.91407 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79687,-2.53125 -10e-6,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3375" />
+ <path
+ d="m 328.11856,629.72699 0,3.96094 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08594 -0.36329,-1.39454 -0.24219,-0.30858 -0.60547,-0.46288 -1.08984,-0.46289 -0.58203,10e-6 -1.04102,0.18556 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70899 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39453 0.56055,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.2129,-0.29297 0.7539,10e-6 1.32421,0.23439 1.71093,0.70313 0.38672,0.46485 0.58007,1.15039 0.58008,2.05664"
+ style=""
+ id="path3377" />
+ <path
+ d="m 330.28067,627.12543 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55469 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3379" />
+ <path
+ d="m 334.6752,625.26215 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22851 0.89648,0.22851 l 1.10742,0 0,0.90235 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72265,-0.46289 -0.31641,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
+ style=""
+ id="path3381" />
+ <path
+ d="m 340.8627,627.88129 c -0.57813,0 -1.03516,0.22656 -1.37109,0.67968 -0.33594,0.44923 -0.50391,1.06641 -0.50391,1.85157 0,0.78516 0.16602,1.4043 0.49805,1.85742 0.33593,0.44922 0.79492,0.67383 1.37695,0.67383 0.57422,0 1.02929,-0.22656 1.36524,-0.67969 0.33593,-0.45312 0.5039,-1.07031 0.5039,-1.85156 0,-0.77734 -0.16797,-1.39258 -0.5039,-1.84571 -0.33595,-0.45702 -0.79102,-0.68554 -1.36524,-0.68554 m 0,-0.91407 c 0.9375,10e-6 1.67382,0.3047 2.20899,0.91407 0.53515,0.60938 0.80272,1.45313 0.80273,2.53125 -10e-6,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53517,0.60937 -1.27149,0.91406 -2.20899,0.91406 -0.94141,0 -1.67969,-0.30469 -2.21484,-0.91406 -0.53125,-0.61328 -0.79688,-1.45703 -0.79688,-2.53125 0,-1.07812 0.26563,-1.92187 0.79688,-2.53125 0.53515,-0.60937 1.27343,-0.91406 2.21484,-0.91407"
+ style=""
+ id="path3383" />
+ <path
+ d="m 349.4584,628.13324 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,10e-6 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39453 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3385" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#00b800;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3777">
+ <path
+ d="m 575.27002,547.52673 0,3.28711 1.48828,0 c 0.55078,10e-6 0.97656,-0.14257 1.27734,-0.42773 0.30078,-0.28515 0.45117,-0.6914 0.45118,-1.21875 -10e-6,-0.52343 -0.1504,-0.92773 -0.45118,-1.21289 -0.30078,-0.28515 -0.72656,-0.42773 -1.27734,-0.42774 l -1.48828,0 m -1.18359,-0.97265 2.67187,0 c 0.98046,10e-6 1.7207,0.22266 2.2207,0.66797 0.5039,0.44141 0.75586,1.08985 0.75586,1.94531 0,0.86328 -0.25196,1.51563 -0.75586,1.95703 -0.5,0.44141 -1.24024,0.66211 -2.2207,0.66211 l -1.48828,0 0,3.51562 -1.18359,0 0,-8.74804"
+ style=""
+ id="path3326" />
+ <path
+ d="m 584.87354,549.74744 c -0.1211,-0.0703 -0.25392,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36327,-0.19531 0.80468,-0.29296 1.32421,-0.29297 0.0742,10e-6 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3328" />
+ <path
+ d="m 586.01611,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3330" />
+ <path
+ d="m 594.45361,549.99939 c 0.26953,-0.48437 0.59179,-0.84179 0.9668,-1.07227 0.37499,-0.23046 0.8164,-0.34569 1.32422,-0.3457 0.68358,10e-6 1.21093,0.24024 1.58203,0.7207 0.37108,0.47657 0.55663,1.15626 0.55664,2.03907 l 0,3.96093 -1.08398,0 0,-3.92578 c -10e-6,-0.6289 -0.11134,-1.0957 -0.33399,-1.40039 -0.22266,-0.30468 -0.56251,-0.45702 -1.01953,-0.45703 -0.5586,10e-6 -1.00001,0.18555 -1.32422,0.55664 -0.32422,0.3711 -0.48633,0.87696 -0.48633,1.51758 l 0,3.70898 -1.08398,0 0,-3.92578 c -1e-5,-0.63281 -0.11133,-1.0996 -0.33398,-1.40039 -0.22267,-0.30468 -0.56642,-0.45702 -1.03125,-0.45703 -0.55079,10e-6 -0.98829,0.18751 -1.3125,0.5625 -0.32423,0.3711 -0.48634,0.87501 -0.48633,1.51172 l 0,3.70898 -1.08399,0 0,-6.5625 1.08399,0 0,1.01954 c 0.24609,-0.40234 0.54101,-0.69922 0.88476,-0.89063 0.34375,-0.1914 0.75195,-0.2871 1.22461,-0.28711 0.47656,10e-6 0.88086,0.1211 1.21289,0.36328 0.33593,0.2422 0.58398,0.59376 0.74414,1.05469"
+ style=""
+ id="path3332" />
+ <path
+ d="m 604.02197,552.0033 c -0.87109,0 -1.47461,0.0996 -1.81054,0.29882 -0.33594,0.19923 -0.50391,0.53907 -0.50391,1.01954 0,0.38281 0.125,0.6875 0.375,0.91406 0.2539,0.22265 0.59765,0.33398 1.03125,0.33398 0.59765,0 1.07617,-0.21093 1.43555,-0.63281 0.36327,-0.42578 0.54491,-0.99023 0.54492,-1.69336 l 0,-0.24023 -1.07227,0 m 2.15039,-0.44532 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39844 -0.55274,0.69336 -0.91992,0.88477 -0.36719,0.1875 -0.81641,0.28125 -1.34766,0.28125 -0.67188,0 -1.20703,-0.1875 -1.60547,-0.5625 -0.39453,-0.37891 -0.5918,-0.88477 -0.5918,-1.51758 0,-0.73828 0.2461,-1.29492 0.73829,-1.66992 0.49609,-0.375 1.23437,-0.5625 2.21484,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32422,-0.27343 -0.78125,-0.41015 -1.37109,-0.41016 -0.37501,10e-6 -0.74024,0.0449 -1.09571,0.13477 -0.35547,0.0898 -0.69726,0.22461 -1.02539,0.4043 l 0,-0.9961 c 0.39453,-0.15234 0.77735,-0.26562 1.14844,-0.33984 0.37109,-0.0781 0.73242,-0.11718 1.08399,-0.11719 0.94921,10e-6 1.65819,0.2461 2.12695,0.73828 0.46874,0.4922 0.70312,1.23829 0.70312,2.23828"
+ style=""
+ id="path3334" />
+ <path
+ d="m 612.20166,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52149,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3336" />
+ <path
+ d="m 616.07471,555.9115 c -0.30469,0.78125 -0.60157,1.29101 -0.89063,1.5293 -0.28906,0.23827 -0.67578,0.35742 -1.16015,0.35742 l -0.86133,0 0,-0.90235 0.63281,0 c 0.29687,0 0.52734,-0.0703 0.69141,-0.21093 0.16406,-0.14063 0.3457,-0.47266 0.54492,-0.9961 l 0.19336,-0.49218 -2.6543,-6.45704 1.14258,0 2.05078,5.13282 2.05078,-5.13282 1.14258,0 -2.88281,7.17188"
+ style=""
+ id="path3338" />
+ <path
+ d="m 624.31299,546.55408 1.76367,0 2.23242,5.95312 2.24414,-5.95312 1.76367,0 0,8.74804 -1.15429,0 0,-7.68164 -2.25586,6 -1.18945,0 -2.25586,-6 0,7.68164 -1.14844,0 0,-8.74804"
+ style=""
+ id="path3340" />
+ <path
+ d="m 637.16846,549.49548 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85743 0.33594,0.44921 0.79492,0.67382 1.37696,0.67382 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -10e-6,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,10e-6 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20898,0.91407 -0.94141,0 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
+ style=""
+ id="path3342" />
+ <path
+ d="m 647.4165,551.34119 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,10e-6 -1.04101,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.25781,-0.39453 0.56055,-0.68945 0.90821,-0.88477 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,10e-6 1.32421,0.23438 1.71094,0.70313 0.38671,0.46485 0.58007,1.15039 0.58007,2.05664"
+ style=""
+ id="path3344" />
+ <path
+ d="m 649.57861,548.73962 1.07813,0 0,6.5625 -1.07813,0 0,-6.5625 m 0,-2.55468 1.07813,0 0,1.36523 -1.07813,0 0,-1.36523"
+ style=""
+ id="path3346" />
+ <path
+ d="m 653.97314,546.87634 0,1.86328 2.22071,0 0,0.83789 -2.22071,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14844,0.15235 0.44726,0.22852 0.89649,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83204,0 -1.40626,-0.15429 -1.72266,-0.46289 -0.31641,-0.3125 -0.47461,-0.8789 -0.47461,-1.69922 l 0,-3.5625 -0.79102,0 0,-0.83789 0.79102,0 0,-1.86328 1.08398,0"
+ style=""
+ id="path3348" />
+ <path
+ d="m 660.16064,549.49548 c -0.57812,10e-6 -1.03515,0.22657 -1.37109,0.67969 -0.33594,0.44922 -0.50391,1.06641 -0.50391,1.85156 0,0.78516 0.16602,1.4043 0.49805,1.85743 0.33594,0.44921 0.79492,0.67382 1.37695,0.67382 0.57422,0 1.0293,-0.22656 1.36524,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36524,-0.68555 m 0,-0.91406 c 0.9375,10e-6 1.67383,0.30469 2.20899,0.91406 0.53515,0.60938 0.80273,1.45313 0.80273,2.53125 0,1.07422 -0.26758,1.91797 -0.80273,2.53125 -0.53516,0.60938 -1.27149,0.91407 -2.20899,0.91407 -0.9414,0 -1.67968,-0.30469 -2.21484,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21484,-0.91406"
+ style=""
+ id="path3350" />
+ <path
+ d="m 668.75635,549.74744 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15235 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,0 -1.07813,0.19922 -1.40625,0.59765 -0.32422,0.39454 -0.48633,0.9629 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01954 c 0.22656,-0.39844 0.52148,-0.69336 0.88477,-0.88477 0.36328,-0.19531 0.80468,-0.29296 1.32422,-0.29297 0.0742,10e-6 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10743"
+ style=""
+ id="path3352" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#0000ff;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3781">
+ <path
+ d="m 612.64136,657.77118 -3.33985,-8.74805 1.23633,0 2.77149,7.36524 2.77734,-7.36524 1.23047,0 -3.33399,8.74805 -1.34179,0"
+ style=""
+ id="path3401" />
+ <path
+ d="m 618.28394,651.20868 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55469 1.07812,0 0,1.36524 -1.07812,0 0,-1.36524"
+ style=""
+ id="path3403" />
+ <path
+ d="m 625.41479,652.21649 c -0.12109,-0.0703 -0.25391,-0.12109 -0.39843,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88476,-0.88477 0.36328,-0.1953 0.80469,-0.29296 1.32422,-0.29296 0.0742,0 0.15625,0.006 0.2461,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3405" />
+ <path
+ d="m 627.62378,649.3454 0,1.86328 2.2207,0 0,0.83789 -2.2207,0 0,3.5625 c 0,0.53516 0.0723,0.87891 0.2168,1.03125 0.14843,0.15234 0.44726,0.22852 0.89648,0.22852 l 1.10742,0 0,0.90234 -1.10742,0 c -0.83203,0 -1.40625,-0.1543 -1.72266,-0.46289 -0.3164,-0.3125 -0.47461,-0.87891 -0.47461,-1.69922 l 0,-3.5625 -0.79101,0 0,-0.83789 0.79101,0 0,-1.86328 1.08399,0"
+ style=""
+ id="path3407" />
+ <path
+ d="m 631.15698,655.18134 0,-3.97266 1.07813,0 0,3.93164 c 0,0.6211 0.12109,1.08789 0.36328,1.40039 0.24218,0.3086 0.60546,0.46289 1.08984,0.46289 0.58203,0 1.04101,-0.18554 1.37696,-0.55664 0.33983,-0.37109 0.50976,-0.87695 0.50976,-1.51758 l 0,-3.7207 1.07813,0 0,6.5625 -1.07813,0 0,-1.00781 c -0.26172,0.39843 -0.56641,0.69531 -0.91406,0.89062 -0.34376,0.19141 -0.74415,0.28711 -1.20117,0.28711 -0.75391,0 -1.32618,-0.23437 -1.7168,-0.70312 -0.39063,-0.46875 -0.58594,-1.1543 -0.58594,-2.05664 m 2.71289,-4.13086 0,0"
+ style=""
+ id="path3409" />
+ <path
+ d="m 641.86792,654.47235 c -0.8711,0 -1.47461,0.0996 -1.81055,0.29883 -0.33594,0.19922 -0.50391,0.53906 -0.5039,1.01953 -10e-6,0.38281 0.12499,0.6875 0.375,0.91406 0.2539,0.22266 0.59765,0.33399 1.03125,0.33399 0.59765,0 1.07616,-0.21094 1.43554,-0.63282 0.36328,-0.42577 0.54492,-0.99023 0.54493,-1.69335 l 0,-0.24024 -1.07227,0 m 2.15039,-0.44531 0,3.74414 -1.07812,0 0,-0.99609 c -0.2461,0.39843 -0.55274,0.69336 -0.91993,0.88476 -0.36719,0.1875 -0.81641,0.28125 -1.34765,0.28125 -0.67188,0 -1.20704,-0.1875 -1.60547,-0.5625 -0.39453,-0.3789 -0.5918,-0.88476 -0.5918,-1.51758 0,-0.73828 0.24609,-1.29492 0.73828,-1.66992 0.49609,-0.37499 1.23438,-0.56249 2.21485,-0.5625 l 1.51172,0 0,-0.10547 c -10e-6,-0.49609 -0.16407,-0.8789 -0.49219,-1.14844 -0.32423,-0.27343 -0.78126,-0.41015 -1.3711,-0.41015 -0.375,0 -0.74023,0.0449 -1.0957,0.13476 -0.35547,0.0899 -0.69727,0.22462 -1.02539,0.4043 l 0,-0.99609 c 0.39453,-0.15234 0.77734,-0.26562 1.14844,-0.33985 0.37109,-0.0781 0.73242,-0.11718 1.08398,-0.11718 0.94922,0 1.6582,0.2461 2.12696,0.73828 0.46874,0.49219 0.70311,1.23828 0.70312,2.23828"
+ style=""
+ id="path3411" />
+ <path
+ d="m 646.24487,648.65399 1.07813,0 0,9.11719 -1.07813,0 0,-9.11719"
+ style=""
+ id="path3413" />
+ <path
+ d="m 658.68433,649.31024 0,1.1543 c -0.44923,-0.21484 -0.87306,-0.37499 -1.27149,-0.48047 -0.39844,-0.10546 -0.78321,-0.1582 -1.1543,-0.1582 -0.64453,0 -1.14258,0.125 -1.49414,0.375 -0.34765,0.25 -0.52148,0.60547 -0.52148,1.0664 0,0.38673 0.11523,0.6797 0.3457,0.87891 0.23438,0.19532 0.67578,0.35352 1.32422,0.47461 l 0.71485,0.14648 c 0.8828,0.16798 1.53319,0.46485 1.95117,0.89063 0.42187,0.42188 0.6328,0.98828 0.63281,1.69922 -10e-6,0.84765 -0.28516,1.49023 -0.85547,1.92773 -0.56641,0.4375 -1.39844,0.65625 -2.49609,0.65625 -0.41407,0 -0.85547,-0.0469 -1.32422,-0.14062 -0.46485,-0.0937 -0.94727,-0.23243 -1.44727,-0.41602 l 0,-1.21875 c 0.48047,0.26953 0.95117,0.47266 1.41211,0.60938 0.46094,0.13672 0.91406,0.20507 1.35938,0.20507 0.67577,0 1.19726,-0.13281 1.56445,-0.39843 0.36718,-0.26563 0.55078,-0.64453 0.55078,-1.13672 0,-0.42969 -0.13282,-0.76562 -0.39844,-1.00782 -0.26172,-0.24218 -0.69336,-0.42382 -1.29492,-0.54492 l -0.7207,-0.14062 c -0.88282,-0.17578 -1.52149,-0.45117 -1.91602,-0.82617 -0.39453,-0.375 -0.59179,-0.89648 -0.59179,-1.56446 0,-0.77343 0.27148,-1.3828 0.81445,-1.82812 0.54687,-0.44531 1.29883,-0.66796 2.25586,-0.66797 0.41015,1e-5 0.82812,0.0371 1.25391,0.11133 0.42577,0.0742 0.86132,0.18555 1.30664,0.33398"
+ style=""
+ id="path3415" />
+ <path
+ d="m 665.73315,651.46063 0,1.00781 c -0.30469,-0.16796 -0.61133,-0.29296 -0.91992,-0.375 -0.30469,-0.0859 -0.61328,-0.1289 -0.92578,-0.1289 -0.69922,0 -1.24219,0.22266 -1.62891,0.66797 -0.38672,0.44141 -0.58008,1.0625 -0.58007,1.86328 -10e-6,0.80078 0.19335,1.42383 0.58007,1.86914 0.38672,0.44141 0.92969,0.66211 1.62891,0.66211 0.3125,0 0.62109,-0.041 0.92578,-0.12305 0.30859,-0.0859 0.61523,-0.21289 0.91992,-0.38086 l 0,0.9961 c -0.30078,0.14062 -0.61328,0.24609 -0.9375,0.3164 -0.32031,0.0703 -0.66211,0.10547 -1.02539,0.10547 -0.98828,0 -1.77344,-0.31055 -2.35547,-0.93164 -0.58203,-0.62109 -0.87304,-1.45898 -0.87304,-2.51367 0,-1.07031 0.29297,-1.91211 0.8789,-2.52539 0.58985,-0.61328 1.39649,-0.91992 2.41993,-0.91992 0.33202,0 0.65624,0.0352 0.97265,0.10546 0.3164,0.0664 0.62304,0.16798 0.91992,0.30469"
+ style=""
+ id="path3417" />
+ <path
+ d="m 671.42261,652.21649 c -0.1211,-0.0703 -0.25391,-0.12109 -0.39844,-0.15234 -0.14063,-0.0352 -0.29688,-0.0527 -0.46875,-0.0527 -0.60938,1e-5 -1.07813,0.19923 -1.40625,0.59766 -0.32422,0.39454 -0.48633,0.96289 -0.48633,1.70508 l 0,3.45703 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.22656,-0.39843 0.52148,-0.69335 0.88477,-0.88477 0.36328,-0.1953 0.80468,-0.29296 1.32422,-0.29296 0.0742,0 0.15624,0.006 0.24609,0.0176 0.0898,0.008 0.18945,0.0215 0.29883,0.041 l 0.006,1.10742"
+ style=""
+ id="path3419" />
+ <path
+ d="m 677.92065,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26953,1.3086 0.66797,1.69922 0.40234,0.38672 0.96094,0.58008 1.67578,0.58008 0.41406,0 0.81445,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16016,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40626,0.0859 -0.81837,0.12891 -1.23633,0.12891 -1.04688,0 -1.87696,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91407,-2.47266 0,-1.07421 0.28906,-1.92577 0.86719,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58007,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77343,2.31446 m -1.07812,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.7461,-0.52734 -1.27734,-0.52734 -0.60157,0 -1.08399,0.16993 -1.44727,0.50976 -0.35937,0.33985 -0.56641,0.81837 -0.62109,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3421" />
+ <path
+ d="m 685.30347,654.2204 0,0.52734 -4.95703,0 c 0.0469,0.74219 0.26952,1.3086 0.66796,1.69922 0.40235,0.38672 0.96094,0.58008 1.67579,0.58008 0.41405,0 0.81444,-0.0508 1.20117,-0.15235 0.39062,-0.10156 0.77734,-0.2539 1.16015,-0.45703 l 0,1.01953 c -0.38672,0.16407 -0.78321,0.28907 -1.18945,0.375 -0.40625,0.0859 -0.81836,0.12891 -1.23633,0.12891 -1.04688,0 -1.87695,-0.30469 -2.49023,-0.91406 -0.60938,-0.60938 -0.91407,-1.43359 -0.91406,-2.47266 -10e-6,-1.07421 0.28906,-1.92577 0.86718,-2.55469 0.58203,-0.6328 1.36523,-0.94921 2.34961,-0.94921 0.88281,0 1.58008,0.28516 2.0918,0.85546 0.51562,0.56642 0.77343,1.3379 0.77344,2.31446 m -1.07813,-0.31641 c -0.008,-0.58984 -0.17383,-1.06054 -0.49805,-1.41211 -0.32031,-0.35155 -0.74609,-0.52734 -1.27734,-0.52734 -0.60156,0 -1.08399,0.16993 -1.44726,0.50976 -0.35938,0.33985 -0.56641,0.81837 -0.6211,1.43555 l 3.84375,-0.006"
+ style=""
+ id="path3423" />
+ <path
+ d="m 692.52808,653.81024 0,3.96094 -1.07813,0 0,-3.92578 c 0,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.24219,-0.30859 -0.60547,-0.46289 -1.08984,-0.46289 -0.58204,0 -1.04102,0.18555 -1.37696,0.55664 -0.33594,0.3711 -0.50391,0.87695 -0.5039,1.51757 l 0,3.70899 -1.08399,0 0,-6.5625 1.08399,0 0,1.01953 c 0.25781,-0.39452 0.56054,-0.68945 0.9082,-0.88477 0.35156,-0.1953 0.75586,-0.29296 1.21289,-0.29296 0.7539,0 1.32421,0.23438 1.71094,0.70312 0.38671,0.46485 0.58007,1.1504 0.58008,2.05664"
+ style=""
+ id="path3425" />
+ </g>
+ <rect
+ style="fill:#b8b8b8;fill-opacity:1;stroke:#b8b8b8;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ id="rect5577"
+ width="173.25098"
+ height="141.43118"
+ x="157.75581"
+ y="436.97159" />
+ <rect
+ style="fill:#ededed;fill-opacity:1;stroke:#ededed;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3789"
+ width="168.99611"
+ height="136.87178"
+ x="159.87543"
+ y="439.39697"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#454545;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3791">
+ <path
+ d="m 274.28683,558.98682 1.19532,0 1.83984,7.39453 1.83399,-7.39453 1.33007,0 1.83985,7.39453 1.83398,-7.39453 1.20117,0 -2.19726,8.74804 -1.48828,0 -1.84571,-7.59375 -1.86328,7.59375 -1.48828,0 -2.19141,-8.74804"
+ style=""
+ id="path3388" />
+ <path
+ d="m 286.62082,561.17236 1.07812,0 0,6.5625 -1.07812,0 0,-6.5625 m 0,-2.55468 1.07812,0 0,1.36523 -1.07812,0 0,-1.36523"
+ style=""
+ id="path3390" />
+ <path
+ d="m 295.40402,563.77393 0,3.96093 -1.07812,0 0,-3.92578 c -10e-6,-0.62109 -0.1211,-1.08593 -0.36328,-1.39453 -0.2422,-0.30859 -0.60548,-0.46288 -1.08985,-0.46289 -0.58203,1e-5 -1.04102,0.18555 -1.37695,0.55664 -0.33594,0.3711 -0.50391,0.87696 -0.50391,1.51758 l 0,3.70898 -1.08398,0 0,-6.5625 1.08398,0 0,1.01953 c 0.25781,-0.39452 0.56055,-0.68944 0.90821,-0.88476 0.35156,-0.19531 0.75585,-0.29296 1.21289,-0.29297 0.7539,1e-5 1.32421,0.23438 1.71093,0.70313 0.38672,0.46484 0.58008,1.15039 0.58008,2.05664"
+ style=""
+ id="path3392" />
+ <path
+ d="m 301.88449,562.16846 0,-3.55078 1.07813,0 0,9.11718 -1.07813,0 0,-0.98437 c -0.22657,0.39062 -0.51368,0.68164 -0.86133,0.87305 -0.34375,0.1875 -0.75781,0.28124 -1.24218,0.28125 -0.79298,-1e-5 -1.43946,-0.31641 -1.93946,-0.94922 -0.49609,-0.63281 -0.74414,-1.46485 -0.74414,-2.4961 0,-1.03124 0.24805,-1.86327 0.74414,-2.49609 0.5,-0.63281 1.14648,-0.94921 1.93946,-0.94922 0.48437,1e-5 0.89843,0.0957 1.24218,0.28711 0.34765,0.18751 0.63476,0.47657 0.86133,0.86719 m -3.67383,2.29101 c 0,0.79297 0.16211,1.41602 0.48633,1.86914 0.32812,0.44922 0.77734,0.67383 1.34766,0.67383 0.57031,0 1.01952,-0.22461 1.34765,-0.67383 0.32812,-0.45312 0.49219,-1.07617 0.49219,-1.86914 0,-0.79296 -0.16407,-1.41406 -0.49219,-1.86328 -0.32813,-0.45312 -0.77734,-0.67968 -1.34765,-0.67969 -0.57032,10e-6 -1.01954,0.22657 -1.34766,0.67969 -0.32422,0.44922 -0.48633,1.07032 -0.48633,1.86328"
+ style=""
+ id="path3394" />
+ <path
+ d="m 307.72629,561.92822 c -0.57813,10e-6 -1.03516,0.22657 -1.3711,0.67969 -0.33594,0.44922 -0.5039,1.06641 -0.5039,1.85156 0,0.78516 0.16601,1.4043 0.49804,1.85742 0.33594,0.44922 0.79492,0.67383 1.37696,0.67383 0.57421,0 1.02929,-0.22656 1.36523,-0.67968 0.33593,-0.45313 0.5039,-1.07031 0.50391,-1.85157 -1e-5,-0.77734 -0.16798,-1.39257 -0.50391,-1.8457 -0.33594,-0.45703 -0.79102,-0.68554 -1.36523,-0.68555 m 0,-0.91406 c 0.93749,1e-5 1.67382,0.30469 2.20898,0.91406 0.53515,0.60938 0.80273,1.45313 0.80274,2.53125 -10e-6,1.07422 -0.26759,1.91797 -0.80274,2.53125 -0.53516,0.60938 -1.27149,0.91406 -2.20898,0.91407 -0.94141,-1e-5 -1.67969,-0.30469 -2.21485,-0.91407 -0.53125,-0.61328 -0.79687,-1.45703 -0.79687,-2.53125 0,-1.07812 0.26562,-1.92187 0.79687,-2.53125 0.53516,-0.60937 1.27344,-0.91405 2.21485,-0.91406"
+ style=""
+ id="path3396" />
+ <path
+ d="m 311.8923,561.17236 1.07813,0 1.34765,5.1211 1.3418,-5.1211 1.27149,0 1.34765,5.1211 1.3418,-5.1211 1.07812,0 -1.71679,6.5625 -1.27149,0 -1.41211,-5.3789 -1.41797,5.3789 -1.27148,0 -1.7168,-6.5625"
+ style=""
+ id="path3398" />
+ </g>
+ <rect
+ y="439.39581"
+ x="159.87428"
+ height="8.8251209"
+ width="168.99841"
+ id="rect3795"
+ style="fill:#7b7bff;fill-opacity:1;stroke:#7b7bff;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ id="path3797"
+ sodipodi:cx="352.54324"
+ sodipodi:cy="373.03461"
+ sodipodi:rx="2.5253813"
+ sodipodi:ry="2.5253813"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ transform="matrix(0.66107369,0,0,0.66107369,123.32145,119.41326)"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ transform="matrix(0.66107369,0,0,0.66107369,-194.73594,119.44704)"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ sodipodi:ry="2.5253813"
+ sodipodi:rx="2.5253813"
+ sodipodi:cy="373.03461"
+ sodipodi:cx="352.54324"
+ id="path3799"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ sodipodi:type="arc"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ id="path3801"
+ sodipodi:cx="352.54324"
+ sodipodi:cy="373.03461"
+ sodipodi:rx="2.5253813"
+ sodipodi:ry="2.5253813"
+ d="m 355.06862,373.03461 c 0,1.39473 -1.13065,2.52538 -2.52538,2.52538 -1.39473,0 -2.52538,-1.13065 -2.52538,-2.52538 0,-1.39473 1.13065,-2.52538 2.52538,-2.52538 1.39473,0 2.52538,1.13065 2.52538,2.52538 z"
+ transform="matrix(0.66107369,0,0,0.66107369,-73.218648,201.61091)"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ x="21.213203"
+ y="340.20465"
+ id="text3803"
+ inkscape:export-filename="/home/elmindreda/projects/glfw/glfw/docs/spaces.png"
+ inkscape:export-xdpi="109.89113"
+ inkscape:export-ydpi="109.89113"><tspan
+ sodipodi:role="line"
+ id="tspan3805"
+ x="21.213203"
+ y="340.20465"
+ style="font-size:12px;line-height:1.25;font-family:sans-serif"> </tspan></text>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3807">
+ <path
+ d="m 71.179893,455.55557 0.996094,0 1.533203,6.16211 1.528321,-6.16211 1.108398,0 1.533203,6.16211 1.528321,-6.16211 1.000976,0 -1.831055,7.29004 -1.240234,0 -1.538086,-6.32812 -1.552734,6.32812 -1.240235,0 -1.826172,-7.29004"
+ style="font-size:10px"
+ id="path3164" />
+ <path
+ d="m 81.458214,457.37686 0.898437,0 0,5.46875 -0.898437,0 0,-5.46875 m 0,-2.1289 0.898437,0 0,1.13769 -0.898437,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3166" />
+ <path
+ d="m 88.77755,459.54483 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51758 -0.100916,-0.90495 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15462 -1.147461,0.46386 -0.27995,0.30925 -0.419924,0.7308 -0.419922,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19531 1.425781,0.58593 0.322261,0.38738 0.483393,0.95867 0.483399,1.71387"
+ style="font-size:10px"
+ id="path3168" />
+ <path
+ d="m 94.17794,458.20694 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56803 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23437 -1.035156,0.23437 -0.66081,0 -1.199546,-0.26367 -1.616211,-0.79101 -0.413412,-0.52735 -0.620118,-1.2207 -0.620117,-2.08008 -10e-7,-0.85937 0.206705,-1.55273 0.620117,-2.08008 0.416665,-0.52734 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0797 1.035156,0.23925 0.289709,0.15626 0.528967,0.39714 0.717773,0.72266 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18001 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.37761 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.56641 -1.123047,-0.56641 -0.475263,0 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
+ style="font-size:10px"
+ id="path3170" />
+ <path
+ d="m 99.046104,458.00674 c -0.481773,1e-5 -0.862632,0.18881 -1.142578,0.56641 -0.279949,0.37435 -0.419923,0.88868 -0.419922,1.54297 -10e-7,0.6543 0.138345,1.17025 0.415039,1.54785 0.279946,0.37435 0.662433,0.56153 1.147461,0.56152 0.478513,1e-5 0.857744,-0.1888 1.137696,-0.5664 0.27994,-0.3776 0.41992,-0.89193 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.279952,-0.38085 -0.659183,-0.57128 -1.137696,-0.57129 m 0,-0.76171 c 0.781247,0 1.394856,0.25391 1.840816,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44596,0.50782 -1.059569,0.76172 -1.840816,0.76172 -0.784507,0 -1.399741,-0.2539 -1.845703,-0.76172 -0.442709,-0.51106 -0.664063,-1.21419 -0.664062,-2.10937 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10938 0.445962,-0.5078 1.061196,-0.76171 1.845703,-0.76171"
+ style="font-size:10px"
+ id="path3172" />
+ <path
+ d="m 102.51778,457.37686 0.89844,0 1.12305,4.26758 1.11816,-4.26758 1.05957,0 1.12305,4.26758 1.11816,-4.26758 0.89844,0 -1.43066,5.46875 -1.05957,0 -1.17676,-4.48242 -1.18164,4.48242 -1.05957,0 -1.43067,-5.46875"
+ style="font-size:10px"
+ id="path3174" />
+ <path
+ d="m 115.27657,462.0253 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32552 0.42643,-0.5664 0.71289,-0.72266 0.28971,-0.1595 0.63477,-0.23925 1.03516,-0.23925 0.66406,0 1.20279,0.26367 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55273 -0.625,2.08008 -0.41342,0.52734 -0.95215,0.79101 -1.61621,0.79101 -0.40039,0 -0.74545,-0.0781 -1.03516,-0.23437 -0.28646,-0.15951 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c 0,-0.6608 -0.13672,-1.17838 -0.41015,-1.55273 -0.27019,-0.3776 -0.64291,-0.56641 -1.11817,-0.56641 -0.47526,0 -0.84961,0.18881 -1.12304,0.56641 -0.27019,0.37435 -0.40528,0.89193 -0.40528,1.55273 0,0.66081 0.13509,1.18001 0.40528,1.55762 0.27343,0.37435 0.64778,0.56152 1.12304,0.56152 0.47526,0 0.84798,-0.18717 1.11817,-0.56152 0.27343,-0.37761 0.41015,-0.89681 0.41015,-1.55762"
+ style="font-size:10px"
+ id="path3176" />
+ <path
+ d="m 122.87423,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.13769,-0.5664 0.27995,-0.3776 0.41992,-0.89193 0.41993,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41993,-1.53809 -0.27995,-0.38085 -0.65918,-0.57128 -1.13769,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66407,-2.10937 0,-0.89843 0.22136,-1.60156 0.66407,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
+ style="font-size:10px"
+ id="path3178" />
+ <path
+ d="m 130.3547,457.53799 0,0.84961 c -0.25391,-0.1302 -0.51758,-0.22786 -0.79102,-0.29296 -0.27344,-0.0651 -0.55664,-0.0977 -0.84961,-0.0977 -0.44596,0 -0.78125,0.0684 -1.00586,0.20508 -0.22135,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63802,0.13672 1.09049,0.33041 1.35742,0.58105 0.27018,0.2474 0.40527,0.59408 0.40528,1.04004 -1e-5,0.50782 -0.20183,0.90983 -0.60547,1.20606 -0.4004,0.29622 -0.95215,0.44433 -1.65528,0.44433 -0.29297,0 -0.59896,-0.0293 -0.91796,-0.0879 -0.31576,-0.0553 -0.64942,-0.13997 -1.00098,-0.2539 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98144,0.39063 0.32227,0.0846 0.64128,0.12695 0.95704,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14649 0.34179,-0.35157 0.3418,-0.61524 -1e-5,-0.24414 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11719 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24414 -0.3711,-0.5778 -0.3711,-1.00098 0,-0.51431 0.18229,-0.91145 0.54688,-1.1914 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12207 0.81055,0.21972"
+ style="font-size:10px"
+ id="path3180" />
+ <path
+ d="m 132.08321,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3182" />
+ <path
+ d="m 135.74532,455.82413 0,1.55273 1.85059,0 0,0.69824 -1.85059,0 0,2.96875 c 0,0.44597 0.0602,0.73243 0.18067,0.85938 0.12369,0.12695 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26042 -0.39551,-0.73242 -0.39551,-1.41602 l 0,-2.96875 -0.65918,0 0,-0.69824 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3184" />
+ <path
+ d="m 138.78243,457.37686 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3186" />
+ <path
+ d="m 143.67501,458.00674 c -0.48177,1e-5 -0.86263,0.18881 -1.14258,0.56641 -0.27995,0.37435 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56152 0.47851,1e-5 0.85774,-0.1888 1.1377,-0.5664 0.27994,-0.3776 0.41991,-0.89193 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53809 -0.27996,-0.38085 -0.65919,-0.57128 -1.1377,-0.57129 m 0,-0.76171 c 0.78125,0 1.39485,0.25391 1.84082,0.76171 0.44596,0.50782 0.66894,1.21095 0.66895,2.10938 -1e-5,0.89518 -0.22299,1.59831 -0.66895,2.10937 -0.44597,0.50782 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.2539 -1.8457,-0.76172 -0.44271,-0.51106 -0.66407,-1.21419 -0.66406,-2.10937 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10938 0.44596,-0.5078 1.06119,-0.76171 1.8457,-0.76171"
+ style="font-size:10px"
+ id="path3188" />
+ <path
+ d="m 152.21505,459.54483 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51758 -0.10091,-0.90495 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15462 -1.14746,0.46386 -0.27995,0.30925 -0.41992,0.7308 -0.41992,1.26465 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19531 1.42578,0.58593 0.32226,0.38738 0.48339,0.95867 0.4834,1.71387"
+ style="font-size:10px"
+ id="path3190" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3817">
+ <path
+ d="m 49.798271,374.06503 0,0.96192 c -0.374354,-0.17903 -0.727544,-0.3125 -1.05957,-0.40039 -0.332035,-0.0879 -0.652673,-0.13183 -0.961914,-0.13184 -0.537112,1e-5 -0.952151,0.10417 -1.245117,0.3125 -0.289716,0.20834 -0.434572,0.50456 -0.434571,0.88867 -10e-7,0.32227 0.09603,0.56641 0.288086,0.73242 0.195311,0.16277 0.563149,0.2946 1.103516,0.39551 l 0.595703,0.12207 c 0.735673,0.13998 1.277664,0.38738 1.625977,0.74219 0.351556,0.35157 0.527338,0.82357 0.527343,1.41602 -5e-6,0.70638 -0.237635,1.24186 -0.71289,1.60644 -0.47201,0.36458 -1.165369,0.54688 -2.080078,0.54688 -0.345055,0 -0.712893,-0.0391 -1.103516,-0.11719 -0.387371,-0.0781 -0.789389,-0.19369 -1.206055,-0.34668 l 0,-1.01563 c 0.40039,0.22461 0.792642,0.39388 1.176758,0.50782 0.384112,0.11393 0.761716,0.1709 1.132813,0.17089 0.563147,10e-6 0.997717,-0.11067 1.30371,-0.33203 0.305985,-0.22135 0.45898,-0.5371 0.458985,-0.94726 -5e-6,-0.35807 -0.110682,-0.63802 -0.332031,-0.83985 -0.218104,-0.20182 -0.577804,-0.35318 -1.079102,-0.4541 l -0.600586,-0.11719 c -0.735679,-0.14648 -1.267905,-0.37597 -1.59668,-0.68847 -0.328776,-0.3125 -0.493164,-0.74707 -0.493164,-1.30371 0,-0.64453 0.226236,-1.15234 0.678711,-1.52344 0.455728,-0.37109 1.082355,-0.55663 1.879883,-0.55664 0.341793,10e-6 0.6901,0.0309 1.044922,0.0928 0.354813,0.0619 0.717768,0.15463 1.088867,0.27832"
+ style="font-size:10px"
+ id="path3193" />
+ <path
+ d="m 56.414482,378.15683 0,0.43945 -4.130859,0 c 0.03906,0.61849 0.224607,1.0905 0.55664,1.41602 0.335284,0.32226 0.800779,0.4834 1.396485,0.4834 0.345048,0 0.678707,-0.0423 1.000976,-0.12696 0.325516,-0.0846 0.647782,-0.21158 0.966797,-0.38086 l 0,0.84961 c -0.322271,0.13672 -0.652674,0.24089 -0.991211,0.3125 -0.338546,0.0716 -0.68197,0.10743 -1.030273,0.10743 -0.872399,0 -1.56413,-0.25391 -2.075196,-0.76172 -0.507813,-0.50781 -0.761719,-1.19466 -0.761718,-2.06055 -10e-7,-0.89518 0.240884,-1.60481 0.722656,-2.12891 0.485024,-0.52733 1.137693,-0.79101 1.958008,-0.79101 0.735673,0 1.316727,0.23763 1.743164,0.71289 0.429682,0.47201 0.644525,1.11491 0.644531,1.92871 m -0.898437,-0.26367 c -0.0065,-0.49153 -0.144862,-0.88379 -0.415039,-1.17676 -0.266932,-0.29296 -0.621749,-0.43945 -1.064454,-0.43945 -0.501304,0 -0.903322,0.1416 -1.206054,0.4248 -0.299481,0.28321 -0.472007,0.68197 -0.517578,1.19629 l 3.203125,-0.005"
+ style="font-size:10px"
+ id="path3195" />
+ <path
+ d="m 61.824638,375.85703 0,0.83984 c -0.253911,-0.13997 -0.509444,-0.24414 -0.766601,-0.3125 -0.25391,-0.0716 -0.511072,-0.10742 -0.771485,-0.10742 -0.582685,0 -1.035158,0.18555 -1.357421,0.55664 -0.322268,0.36784 -0.4834,0.88542 -0.483399,1.55273 -10e-7,0.66732 0.161131,1.18653 0.483399,1.55762 0.322263,0.36784 0.774736,0.55176 1.357421,0.55176 0.260413,0 0.517575,-0.0342 0.771485,-0.10254 0.257157,-0.0716 0.51269,-0.17741 0.766601,-0.31738 l 0,0.83007 c -0.250655,0.11719 -0.511072,0.20508 -0.78125,0.26368 -0.266931,0.0586 -0.551761,0.0879 -0.854492,0.0879 -0.82357,0 -1.477866,-0.25879 -1.96289,-0.77637 -0.485027,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.732422,-2.10449 0.491535,-0.51106 1.163735,-0.7666 2.016602,-0.7666 0.276689,0 0.546871,0.0293 0.810547,0.0879 0.263667,0.0553 0.519201,0.13998 0.766601,0.25391"
+ style="font-size:10px"
+ id="path3197" />
+ <path
+ d="m 65.516045,376.27695 c -0.481774,0 -0.862633,0.1888 -1.142579,0.5664 -0.279949,0.37436 -0.419923,0.88868 -0.419921,1.54297 -2e-6,0.6543 0.138344,1.17025 0.415039,1.54785 0.279945,0.37435 0.662432,0.56153 1.147461,0.56153 0.478512,0 0.857743,-0.1888 1.137695,-0.56641 0.279943,-0.3776 0.419917,-0.89192 0.419922,-1.54297 -5e-6,-0.64778 -0.139979,-1.16048 -0.419922,-1.53808 -0.279952,-0.38086 -0.659183,-0.57129 -1.137695,-0.57129 m 0,-0.76172 c 0.781246,0 1.394852,0.25391 1.84082,0.76172 0.445958,0.50781 0.66894,1.21094 0.668945,2.10937 -5e-6,0.89519 -0.222987,1.59831 -0.668945,2.10938 -0.445968,0.50781 -1.059574,0.76172 -1.84082,0.76172 -0.784508,0 -1.399742,-0.25391 -1.845704,-0.76172 -0.442709,-0.51107 -0.664063,-1.21419 -0.664062,-2.10938 -10e-7,-0.89843 0.221353,-1.60156 0.664062,-2.10937 0.445962,-0.50781 1.061196,-0.76172 1.845704,-0.76172"
+ style="font-size:10px"
+ id="path3199" />
+ <path
+ d="m 74.056084,377.81503 0,3.30078 -0.898438,0 0,-3.27148 c -4e-6,-0.51757 -0.100916,-0.90494 -0.302734,-1.16211 -0.201827,-0.25716 -0.504561,-0.38574 -0.908203,-0.38574 -0.485029,0 -0.867516,0.15463 -1.147461,0.46387 -0.27995,0.30924 -0.419924,0.73079 -0.419922,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.214842,-0.32877 0.46712,-0.57454 0.756836,-0.7373 0.292966,-0.16276 0.629879,-0.24414 1.010742,-0.24414 0.628251,0 1.103511,0.19532 1.425781,0.58594 0.322261,0.38737 0.483393,0.95866 0.483399,1.71386"
+ style="font-size:10px"
+ id="path3201" />
+ <path
+ d="m 79.456474,376.47714 0,-2.95898 0.898438,0 0,7.59765 -0.898438,0 0,-0.82031 c -0.188806,0.32552 -0.428064,0.56804 -0.717773,0.72754 -0.286462,0.15625 -0.631514,0.23438 -1.035156,0.23438 -0.66081,0 -1.199546,-0.26368 -1.616211,-0.79102 -0.413413,-0.52734 -0.620118,-1.2207 -0.620118,-2.08008 0,-0.85937 0.206705,-1.55273 0.620118,-2.08008 0.416665,-0.52733 0.955401,-0.79101 1.616211,-0.79101 0.403642,0 0.748694,0.0798 1.035156,0.23926 0.289709,0.15625 0.528967,0.39714 0.717773,0.72265 m -3.061523,1.90918 c -2e-6,0.66081 0.135089,1.18002 0.405273,1.55762 0.273436,0.37435 0.647784,0.56152 1.123047,0.56152 0.475257,0 0.849606,-0.18717 1.123047,-0.56152 0.273433,-0.3776 0.410152,-0.89681 0.410156,-1.55762 -4e-6,-0.6608 -0.136723,-1.17838 -0.410156,-1.55273 -0.273441,-0.3776 -0.64779,-0.5664 -1.123047,-0.56641 -0.475263,1e-5 -0.849611,0.18881 -1.123047,0.56641 -0.270184,0.37435 -0.405275,0.89193 -0.405273,1.55273"
+ style="font-size:10px"
+ id="path3203" />
+ <path
+ d="m 84.690849,378.36679 c -0.725914,0 -1.228843,0.083 -1.508789,0.24902 -0.279949,0.16602 -0.419923,0.44923 -0.419922,0.84961 -10e-7,0.31902 0.104165,0.57292 0.3125,0.76172 0.211587,0.18555 0.498045,0.27832 0.859375,0.27832 0.498044,0 0.896807,-0.17578 1.196289,-0.52734 0.302731,-0.35482 0.454098,-0.82519 0.454102,-1.41113 l 0,-0.2002 -0.893555,0 m 1.791992,-0.37109 0,3.12011 -0.898437,0 0,-0.83007 c -0.205082,0.33203 -0.460616,0.5778 -0.766602,0.7373 -0.305992,0.15625 -0.680341,0.23438 -1.123046,0.23438 -0.559898,0 -1.005861,-0.15625 -1.337891,-0.46875 -0.328777,-0.31576 -0.493165,-0.73731 -0.493164,-1.26465 -1e-6,-0.61523 0.205077,-1.0791 0.615234,-1.3916 0.41341,-0.3125 1.028644,-0.46875 1.845703,-0.46875 l 1.259766,0 0,-0.0879 c -4e-6,-0.41341 -0.136723,-0.73242 -0.410156,-0.95704 -0.270186,-0.22786 -0.651045,-0.34179 -1.142578,-0.34179 -0.312503,0 -0.616865,0.0374 -0.913086,0.1123 -0.296226,0.0749 -0.581056,0.18718 -0.854493,0.33692 l 0,-0.83008 c 0.328775,-0.12695 0.647785,-0.22135 0.957032,-0.28321 0.309242,-0.0651 0.610349,-0.0977 0.90332,-0.0977 0.791012,0 1.381832,0.20508 1.772461,0.61523 0.39062,0.41016 0.585932,1.03191 0.585937,1.86524"
+ style="font-size:10px"
+ id="path3205" />
+ <path
+ d="m 91.507256,376.48691 c -0.100916,-0.0586 -0.211593,-0.10091 -0.332032,-0.12696 -0.117191,-0.0293 -0.247399,-0.0439 -0.390625,-0.0439 -0.507815,0 -0.89844,0.16602 -1.171875,0.49805 -0.270184,0.32878 -0.405275,0.80241 -0.405273,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.434568,-0.57779 0.737305,-0.7373 0.302731,-0.16276 0.670569,-0.24414 1.103515,-0.24414 0.06185,0 0.130205,0.005 0.205078,0.0147 0.07487,0.007 0.157874,0.0179 0.249024,0.0342 l 0.0049,0.92285"
+ style="font-size:10px"
+ id="path3207" />
+ <path
+ d="m 94.734795,381.62363 c -0.25391,0.65104 -0.501305,1.07584 -0.742188,1.27441 -0.240888,0.19857 -0.563153,0.29785 -0.966797,0.29785 l -0.717773,0 0,-0.75195 0.527344,0 c 0.247394,0 0.439451,-0.0586 0.576171,-0.17578 0.136717,-0.11719 0.288084,-0.39388 0.454102,-0.83008 l 0.161133,-0.41016 -2.211914,-5.38086 0.952148,0 1.708985,4.27735 1.708984,-4.27735 0.952148,0 -2.402343,5.97657"
+ style="font-size:10px"
+ id="path3209" />
+ <path
+ d="m 105.81878,376.69687 c 0.2246,-0.40364 0.49316,-0.70149 0.80566,-0.89356 0.3125,-0.19205 0.68033,-0.28808 1.10352,-0.28808 0.56965,0 1.00911,0.2002 1.31836,0.60058 0.30923,0.39714 0.46386,0.96355 0.46387,1.69922 l 0,3.30078 -0.90333,0 0,-3.27148 c 0,-0.52408 -0.0928,-0.91308 -0.27832,-1.16699 -0.18555,-0.2539 -0.46875,-0.38086 -0.8496,-0.38086 -0.46551,0 -0.83334,0.15463 -1.10352,0.46387 -0.27019,0.30924 -0.40528,0.73079 -0.40527,1.26464 l 0,3.09082 -0.90332,0 0,-3.27148 c -10e-6,-0.52734 -0.0928,-0.91634 -0.27832,-1.16699 -0.18556,-0.2539 -0.47201,-0.38086 -0.85938,-0.38086 -0.45899,0 -0.82357,0.15625 -1.09375,0.46875 -0.27018,0.30925 -0.40527,0.72917 -0.40527,1.25976 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.20507,-0.33528 0.45084,-0.58267 0.7373,-0.74218 0.28646,-0.1595 0.62663,-0.23926 1.02051,-0.23926 0.39713,0 0.73404,0.10092 1.01074,0.30273 0.27994,0.20183 0.48665,0.4948 0.62012,0.87891"
+ style="font-size:10px"
+ id="path3211" />
+ <path
+ d="m 113.4262,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66406,-2.10938 -10e-6,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3213" />
+ <path
+ d="m 121.96624,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.90821,-0.38574 -0.48502,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3215" />
+ <path
+ d="m 123.768,375.64706 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3217" />
+ <path
+ d="m 127.43011,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c 0,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.3955,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3219" />
+ <path
+ d="m 132.58636,376.27695 c -0.48178,0 -0.86264,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.13769,-0.56641 0.27995,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13997,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.13769,-0.57129 m 0,-0.76172 c 0.78124,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66894,2.10937 0,0.89519 -0.22298,1.59831 -0.66894,2.10938 -0.44597,0.50781 -1.05958,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.84571,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44597,-0.50781 1.0612,-0.76172 1.84571,-0.76172"
+ style="font-size:10px"
+ id="path3221" />
+ <path
+ d="m 139.74944,376.48691 c -0.10091,-0.0586 -0.21159,-0.10091 -0.33203,-0.12696 -0.11719,-0.0293 -0.2474,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.42089 l 0,2.88086 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.7373,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10352,-0.24414 0.0618,0 0.1302,0.005 0.20508,0.0147 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3223" />
+ <path
+ d="m 144.75433,380.2955 0,2.90039 -0.90332,0 0,-7.54883 0.90332,0 0,0.83008 c 0.1888,-0.32551 0.42643,-0.5664 0.71289,-0.72265 0.28971,-0.1595 0.63476,-0.23926 1.03515,-0.23926 0.66406,0 1.2028,0.26368 1.61621,0.79101 0.41666,0.52735 0.625,1.22071 0.625,2.08008 0,0.85938 -0.20834,1.55274 -0.625,2.08008 -0.41341,0.52734 -0.95215,0.79102 -1.61621,0.79102 -0.40039,0 -0.74544,-0.0781 -1.03515,-0.23438 -0.28646,-0.1595 -0.52409,-0.40202 -0.71289,-0.72754 m 3.05664,-1.90918 c -1e-5,-0.6608 -0.13673,-1.17838 -0.41016,-1.55273 -0.27019,-0.3776 -0.64291,-0.5664 -1.11816,-0.56641 -0.47527,1e-5 -0.84962,0.18881 -1.12305,0.56641 -0.27018,0.37435 -0.40528,0.89193 -0.40527,1.55273 -1e-5,0.66081 0.13509,1.18002 0.40527,1.55762 0.27343,0.37435 0.64778,0.56152 1.12305,0.56152 0.47525,0 0.84797,-0.18717 1.11816,-0.56152 0.27343,-0.3776 0.41015,-0.89681 0.41016,-1.55762"
+ style="font-size:10px"
+ id="path3225" />
+ <path
+ d="m 152.35198,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -1e-5,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3227" />
+ <path
+ d="m 159.83245,375.8082 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27345,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78126,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33204,0.3418 -0.33203,0.61523 -1e-5,0.20834 0.0798,0.37273 0.23925,0.49317 0.15951,0.11719 0.48014,0.22949 0.96192,0.33691 l 0.30761,0.0684 c 0.63802,0.13672 1.0905,0.33041 1.35743,0.58106 0.27017,0.24739 0.40526,0.59407 0.40527,1.04004 -1e-5,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64942,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33203,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42317,0 0.74869,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.34179,-0.35156 0.3418,-0.61524 -1e-5,-0.24413 -0.083,-0.43131 -0.24903,-0.56152 -0.16276,-0.13021 -0.52246,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55664,-0.11718 -0.95866,-0.29622 -1.20605,-0.53711 -0.2474,-0.24413 -0.3711,-0.57779 -0.3711,-1.00097 0,-0.51432 0.1823,-0.91146 0.54688,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55273,-0.41992 0.33203,0 0.64453,0.0244 0.9375,0.0732 0.29297,0.0488 0.56315,0.12208 0.81055,0.21973"
+ style="font-size:10px"
+ id="path3229" />
+ <path
+ d="m 161.56097,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3231" />
+ <path
+ d="m 165.22308,374.09433 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3233" />
+ <path
+ d="m 168.26019,375.64706 0.89843,0 0,5.46875 -0.89843,0 0,-5.46875 m 0,-2.1289 0.89843,0 0,1.13769 -0.89843,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3235" />
+ <path
+ d="m 173.15276,376.27695 c -0.48177,0 -0.86263,0.1888 -1.14257,0.5664 -0.27995,0.37436 -0.41993,0.88868 -0.41993,1.54297 0,0.6543 0.13835,1.17025 0.41504,1.54785 0.27995,0.37435 0.66243,0.56153 1.14746,0.56153 0.47852,0 0.85775,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41992,-0.89192 0.41992,-1.54297 0,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27995,-0.38086 -0.65918,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39486,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44596,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.7845,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66406,-1.21419 -0.66406,-2.10938 0,-0.89843 0.22135,-1.60156 0.66406,-2.10937 0.44596,-0.50781 1.0612,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3237" />
+ <path
+ d="m 181.6928,377.81503 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10091,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41993,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21485,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.4834,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3239" />
+ </g>
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3017">
+ <path
+ d="m 367.17007,356.71783 -2.7832,-7.29003 1.03027,0 2.30958,6.13769 2.31445,-6.13769 1.02539,0 -2.77832,7.29003 -1.11817,0"
+ style="font-size:10px"
+ id="path3242" />
+ <path
+ d="m 371.87222,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3244" />
+ <path
+ d="m 377.81461,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3246" />
+ <path
+ d="m 379.65543,349.69635 0,1.55273 1.85058,0 0,0.69825 -1.85058,0 0,2.96875 c -1e-5,0.44596 0.0602,0.73242 0.18066,0.85937 0.1237,0.12696 0.37272,0.19043 0.74707,0.19043 l 0.92285,0 0,0.75195 -0.92285,0 c -0.69336,0 -1.17188,-0.12858 -1.43555,-0.38574 -0.26367,-0.26041 -0.39551,-0.73242 -0.3955,-1.41601 l 0,-2.96875 -0.65918,0 0,-0.69825 0.65918,0 0,-1.55273 0.90332,0"
+ style="font-size:10px"
+ id="path3248" />
+ <path
+ d="m 382.59976,354.55963 0,-3.31055 0.89844,0 0,3.27637 c 0,0.51758 0.10091,0.90658 0.30273,1.16699 0.20182,0.25717 0.50456,0.38575 0.90821,0.38575 0.48502,0 0.86751,-0.15463 1.14746,-0.46387 0.2832,-0.30924 0.4248,-0.73079 0.4248,-1.26465 l 0,-3.10059 0.89844,0 0,5.46875 -0.89844,0 0,-0.83984 c -0.2181,0.33203 -0.47201,0.57943 -0.76172,0.74219 -0.28646,0.1595 -0.62012,0.23926 -1.00097,0.23926 -0.62826,0 -1.10515,-0.19532 -1.43067,-0.58594 -0.32552,-0.39063 -0.48828,-0.96191 -0.48828,-1.71387 m 2.26074,-3.44238 0,0"
+ style="font-size:10px"
+ id="path3250" />
+ <path
+ d="m 391.52554,353.96881 c -0.72591,0 -1.22884,0.083 -1.50879,0.24902 -0.27995,0.16602 -0.41992,0.44923 -0.41992,0.84961 0,0.31902 0.10417,0.57292 0.3125,0.76172 0.21159,0.18555 0.49805,0.27832 0.85938,0.27832 0.49804,0 0.8968,-0.17578 1.19629,-0.52734 0.30273,-0.35482 0.45409,-0.82519 0.4541,-1.41113 l 0,-0.2002 -0.89356,0 m 1.792,-0.37109 0,3.12011 -0.89844,0 0,-0.83007 c -0.20508,0.33203 -0.46062,0.5778 -0.7666,0.7373 -0.306,0.15625 -0.68035,0.23438 -1.12305,0.23438 -0.5599,0 -1.00586,-0.15625 -1.33789,-0.46875 -0.32878,-0.31576 -0.49317,-0.73731 -0.49317,-1.26465 0,-0.61523 0.20508,-1.0791 0.61524,-1.3916 0.41341,-0.3125 1.02864,-0.46875 1.8457,-0.46875 l 1.25977,0 0,-0.0879 c -1e-5,-0.41341 -0.13673,-0.73242 -0.41016,-0.95704 -0.27018,-0.22786 -0.65104,-0.34179 -1.14258,-0.34179 -0.3125,0 -0.61686,0.0374 -0.91308,0.1123 -0.29623,0.0749 -0.58106,0.18718 -0.85449,0.33692 l 0,-0.83008 c 0.32877,-0.12695 0.64778,-0.22135 0.95703,-0.28321 0.30924,-0.0651 0.61035,-0.0976 0.90332,-0.0976 0.79101,0 1.38183,0.20508 1.77246,0.61523 0.39062,0.41016 0.58593,1.03191 0.58594,1.86524"
+ style="font-size:10px"
+ id="path3252" />
+ <path
+ d="m 395.173,349.12018 0.89844,0 0,7.59765 -0.89844,0 0,-7.59765"
+ style="font-size:10px"
+ id="path3254" />
+ <path
+ d="m 404.61636,351.41022 0,0.84961 c -0.25391,-0.13021 -0.51758,-0.22786 -0.79101,-0.29297 -0.27344,-0.0651 -0.55665,-0.0976 -0.84961,-0.0977 -0.44597,1e-5 -0.78125,0.0684 -1.00586,0.20508 -0.22136,0.13672 -0.33203,0.3418 -0.33203,0.61523 0,0.20834 0.0797,0.37273 0.23926,0.49317 0.1595,0.11719 0.48014,0.22949 0.96191,0.33691 l 0.30762,0.0684 c 0.63801,0.13672 1.09049,0.33041 1.35742,0.58106 0.27018,0.24739 0.40527,0.59407 0.40527,1.04004 0,0.50781 -0.20183,0.90983 -0.60547,1.20605 -0.40039,0.29622 -0.95215,0.44434 -1.65527,0.44434 -0.29297,0 -0.59896,-0.0293 -0.91797,-0.0879 -0.31576,-0.0553 -0.64941,-0.13998 -1.00098,-0.25391 l 0,-0.92774 c 0.33204,0.17253 0.65918,0.30274 0.98145,0.39063 0.32226,0.0846 0.64127,0.12695 0.95703,0.12695 0.42318,0 0.7487,-0.0716 0.97656,-0.21484 0.22786,-0.14648 0.3418,-0.35156 0.3418,-0.61524 0,-0.24413 -0.083,-0.43131 -0.24902,-0.56152 -0.16277,-0.1302 -0.52247,-0.25553 -1.0791,-0.37598 l -0.3125,-0.0732 c -0.55665,-0.11718 -0.95866,-0.29622 -1.20606,-0.53711 -0.2474,-0.24413 -0.37109,-0.57779 -0.37109,-1.00097 0,-0.51432 0.18229,-0.91146 0.54687,-1.19141 0.36458,-0.27994 0.88216,-0.41992 1.55274,-0.41992 0.33202,0 0.64452,0.0244 0.9375,0.0732 0.29296,0.0488 0.56314,0.12208 0.81054,0.21973"
+ style="font-size:10px"
+ id="path3256" />
+ <path
+ d="m 410.28043,351.45905 0,0.83984 c -0.25391,-0.13997 -0.50945,-0.24414 -0.76661,-0.3125 -0.25391,-0.0716 -0.51107,-0.10742 -0.77148,-0.10742 -0.58268,0 -1.03516,0.18555 -1.35742,0.55664 -0.32227,0.36784 -0.4834,0.88542 -0.4834,1.55273 0,0.66732 0.16113,1.18653 0.4834,1.55762 0.32226,0.36784 0.77474,0.55176 1.35742,0.55176 0.26041,0 0.51757,-0.0342 0.77148,-0.10254 0.25716,-0.0716 0.5127,-0.17741 0.76661,-0.31738 l 0,0.83007 c -0.25066,0.11719 -0.51108,0.20508 -0.78125,0.26368 -0.26693,0.0586 -0.55177,0.0879 -0.8545,0.0879 -0.82357,0 -1.47786,-0.25879 -1.96289,-0.77637 -0.48502,-0.51758 -0.72754,-1.21582 -0.72754,-2.09473 0,-0.89192 0.24414,-1.59342 0.73243,-2.10449 0.49153,-0.51106 1.16373,-0.7666 2.0166,-0.7666 0.27669,0 0.54687,0.0293 0.81054,0.0879 0.26367,0.0553 0.51921,0.13998 0.76661,0.25391"
+ style="font-size:10px"
+ id="path3258" />
+ <path
+ d="m 415.02164,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33203,-0.12695 -0.1172,-0.0293 -0.2474,-0.0439 -0.39063,-0.0439 -0.50781,0 -0.89844,0.16602 -1.17187,0.49805 -0.27019,0.32878 -0.40528,0.80241 -0.40528,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3260" />
+ <path
+ d="m 420.43668,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.2246,1.0905 0.55664,1.41602 0.33528,0.32227 0.80078,0.4834 1.39648,0.4834 0.34505,0 0.67871,-0.0423 1.00098,-0.12696 0.32551,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32228,0.13672 -0.65268,0.24089 -0.99122,0.3125 -0.33854,0.0716 -0.68197,0.10743 -1.03027,0.10743 -0.8724,0 -1.56413,-0.25391 -2.07519,-0.76172 -0.50782,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24088,-1.60481 0.72265,-2.12891 0.48503,-0.52733 1.1377,-0.79101 1.95801,-0.79101 0.73567,0 1.31673,0.23763 1.74316,0.71289 0.42969,0.47201 0.64453,1.11491 0.64454,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.50131,0 -0.90333,0.1416 -1.20606,0.4248 -0.29948,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20313,-0.005"
+ style="font-size:10px"
+ id="path3262" />
+ <path
+ d="m 426.58902,353.75885 0,0.43945 -4.13086,0 c 0.0391,0.61849 0.22461,1.0905 0.55664,1.41602 0.33529,0.32227 0.80078,0.4834 1.39649,0.4834 0.34504,0 0.6787,-0.0423 1.00097,-0.12696 0.32552,-0.0846 0.64778,-0.21158 0.9668,-0.38086 l 0,0.84961 c -0.32227,0.13672 -0.65268,0.24089 -0.99121,0.3125 -0.33855,0.0716 -0.68197,0.10743 -1.03028,0.10743 -0.87239,0 -1.56412,-0.25391 -2.07519,-0.76172 -0.50781,-0.50781 -0.76172,-1.19466 -0.76172,-2.06055 0,-0.89518 0.24089,-1.60481 0.72266,-2.12891 0.48502,-0.52733 1.13769,-0.79101 1.958,-0.79101 0.73568,0 1.31673,0.23763 1.74317,0.71289 0.42968,0.47201 0.64452,1.11491 0.64453,1.92871 m -0.89844,-0.26367 c -0.007,-0.49153 -0.14486,-0.88379 -0.41504,-1.17676 -0.26693,-0.29296 -0.62175,-0.43945 -1.06445,-0.43945 -0.5013,0 -0.90332,0.1416 -1.20605,0.4248 -0.29949,0.28321 -0.47201,0.68197 -0.51758,1.19629 l 3.20312,-0.005"
+ style="font-size:10px"
+ id="path3264" />
+ <path
+ d="m 432.60953,353.41705 0,3.30078 -0.89844,0 0,-3.27148 c 0,-0.51757 -0.10092,-0.90494 -0.30273,-1.16211 -0.20183,-0.25716 -0.50457,-0.38574 -0.90821,-0.38574 -0.48503,0 -0.86751,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41992,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75684,-0.7373 0.29296,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62825,0 1.10351,0.19532 1.42578,0.58594 0.32226,0.38737 0.48339,0.95866 0.4834,1.71386"
+ style="font-size:10px"
+ id="path3266" />
+ <path
+ d="m 439.71402,351.87897 c -0.48177,0 -0.86263,0.1888 -1.14258,0.5664 -0.27995,0.37436 -0.41992,0.88868 -0.41992,1.54297 0,0.6543 0.13834,1.17025 0.41504,1.54785 0.27994,0.37435 0.66243,0.56153 1.14746,0.56153 0.47851,0 0.85774,-0.1888 1.1377,-0.56641 0.27994,-0.3776 0.41991,-0.89192 0.41992,-1.54297 -10e-6,-0.64778 -0.13998,-1.16048 -0.41992,-1.53808 -0.27996,-0.38086 -0.65919,-0.57129 -1.1377,-0.57129 m 0,-0.76172 c 0.78125,0 1.39485,0.25391 1.84082,0.76172 0.44596,0.50781 0.66894,1.21094 0.66895,2.10937 -1e-5,0.89519 -0.22299,1.59831 -0.66895,2.10938 -0.44597,0.50781 -1.05957,0.76172 -1.84082,0.76172 -0.78451,0 -1.39974,-0.25391 -1.8457,-0.76172 -0.44271,-0.51107 -0.66407,-1.21419 -0.66407,-2.10938 0,-0.89843 0.22136,-1.60156 0.66407,-2.10937 0.44596,-0.50781 1.06119,-0.76172 1.8457,-0.76172"
+ style="font-size:10px"
+ id="path3268" />
+ <path
+ d="m 446.87711,352.08893 c -0.10092,-0.0586 -0.2116,-0.10091 -0.33204,-0.12695 -0.11719,-0.0293 -0.24739,-0.0439 -0.39062,-0.0439 -0.50782,0 -0.89844,0.16602 -1.17188,0.49805 -0.27018,0.32878 -0.40527,0.80241 -0.40527,1.4209 l 0,2.88085 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.1888,-0.33202 0.43457,-0.57779 0.73731,-0.7373 0.30273,-0.16276 0.67057,-0.24414 1.10351,-0.24414 0.0618,0 0.13021,0.005 0.20508,0.0146 0.0749,0.007 0.15787,0.0179 0.24902,0.0342 l 0.005,0.92285"
+ style="font-size:10px"
+ id="path3270" />
+ <path
+ d="m 447.82925,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3272" />
+ <path
+ d="m 454.20132,353.91998 c 0,-0.65104 -0.13509,-1.15559 -0.40527,-1.51367 -0.26693,-0.35807 -0.64291,-0.5371 -1.12793,-0.53711 -0.48177,1e-5 -0.85775,0.17904 -1.12793,0.53711 -0.26693,0.35808 -0.40039,0.86263 -0.40039,1.51367 0,0.64779 0.13346,1.15072 0.40039,1.50879 0.27018,0.35808 0.64616,0.53711 1.12793,0.53711 0.48502,0 0.861,-0.17903 1.12793,-0.53711 0.27018,-0.35807 0.40527,-0.861 0.40527,-1.50879 m 0.89844,2.11914 c 0,0.93099 -0.20671,1.62272 -0.62012,2.0752 -0.41341,0.45573 -1.04655,0.68359 -1.89941,0.68359 -0.31576,0 -0.61361,-0.0244 -0.89355,-0.0732 -0.27995,-0.0456 -0.55176,-0.11719 -0.81543,-0.21484 l 0,-0.87403 c 0.26367,0.14323 0.52408,0.24903 0.78125,0.31739 0.25716,0.0684 0.5192,0.10253 0.78613,0.10254 0.58919,-10e-6 1.03027,-0.15463 1.32324,-0.46387 0.29297,-0.30599 0.43945,-0.76986 0.43945,-1.3916 l 0,-0.44434 c -0.18555,0.32227 -0.42318,0.56315 -0.71289,0.72266 -0.28971,0.1595 -0.63639,0.23925 -1.04004,0.23925 -0.67057,0 -1.21093,-0.25553 -1.62109,-0.7666 -0.41016,-0.51106 -0.61523,-1.18815 -0.61523,-2.03125 0,-0.84635 0.20507,-1.52506 0.61523,-2.03613 0.41016,-0.51106 0.95052,-0.7666 1.62109,-0.7666 0.40365,0 0.75033,0.0798 1.04004,0.23926 0.28971,0.15951 0.52734,0.40039 0.71289,0.72265 l 0,-0.83008 0.89844,0 0,4.79004"
+ style="font-size:10px"
+ id="path3274" />
+ <path
+ d="m 456.95035,351.24908 0.89844,0 0,5.46875 -0.89844,0 0,-5.46875 m 0,-2.1289 0.89844,0 0,1.13769 -0.89844,0 0,-1.13769"
+ style="font-size:10px"
+ id="path3276" />
+ <path
+ d="m 464.26968,353.41705 0,3.30078 -0.89843,0 0,-3.27148 c -10e-6,-0.51757 -0.10092,-0.90494 -0.30274,-1.16211 -0.20183,-0.25716 -0.50456,-0.38574 -0.9082,-0.38574 -0.48503,0 -0.86752,0.15463 -1.14746,0.46387 -0.27995,0.30924 -0.41993,0.73079 -0.41992,1.26464 l 0,3.09082 -0.90332,0 0,-5.46875 0.90332,0 0,0.84961 c 0.21484,-0.32877 0.46712,-0.57454 0.75683,-0.7373 0.29297,-0.16276 0.62988,-0.24414 1.01074,-0.24414 0.62826,0 1.10352,0.19532 1.42579,0.58594 0.32226,0.38737 0.48339,0.95866 0.48339,1.71386"
+ style="font-size:10px"
+ id="path3278" />
+ </g>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 343.73692,26.224389 0.01,294.941191"
+ id="path3861"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc"
+ transform="translate(12.627039,339.86462)" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4307"
+ d="m 356.48533,366.00457 336.31202,-0.0196"
+ style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none" />
+ <path
+ sodipodi:nodetypes="cc"
+ inkscape:connector-curvature="0"
+ id="path4309"
+ d="m 159.89916,447.6257 -0.0625,145.00422"
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 160.03997,448.23877 184.95568,-0.0159"
+ id="path4493"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <g
+ style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text4495">
+ <path
+ d="m 228.57881,442.02737 0.49805,0 0.7666,3.08106 0.76416,-3.08106 0.5542,0 0.7666,3.08106 0.76416,-3.08106 0.50049,0 -0.91553,3.64502 -0.62012,0 -0.76904,-3.16406 -0.77637,3.16406 -0.62011,0 -0.91309,-3.64502"
+ style="font-size:5px"
+ id="path3141" />
+ <path
+ d="m 233.71797,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
+ style="font-size:5px"
+ id="path3143" />
+ <path
+ d="m 237.37764,444.022 0,1.65039 -0.44922,0 0,-1.63574 c 0,-0.25879 -0.0505,-0.45247 -0.15137,-0.58105 -0.10091,-0.12858 -0.25228,-0.19287 -0.4541,-0.19287 -0.24251,0 -0.43376,0.0773 -0.57373,0.23193 -0.13997,0.15462 -0.20996,0.3654 -0.20996,0.63232 l 0,1.54541 -0.45166,0 0,-2.73437 0.45166,0 0,0.4248 c 0.10742,-0.16438 0.23356,-0.28727 0.37842,-0.36865 0.14648,-0.0814 0.31494,-0.12207 0.50537,-0.12207 0.31413,0 0.55176,0.0977 0.71289,0.29297 0.16113,0.19369 0.2417,0.47933 0.2417,0.85693"
+ style="font-size:5px"
+ id="path3145" />
+ <path
+ d="m 240.07784,443.35306 0,-1.47949 0.44921,0 0,3.79882 -0.44921,0 0,-0.41015 c -0.0944,0.16276 -0.21404,0.28401 -0.35889,0.36377 -0.14323,0.0781 -0.31576,0.11718 -0.51758,0.11718 -0.3304,0 -0.59977,-0.13183 -0.80811,-0.3955 -0.2067,-0.26367 -0.31005,-0.61035 -0.31005,-1.04004 0,-0.42969 0.10335,-0.77637 0.31005,-1.04004 0.20834,-0.26367 0.47771,-0.39551 0.80811,-0.39551 0.20182,0 0.37435,0.0399 0.51758,0.11963 0.14485,0.0781 0.26448,0.19857 0.35889,0.36133 m -1.53077,0.95459 c 0,0.3304 0.0676,0.59 0.20264,0.77881 0.13672,0.18717 0.32389,0.28076 0.56152,0.28076 0.23763,0 0.42481,-0.0936 0.56153,-0.28076 0.13671,-0.18881 0.20507,-0.44841 0.20508,-0.77881 -1e-5,-0.3304 -0.0684,-0.58919 -0.20508,-0.77637 -0.13672,-0.1888 -0.3239,-0.2832 -0.56153,-0.2832 -0.23763,0 -0.4248,0.0944 -0.56152,0.2832 -0.13509,0.18718 -0.20264,0.44597 -0.20264,0.77637"
+ style="font-size:5px"
+ id="path3147" />
+ <path
+ d="m 242.51192,443.25296 c -0.24089,0 -0.43132,0.0944 -0.57129,0.2832 -0.13998,0.18718 -0.20996,0.44434 -0.20996,0.77149 0,0.32715 0.0692,0.58512 0.20752,0.77392 0.13997,0.18718 0.33121,0.28077 0.57373,0.28077 0.23925,0 0.42887,-0.0944 0.56884,-0.28321 0.13998,-0.1888 0.20996,-0.44596 0.20997,-0.77148 -1e-5,-0.32389 -0.07,-0.58024 -0.20997,-0.76905 -0.13997,-0.19042 -0.32959,-0.28564 -0.56884,-0.28564 m 0,-0.38086 c 0.39062,0 0.69742,0.12696 0.92041,0.38086 0.22298,0.25391 0.33447,0.60547 0.33447,1.05469 0,0.44759 -0.11149,0.79915 -0.33447,1.05469 -0.22299,0.2539 -0.52979,0.38085 -0.92041,0.38085 -0.39226,0 -0.69987,-0.12695 -0.92285,-0.38085 -0.22136,-0.25554 -0.33204,-0.6071 -0.33204,-1.05469 0,-0.44922 0.11068,-0.80078 0.33204,-1.05469 0.22298,-0.2539 0.53059,-0.38086 0.92285,-0.38086"
+ style="font-size:5px"
+ id="path3149" />
+ <path
+ d="m 244.24776,442.93802 0.44922,0 0.56152,2.13379 0.55908,-2.13379 0.52979,0 0.56152,2.13379 0.55908,-2.13379 0.44922,0 -0.71533,2.73437 -0.52979,0 -0.58838,-2.24121 -0.59082,2.24121 -0.52978,0 -0.71533,-2.73437"
+ style="font-size:5px"
+ id="path3151" />
+ <path
+ d="m 249.70674,442.02737 3.0835,0 0,0.41504 -1.29395,0 0,3.22998 -0.4956,0 0,-3.22998 -1.29395,0 0,-0.41504"
+ style="font-size:5px"
+ id="path3153" />
+ <path
+ d="m 253.09297,442.93802 0.44922,0 0,2.73437 -0.44922,0 0,-2.73437 m 0,-1.06445 0.44922,0 0,0.56884 -0.44922,0 0,-0.56884"
+ style="font-size:5px"
+ id="path3155" />
+ <path
+ d="m 254.92403,442.16165 0,0.77637 0.92529,0 0,0.34912 -0.92529,0 0,1.48437 c 0,0.22299 0.0301,0.36622 0.0903,0.42969 0.0618,0.0635 0.18636,0.0952 0.37353,0.0952 l 0.46143,0 0,0.37597 -0.46143,0 c -0.34668,0 -0.58593,-0.0643 -0.71777,-0.19287 -0.13184,-0.13021 -0.19775,-0.36621 -0.19775,-0.70801 l 0,-1.48437 -0.32959,0 0,-0.34912 0.32959,0 0,-0.77637 0.45166,0"
+ style="font-size:5px"
+ id="path3157" />
+ <path
+ d="m 256.44258,441.87357 0.44922,0 0,3.79882 -0.44922,0 0,-3.79882"
+ style="font-size:5px"
+ id="path3159" />
+ <path
+ d="m 260.16817,444.1929 0,0.21973 -2.06543,0 c 0.0195,0.30924 0.1123,0.54525 0.27832,0.70801 0.16764,0.16113 0.40039,0.2417 0.69824,0.2417 0.17252,0 0.33935,-0.0212 0.50049,-0.0635 0.16276,-0.0423 0.32389,-0.1058 0.4834,-0.19043 l 0,0.4248 c -0.16114,0.0684 -0.32634,0.12045 -0.49561,0.15625 -0.16927,0.0358 -0.34098,0.0537 -0.51514,0.0537 -0.43619,0 -0.78206,-0.12695 -1.03759,-0.38085 -0.25391,-0.25391 -0.38086,-0.59733 -0.38086,-1.03028 0,-0.44759 0.12044,-0.8024 0.36133,-1.06445 0.24251,-0.26367 0.56884,-0.39551 0.979,-0.39551 0.36784,0 0.65836,0.11882 0.87158,0.35645 0.21484,0.236 0.32226,0.55745 0.32227,0.96435 m -0.44922,-0.13183 c -0.003,-0.24577 -0.0724,-0.4419 -0.20752,-0.58838 -0.13347,-0.14649 -0.31088,-0.21973 -0.53223,-0.21973 -0.25065,0 -0.45166,0.0708 -0.60303,0.2124 -0.14974,0.14161 -0.236,0.34099 -0.25878,0.59815 l 1.60156,-0.002"
+ style="font-size:5px"
+ id="path3161" />
+ </g>
+ <g
+ aria-label="Content area origin"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ id="text4089">
+ <path
+ d="m 172.21587,456.09125 v 1.04004 q -0.49805,-0.46387 -1.06446,-0.69336 -0.56152,-0.22949 -1.19629,-0.22949 -1.25,0 -1.91406,0.7666 -0.66406,0.76172 -0.66406,2.20703 0,1.44043 0.66406,2.20703 0.66406,0.76172 1.91406,0.76172 0.63477,0 1.19629,-0.22949 0.56641,-0.2295 1.06446,-0.69336 v 1.03027 q -0.51758,0.35156 -1.09864,0.52734 -0.57617,0.17578 -1.2207,0.17578 -1.65527,0 -2.60742,-1.01074 -0.95215,-1.01562 -0.95215,-2.76855 0,-1.75781 0.95215,-2.76856 0.95215,-1.01562 2.60742,-1.01562 0.6543,0 1.23047,0.17578 0.58105,0.1709 1.08887,0.51758 z"
+ style="font-size:10px"
+ id="path4091" />
+ <path
+ d="m 175.82915,457.9809 q -0.72266,0 -1.14258,0.5664 -0.41992,0.56153 -0.41992,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71777,0 1.13769,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.13769,-0.57129 z m 0,-0.76172 q 1.17187,0 1.84082,0.76172 0.66894,0.76171 0.66894,2.10937 0,1.34277 -0.66894,2.10938 -0.66895,0.76171 -1.84082,0.76171 -1.17676,0 -1.84571,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.84571,-0.76172 z"
+ style="font-size:10px"
+ id="path4093" />
+ <path
+ d="m 184.36919,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30274,-1.16211 -0.30273,-0.38574 -0.9082,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32226,-0.49316 0.75683,-0.7373 0.43946,-0.24414 1.01075,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4095" />
+ <path
+ d="m 187.05962,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
+ style="font-size:10px"
+ id="path4097" />
+ <path
+ d="m 194.77446,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39649,0.4834 0.51757,0 1.00097,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50781,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72266,-2.12891 0.72754,-0.79101 1.958,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75195,0 -1.20605,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
+ style="font-size:10px"
+ id="path4099" />
+ <path
+ d="m 200.79497,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4101" />
+ <path
+ d="m 203.4854,455.79828 v 1.55273 h 1.85058 v 0.69825 h -1.85058 v 2.96875 q 0,0.66894 0.18066,0.85937 0.18555,0.19043 0.74707,0.19043 h 0.92285 v 0.75195 h -0.92285 q -1.04004,0 -1.43555,-0.38574 -0.3955,-0.39062 -0.3955,-1.41601 v -2.96875 h -0.65918 v -0.69825 h 0.65918 v -1.55273 z"
+ style="font-size:10px"
+ id="path4103" />
+ <path
+ d="m 212.19145,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85938,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89843 v -0.83007 q -0.30762,0.49804 -0.7666,0.7373 -0.45899,0.23437 -1.12305,0.23437 -0.83985,0 -1.33789,-0.46875 -0.49317,-0.47363 -0.49317,-1.26464 0,-0.92286 0.61524,-1.39161 0.62012,-0.46875 1.8457,-0.46875 h 1.25977 v -0.0879 q 0,-0.62011 -0.41016,-0.95703 -0.40527,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91308,0.1123 -0.44434,0.11231 -0.8545,0.33691 v -0.83007 q 0.49317,-0.19043 0.95704,-0.28321 0.46386,-0.0976 0.90332,-0.0976 1.18652,0 1.77246,0.61523 0.58593,0.61524 0.58593,1.86524 z"
+ style="font-size:10px"
+ id="path4105" />
+ <path
+ d="m 219.00786,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10351,-0.24414 0.0928,0 0.20508,0.0147 0.11231,0.01 0.24903,0.0342 z"
+ style="font-size:10px"
+ id="path4107" />
+ <path
+ d="m 224.4229,459.86078 v 0.43945 h -4.13086 q 0.0586,0.92774 0.55664,1.41602 0.50293,0.4834 1.39648,0.4834 0.51758,0 1.00098,-0.12696 0.48828,-0.12695 0.9668,-0.38086 v 0.84961 q -0.4834,0.20508 -0.99121,0.3125 -0.50782,0.10742 -1.03028,0.10742 -1.30859,0 -2.07519,-0.76171 -0.76172,-0.76172 -0.76172,-2.06055 0,-1.34277 0.72265,-2.12891 0.72754,-0.79101 1.95801,-0.79101 1.10352,0 1.74317,0.71289 0.64453,0.70801 0.64453,1.92871 z m -0.89844,-0.26367 q -0.01,-0.73731 -0.41504,-1.17676 -0.40039,-0.43945 -1.06445,-0.43945 -0.75196,0 -1.20606,0.4248 -0.44922,0.42481 -0.51758,1.19629 z"
+ style="font-size:10px"
+ id="path4109" />
+ <path
+ d="m 228.38286,460.07074 q -1.08887,0 -1.50879,0.24902 -0.41992,0.24903 -0.41992,0.84961 0,0.47852 0.3125,0.76172 0.31738,0.27832 0.85937,0.27832 0.74707,0 1.19629,-0.52734 0.4541,-0.53223 0.4541,-1.41113 v -0.2002 z m 1.79199,-0.37109 v 3.12011 h -0.89844 v -0.83007 q -0.30761,0.49804 -0.7666,0.7373 -0.45898,0.23437 -1.12305,0.23437 -0.83984,0 -1.33789,-0.46875 -0.49316,-0.47363 -0.49316,-1.26464 0,-0.92286 0.61523,-1.39161 0.62012,-0.46875 1.84571,-0.46875 h 1.25976 v -0.0879 q 0,-0.62011 -0.41015,-0.95703 -0.40528,-0.34179 -1.14258,-0.34179 -0.46875,0 -0.91309,0.1123 -0.44433,0.11231 -0.85449,0.33691 v -0.83007 q 0.49316,-0.19043 0.95703,-0.28321 0.46387,-0.0976 0.90332,-0.0976 1.18653,0 1.77246,0.61523 0.58594,0.61524 0.58594,1.86524 z"
+ style="font-size:10px"
+ id="path4111" />
+ <path
+ d="m 237.33305,457.9809 q -0.72265,0 -1.14257,0.5664 -0.41993,0.56153 -0.41993,1.54297 0,0.98145 0.41504,1.54785 0.41992,0.56153 1.14746,0.56153 0.71778,0 1.1377,-0.56641 0.41992,-0.56641 0.41992,-1.54297 0,-0.97168 -0.41992,-1.53808 -0.41992,-0.57129 -1.1377,-0.57129 z m 0,-0.76172 q 1.17188,0 1.84082,0.76172 0.66895,0.76171 0.66895,2.10937 0,1.34277 -0.66895,2.10938 -0.66894,0.76171 -1.84082,0.76171 -1.17675,0 -1.8457,-0.76171 -0.66406,-0.76661 -0.66406,-2.10938 0,-1.34766 0.66406,-2.10937 0.66895,-0.76172 1.8457,-0.76172 z"
+ style="font-size:10px"
+ id="path4113" />
+ <path
+ d="m 244.49614,458.19086 q -0.15137,-0.0879 -0.33203,-0.12696 -0.17578,-0.0439 -0.39063,-0.0439 -0.76172,0 -1.17187,0.49805 -0.40528,0.49316 -0.40528,1.42089 v 2.88086 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.28321,-0.49804 0.73731,-0.7373 0.4541,-0.24414 1.10352,-0.24414 0.0928,0 0.20507,0.0147 0.11231,0.01 0.24903,0.0342 z"
+ style="font-size:10px"
+ id="path4115" />
+ <path
+ d="m 245.44829,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
+ style="font-size:10px"
+ id="path4117" />
+ <path
+ d="m 251.82036,460.02191 q 0,-0.97656 -0.40528,-1.51367 -0.40039,-0.53711 -1.12792,-0.53711 -0.72266,0 -1.12793,0.53711 -0.4004,0.53711 -0.4004,1.51367 0,0.97168 0.4004,1.50879 0.40527,0.53711 1.12793,0.53711 0.72753,0 1.12792,-0.53711 0.40528,-0.53711 0.40528,-1.50879 z m 0.89844,2.11914 q 0,1.39649 -0.62012,2.0752 -0.62012,0.68359 -1.89942,0.68359 -0.47363,0 -0.89355,-0.0732 -0.41992,-0.0684 -0.81543,-0.21484 v -0.87403 q 0.39551,0.21485 0.78125,0.31738 0.38574,0.10254 0.78613,0.10254 0.88379,0 1.32325,-0.46386 0.43945,-0.45899 0.43945,-1.3916 v -0.44434 q -0.27832,0.4834 -0.71289,0.72266 -0.43457,0.23925 -1.04004,0.23925 -1.00586,0 -1.6211,-0.7666 -0.61523,-0.7666 -0.61523,-2.03125 0,-1.26953 0.61523,-2.03613 0.61524,-0.7666 1.6211,-0.7666 0.60547,0 1.04004,0.23926 0.43457,0.23925 0.71289,0.72265 v -0.83008 h 0.89844 z"
+ style="font-size:10px"
+ id="path4119" />
+ <path
+ d="m 254.56938,457.35101 h 0.89844 v 5.46875 h -0.89844 z m 0,-2.1289 h 0.89844 v 1.13769 h -0.89844 z"
+ style="font-size:10px"
+ id="path4121" />
+ <path
+ d="m 261.88872,459.51898 v 3.30078 h -0.89844 v -3.27148 q 0,-0.77637 -0.30273,-1.16211 -0.30274,-0.38574 -0.90821,-0.38574 -0.72754,0 -1.14746,0.46386 -0.41992,0.46387 -0.41992,1.26465 v 3.09082 h -0.90332 v -5.46875 h 0.90332 v 0.84961 q 0.32227,-0.49316 0.75684,-0.7373 0.43945,-0.24414 1.01074,-0.24414 0.94238,0 1.42578,0.58593 0.4834,0.58106 0.4834,1.71387 z"
+ style="font-size:10px"
+ id="path4123" />
+ </g>
+ </g>
+</svg>
diff --git a/libs/glfw-3.3.8/docs/vulkan.dox b/libs/glfw-3.3.8/docs/vulkan.dox
new file mode 100644
index 0000000..f34366f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/vulkan.dox
@@ -0,0 +1,242 @@
+/*!
+
+@page vulkan_guide Vulkan guide
+
+@tableofcontents
+
+This guide is intended to fill the gaps between the official [Vulkan
+resources](https://www.khronos.org/vulkan/) and the rest of the GLFW
+documentation and is not a replacement for either. It assumes some familiarity
+with Vulkan concepts like loaders, devices, queues and surfaces and leaves it to
+the Vulkan documentation to explain the details of Vulkan functions.
+
+To develop for Vulkan you should download the [LunarG Vulkan
+SDK](https://vulkan.lunarg.com/) for your platform. Apart from headers and link
+libraries, they also provide the validation layers necessary for development.
+
+The [Vulkan Tutorial](https://vulkan-tutorial.com/) has more information on how
+to use GLFW and Vulkan. The [Khronos Vulkan
+Samples](https://github.com/KhronosGroup/Vulkan-Samples) also use GLFW, although
+with a small framework in between.
+
+For details on a specific Vulkan support function, see the @ref vulkan. There
+are also guides for the other areas of the GLFW API.
+
+ - @ref intro_guide
+ - @ref window_guide
+ - @ref context_guide
+ - @ref monitor_guide
+ - @ref input_guide
+
+
+@section vulkan_loader Linking against the Vulkan loader
+
+By default, GLFW will look for the Vulkan loader on demand at runtime via its
+standard name (`vulkan-1.dll` on Windows, `libvulkan.so.1` on Linux and other
+Unix-like systems and `libvulkan.1.dylib` on macOS). This means that GLFW does
+not need to be linked against the loader. However, it also means that if you
+are using the static library form of the Vulkan loader GLFW will either fail to
+find it or (worse) use the wrong one.
+
+The @ref GLFW_VULKAN_STATIC CMake option makes GLFW call the Vulkan loader
+directly instead of dynamically loading it at runtime. Not linking against the
+Vulkan loader will then be a compile-time error.
+
+@macos To make your application be redistributable you will need to set up the
+application bundle according to the LunarG SDK documentation. This is explained
+in more detail in the
+[SDK documentation for macOS](https://vulkan.lunarg.com/doc/sdk/latest/mac/getting_started.html).
+
+
+@section vulkan_include Including the Vulkan and GLFW header files
+
+To include the Vulkan header, define @ref GLFW_INCLUDE_VULKAN before including
+the GLFW header.
+
+@code
+#define GLFW_INCLUDE_VULKAN
+#include <GLFW/glfw3.h>
+@endcode
+
+If you instead want to include the Vulkan header from a custom location or use
+your own custom Vulkan header then do this before the GLFW header.
+
+@code
+#include <path/to/vulkan.h>
+#include <GLFW/glfw3.h>
+@endcode
+
+Unless a Vulkan header is included, either by the GLFW header or above it, any
+GLFW functions that take or return Vulkan types will not be declared.
+
+The `VK_USE_PLATFORM_*_KHR` macros do not need to be defined for the Vulkan part
+of GLFW to work. Define them only if you are using these extensions directly.
+
+
+@section vulkan_support Querying for Vulkan support
+
+If you are linking directly against the Vulkan loader then you can skip this
+section. The canonical desktop loader library exports all Vulkan core and
+Khronos extension functions, allowing them to be called directly.
+
+If you are loading the Vulkan loader dynamically instead of linking directly
+against it, you can check for the availability of a loader and ICD with @ref
+glfwVulkanSupported.
+
+@code
+if (glfwVulkanSupported())
+{
+ // Vulkan is available, at least for compute
+}
+@endcode
+
+This function returns `GLFW_TRUE` if the Vulkan loader and any minimally
+functional ICD was found.
+
+If one or both were not found, calling any other Vulkan related GLFW function
+will generate a @ref GLFW_API_UNAVAILABLE error.
+
+
+@subsection vulkan_proc Querying Vulkan function pointers
+
+To load any Vulkan core or extension function from the found loader, call @ref
+glfwGetInstanceProcAddress. To load functions needed for instance creation,
+pass `NULL` as the instance.
+
+@code
+PFN_vkCreateInstance pfnCreateInstance = (PFN_vkCreateInstance)
+ glfwGetInstanceProcAddress(NULL, "vkCreateInstance");
+@endcode
+
+Once you have created an instance, you can load from it all other Vulkan core
+functions and functions from any instance extensions you enabled.
+
+@code
+PFN_vkCreateDevice pfnCreateDevice = (PFN_vkCreateDevice)
+ glfwGetInstanceProcAddress(instance, "vkCreateDevice");
+@endcode
+
+This function in turn calls `vkGetInstanceProcAddr`. If that fails, the
+function falls back to a platform-specific query of the Vulkan loader (i.e.
+`dlsym` or `GetProcAddress`). If that also fails, the function returns `NULL`.
+For more information about `vkGetInstanceProcAddr`, see the Vulkan
+documentation.
+
+Vulkan also provides `vkGetDeviceProcAddr` for loading device-specific versions
+of Vulkan function. This function can be retrieved from an instance with @ref
+glfwGetInstanceProcAddress.
+
+@code
+PFN_vkGetDeviceProcAddr pfnGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)
+ glfwGetInstanceProcAddress(instance, "vkGetDeviceProcAddr");
+@endcode
+
+Device-specific functions may execute a little bit faster, due to not having to
+dispatch internally based on the device passed to them. For more information
+about `vkGetDeviceProcAddr`, see the Vulkan documentation.
+
+
+@section vulkan_ext Querying required Vulkan extensions
+
+To do anything useful with Vulkan you need to create an instance. If you want
+to use Vulkan to render to a window, you must enable the instance extensions
+GLFW requires to create Vulkan surfaces.
+
+To query the instance extensions required, call @ref
+glfwGetRequiredInstanceExtensions.
+
+@code
+uint32_t count;
+const char** extensions = glfwGetRequiredInstanceExtensions(&count);
+@endcode
+
+These extensions must all be enabled when creating instances that are going to
+be passed to @ref glfwGetPhysicalDevicePresentationSupport and @ref
+glfwCreateWindowSurface. The set of extensions will vary depending on platform
+and may also vary depending on graphics drivers and other factors.
+
+If it fails it will return `NULL` and GLFW will not be able to create Vulkan
+window surfaces. You can still use Vulkan for off-screen rendering and compute
+work.
+
+If successful the returned array will always include `VK_KHR_surface`, so if
+you don't require any additional extensions you can pass this list directly to
+the `VkInstanceCreateInfo` struct.
+
+@code
+VkInstanceCreateInfo ici;
+
+memset(&ici, 0, sizeof(ici));
+ici.enabledExtensionCount = count;
+ici.ppEnabledExtensionNames = extensions;
+...
+@endcode
+
+Additional extensions may be required by future versions of GLFW. You should
+check whether any extensions you wish to enable are already in the returned
+array, as it is an error to specify an extension more than once in the
+`VkInstanceCreateInfo` struct.
+
+@macos MoltenVK is (as of July 2022) not yet a fully conformant implementation
+of Vulkan. As of Vulkan SDK 1.3.216.0, this means you must also enable the
+`VK_KHR_portability_enumeration` instance extension and set the
+`VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR` bit in the instance creation
+info flags for MoltenVK to show up in the list of physical devices. For more
+information, see the Vulkan and MoltenVK documentation.
+
+
+@section vulkan_present Querying for Vulkan presentation support
+
+Not every queue family of every Vulkan device can present images to surfaces.
+To check whether a specific queue family of a physical device supports image
+presentation without first having to create a window and surface, call @ref
+glfwGetPhysicalDevicePresentationSupport.
+
+@code
+if (glfwGetPhysicalDevicePresentationSupport(instance, physical_device, queue_family_index))
+{
+ // Queue family supports image presentation
+}
+@endcode
+
+The `VK_KHR_surface` extension additionally provides the
+`vkGetPhysicalDeviceSurfaceSupportKHR` function, which performs the same test on
+an existing Vulkan surface.
+
+
+@section vulkan_window Creating the window
+
+Unless you will be using OpenGL or OpenGL ES with the same window as Vulkan,
+there is no need to create a context. You can disable context creation with the
+[GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint) hint.
+
+@code
+glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
+GLFWwindow* window = glfwCreateWindow(640, 480, "Window Title", NULL, NULL);
+@endcode
+
+See @ref context_less for more information.
+
+
+@section vulkan_surface Creating a Vulkan window surface
+
+You can create a Vulkan surface (as defined by the `VK_KHR_surface` extension)
+for a GLFW window with @ref glfwCreateWindowSurface.
+
+@code
+VkSurfaceKHR surface;
+VkResult err = glfwCreateWindowSurface(instance, window, NULL, &surface);
+if (err)
+{
+ // Window surface creation failed
+}
+@endcode
+
+If an OpenGL or OpenGL ES context was created on the window, the context has
+ownership of the presentation on the window and a Vulkan surface cannot be
+created.
+
+It is your responsibility to destroy the surface. GLFW does not destroy it for
+you. Call `vkDestroySurfaceKHR` function from the same extension to destroy it.
+
+*/
diff --git a/libs/glfw-3.3.8/docs/window.dox b/libs/glfw-3.3.8/docs/window.dox
new file mode 100644
index 0000000..2fcf11f
--- /dev/null
+++ b/libs/glfw-3.3.8/docs/window.dox
@@ -0,0 +1,1412 @@
+/*!
+
+@page window_guide Window guide
+
+@tableofcontents
+
+This guide introduces the window related functions of GLFW. For details on
+a specific function in this category, see the @ref window. There are also
+guides for the other areas of GLFW.
+
+ - @ref intro_guide
+ - @ref context_guide
+ - @ref vulkan_guide
+ - @ref monitor_guide
+ - @ref input_guide
+
+
+@section window_object Window objects
+
+The @ref GLFWwindow object encapsulates both a window and a context. They are
+created with @ref glfwCreateWindow and destroyed with @ref glfwDestroyWindow, or
+@ref glfwTerminate, if any remain. As the window and context are inseparably
+linked, the object pointer is used as both a context and window handle.
+
+To see the event stream provided to the various window related callbacks, run
+the `events` test program.
+
+
+@subsection window_creation Window creation
+
+A window and its OpenGL or OpenGL ES context are created with @ref
+glfwCreateWindow, which returns a handle to the created window object. For
+example, this creates a 640 by 480 windowed mode window:
+
+@code
+GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", NULL, NULL);
+@endcode
+
+If window creation fails, `NULL` will be returned, so it is necessary to check
+the return value.
+
+The window handle is passed to all window related functions and is provided to
+along with all input events, so event handlers can tell which window received
+the event.
+
+
+@subsubsection window_full_screen Full screen windows
+
+To create a full screen window, you need to specify which monitor the window
+should use. In most cases, the user's primary monitor is a good choice.
+For more information about retrieving monitors, see @ref monitor_monitors.
+
+@code
+GLFWwindow* window = glfwCreateWindow(640, 480, "My Title", glfwGetPrimaryMonitor(), NULL);
+@endcode
+
+Full screen windows cover the entire display area of a monitor, have no border
+or decorations.
+
+Windowed mode windows can be made full screen by setting a monitor with @ref
+glfwSetWindowMonitor, and full screen ones can be made windowed by unsetting it
+with the same function.
+
+Each field of the @ref GLFWvidmode structure corresponds to a function parameter
+or window hint and combine to form the _desired video mode_ for that window.
+The supported video mode most closely matching the desired video mode will be
+set for the chosen monitor as long as the window has input focus. For more
+information about retrieving video modes, see @ref monitor_modes.
+
+Video mode field | Corresponds to
+---------------- | --------------
+GLFWvidmode.width | `width` parameter of @ref glfwCreateWindow
+GLFWvidmode.height | `height` parameter of @ref glfwCreateWindow
+GLFWvidmode.redBits | @ref GLFW_RED_BITS hint
+GLFWvidmode.greenBits | @ref GLFW_GREEN_BITS hint
+GLFWvidmode.blueBits | @ref GLFW_BLUE_BITS hint
+GLFWvidmode.refreshRate | @ref GLFW_REFRESH_RATE hint
+
+Once you have a full screen window, you can change its resolution, refresh rate
+and monitor with @ref glfwSetWindowMonitor. If you only need change its
+resolution you can also call @ref glfwSetWindowSize. In all cases, the new
+video mode will be selected the same way as the video mode chosen by @ref
+glfwCreateWindow. If the window has an OpenGL or OpenGL ES context, it will be
+unaffected.
+
+By default, the original video mode of the monitor will be restored and the
+window iconified if it loses input focus, to allow the user to switch back to
+the desktop. This behavior can be disabled with the
+[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint, for example if you
+wish to simultaneously cover multiple monitors with full screen windows.
+
+If a monitor is disconnected, all windows that are full screen on that monitor
+will be switched to windowed mode. See @ref monitor_event for more information.
+
+
+@subsubsection window_windowed_full_screen "Windowed full screen" windows
+
+If the closest match for the desired video mode is the current one, the video
+mode will not be changed, making window creation faster and application
+switching much smoother. This is sometimes called _windowed full screen_ or
+_borderless full screen_ window and counts as a full screen window. To create
+such a window, request the current video mode.
+
+@code
+const GLFWvidmode* mode = glfwGetVideoMode(monitor);
+
+glfwWindowHint(GLFW_RED_BITS, mode->redBits);
+glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits);
+glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
+glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
+
+GLFWwindow* window = glfwCreateWindow(mode->width, mode->height, "My Title", monitor, NULL);
+@endcode
+
+This also works for windowed mode windows that are made full screen.
+
+@code
+const GLFWvidmode* mode = glfwGetVideoMode(monitor);
+
+glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
+@endcode
+
+Note that @ref glfwGetVideoMode returns the _current_ video mode of a monitor,
+so if you already have a full screen window on that monitor that you want to
+make windowed full screen, you need to have saved the desktop resolution before.
+
+
+@subsection window_destruction Window destruction
+
+When a window is no longer needed, destroy it with @ref glfwDestroyWindow.
+
+@code
+glfwDestroyWindow(window);
+@endcode
+
+Window destruction always succeeds. Before the actual destruction, all
+callbacks are removed so no further events will be delivered for the window.
+All windows remaining when @ref glfwTerminate is called are destroyed as well.
+
+When a full screen window is destroyed, the original video mode of its monitor
+is restored, but the gamma ramp is left untouched.
+
+
+@subsection window_hints Window creation hints
+
+There are a number of hints that can be set before the creation of a window and
+context. Some affect the window itself, others affect the framebuffer or
+context. These hints are set to their default values each time the library is
+initialized with @ref glfwInit. Integer value hints can be set individually
+with @ref glfwWindowHint and string value hints with @ref glfwWindowHintString.
+You can reset all at once to their defaults with @ref glfwDefaultWindowHints.
+
+Some hints are platform specific. These are always valid to set on any
+platform but they will only affect their specific platform. Other platforms
+will ignore them. Setting these hints requires no platform specific headers or
+calls.
+
+@note Window hints need to be set before the creation of the window and context
+you wish to have the specified attributes. They function as additional
+arguments to @ref glfwCreateWindow.
+
+
+@subsubsection window_hints_hard Hard and soft constraints
+
+Some window hints are hard constraints. These must match the available
+capabilities _exactly_ for window and context creation to succeed. Hints
+that are not hard constraints are matched as closely as possible, but the
+resulting context and framebuffer may differ from what these hints requested.
+
+The following hints are always hard constraints:
+- @ref GLFW_STEREO
+- @ref GLFW_DOUBLEBUFFER
+- [GLFW_CLIENT_API](@ref GLFW_CLIENT_API_hint)
+- [GLFW_CONTEXT_CREATION_API](@ref GLFW_CONTEXT_CREATION_API_hint)
+
+The following additional hints are hard constraints when requesting an OpenGL
+context, but are ignored when requesting an OpenGL ES context:
+- [GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint)
+- [GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint)
+
+
+@subsubsection window_hints_wnd Window related hints
+
+@anchor GLFW_RESIZABLE_hint
+__GLFW_RESIZABLE__ specifies whether the windowed mode window will be resizable
+_by the user_. The window will still be resizable using the @ref
+glfwSetWindowSize function. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+This hint is ignored for full screen and undecorated windows.
+
+@anchor GLFW_VISIBLE_hint
+__GLFW_VISIBLE__ specifies whether the windowed mode window will be initially
+visible. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is
+ignored for full screen windows.
+
+@anchor GLFW_DECORATED_hint
+__GLFW_DECORATED__ specifies whether the windowed mode window will have window
+decorations such as a border, a close widget, etc. An undecorated window will
+not be resizable by the user but will still allow the user to generate close
+events on some platforms. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+This hint is ignored for full screen windows.
+
+@anchor GLFW_FOCUSED_hint
+__GLFW_FOCUSED__ specifies whether the windowed mode window will be given input
+focus when created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This
+hint is ignored for full screen and initially hidden windows.
+
+@anchor GLFW_AUTO_ICONIFY_hint
+__GLFW_AUTO_ICONIFY__ specifies whether the full screen window will
+automatically iconify and restore the previous video mode on input focus loss.
+Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is ignored for
+windowed mode windows.
+
+@anchor GLFW_FLOATING_hint
+__GLFW_FLOATING__ specifies whether the windowed mode window will be floating
+above other regular windows, also called topmost or always-on-top. This is
+intended primarily for debugging purposes and cannot be used to implement proper
+full screen windows. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This
+hint is ignored for full screen windows.
+
+@anchor GLFW_MAXIMIZED_hint
+__GLFW_MAXIMIZED__ specifies whether the windowed mode window will be maximized
+when created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This hint is
+ignored for full screen windows.
+
+@anchor GLFW_CENTER_CURSOR_hint
+__GLFW_CENTER_CURSOR__ specifies whether the cursor should be centered over
+newly created full screen windows. Possible values are `GLFW_TRUE` and
+`GLFW_FALSE`. This hint is ignored for windowed mode windows.
+
+@anchor GLFW_TRANSPARENT_FRAMEBUFFER_hint
+__GLFW_TRANSPARENT_FRAMEBUFFER__ specifies whether the window framebuffer will
+be transparent. If enabled and supported by the system, the window framebuffer
+alpha channel will be used to combine the framebuffer with the background. This
+does not affect window decorations. Possible values are `GLFW_TRUE` and
+`GLFW_FALSE`.
+
+@anchor GLFW_FOCUS_ON_SHOW_hint
+__GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input
+focus when @ref glfwShowWindow is called. Possible values are `GLFW_TRUE` and
+`GLFW_FALSE`.
+
+@anchor GLFW_SCALE_TO_MONITOR
+__GLFW_SCALE_TO_MONITOR__ specified whether the window content area should be
+resized based on the [monitor content scale](@ref monitor_scale) of any monitor
+it is placed on. This includes the initial placement when the window is
+created. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+
+This hint only has an effect on platforms where screen coordinates and pixels
+always map 1:1 such as Windows and X11. On platforms like macOS the resolution
+of the framebuffer is changed independently of the window size.
+
+
+@subsubsection window_hints_fb Framebuffer related hints
+
+@anchor GLFW_RED_BITS
+@anchor GLFW_GREEN_BITS
+@anchor GLFW_BLUE_BITS
+@anchor GLFW_ALPHA_BITS
+@anchor GLFW_DEPTH_BITS
+@anchor GLFW_STENCIL_BITS
+__GLFW_RED_BITS__, __GLFW_GREEN_BITS__, __GLFW_BLUE_BITS__, __GLFW_ALPHA_BITS__,
+__GLFW_DEPTH_BITS__ and __GLFW_STENCIL_BITS__ specify the desired bit depths of
+the various components of the default framebuffer. A value of `GLFW_DONT_CARE`
+means the application has no preference.
+
+@anchor GLFW_ACCUM_RED_BITS
+@anchor GLFW_ACCUM_GREEN_BITS
+@anchor GLFW_ACCUM_BLUE_BITS
+@anchor GLFW_ACCUM_ALPHA_BITS
+__GLFW_ACCUM_RED_BITS__, __GLFW_ACCUM_GREEN_BITS__, __GLFW_ACCUM_BLUE_BITS__ and
+__GLFW_ACCUM_ALPHA_BITS__ specify the desired bit depths of the various
+components of the accumulation buffer. A value of `GLFW_DONT_CARE` means the
+application has no preference.
+
+Accumulation buffers are a legacy OpenGL feature and should not be used in new
+code.
+
+@anchor GLFW_AUX_BUFFERS
+__GLFW_AUX_BUFFERS__ specifies the desired number of auxiliary buffers. A value
+of `GLFW_DONT_CARE` means the application has no preference.
+
+Auxiliary buffers are a legacy OpenGL feature and should not be used in new
+code.
+
+@anchor GLFW_STEREO
+__GLFW_STEREO__ specifies whether to use OpenGL stereoscopic rendering.
+Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This is a hard constraint.
+
+@anchor GLFW_SAMPLES
+__GLFW_SAMPLES__ specifies the desired number of samples to use for
+multisampling. Zero disables multisampling. A value of `GLFW_DONT_CARE` means
+the application has no preference.
+
+@anchor GLFW_SRGB_CAPABLE
+__GLFW_SRGB_CAPABLE__ specifies whether the framebuffer should be sRGB capable.
+Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+
+@note __OpenGL:__ If enabled and supported by the system, the
+`GL_FRAMEBUFFER_SRGB` enable will control sRGB rendering. By default, sRGB
+rendering will be disabled.
+
+@note __OpenGL ES:__ If enabled and supported by the system, the context will
+always have sRGB rendering enabled.
+
+@anchor GLFW_DOUBLEBUFFER
+__GLFW_DOUBLEBUFFER__ specifies whether the framebuffer should be double
+buffered. You nearly always want to use double buffering. This is a hard
+constraint. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+
+
+@subsubsection window_hints_mtr Monitor related hints
+
+@anchor GLFW_REFRESH_RATE
+__GLFW_REFRESH_RATE__ specifies the desired refresh rate for full screen
+windows. A value of `GLFW_DONT_CARE` means the highest available refresh rate
+will be used. This hint is ignored for windowed mode windows.
+
+
+@subsubsection window_hints_ctx Context related hints
+
+@anchor GLFW_CLIENT_API_hint
+__GLFW_CLIENT_API__ specifies which client API to create the context for.
+Possible values are `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` and `GLFW_NO_API`.
+This is a hard constraint.
+
+@anchor GLFW_CONTEXT_CREATION_API_hint
+__GLFW_CONTEXT_CREATION_API__ specifies which context creation API to use to
+create the context. Possible values are `GLFW_NATIVE_CONTEXT_API`,
+`GLFW_EGL_CONTEXT_API` and `GLFW_OSMESA_CONTEXT_API`. This is a hard
+constraint. If no client API is requested, this hint is ignored.
+
+An [extension loader library](@ref context_glext_auto) that assumes it knows
+which API was used to create the current context may fail if you change this
+hint. This can be resolved by having it load functions via @ref
+glfwGetProcAddress.
+
+@note @wayland The EGL API _is_ the native context creation API, so this hint
+will have no effect.
+
+@note @x11 On some Linux systems, creating contexts via both the native and EGL
+APIs in a single process will cause the application to segfault. Stick to one
+API or the other on Linux for now.
+
+@note __OSMesa:__ As its name implies, an OpenGL context created with OSMesa
+does not update the window contents when its buffers are swapped. Use OpenGL
+functions or the OSMesa native access functions @ref glfwGetOSMesaColorBuffer
+and @ref glfwGetOSMesaDepthBuffer to retrieve the framebuffer contents.
+
+@anchor GLFW_CONTEXT_VERSION_MAJOR_hint
+@anchor GLFW_CONTEXT_VERSION_MINOR_hint
+__GLFW_CONTEXT_VERSION_MAJOR__ and __GLFW_CONTEXT_VERSION_MINOR__ specify the
+client API version that the created context must be compatible with. The exact
+behavior of these hints depend on the requested client API.
+
+While there is no way to ask the driver for a context of the highest supported
+version, GLFW will attempt to provide this when you ask for a version 1.0
+context, which is the default for these hints.
+
+Do not confuse these hints with @ref GLFW_VERSION_MAJOR and @ref
+GLFW_VERSION_MINOR, which provide the API version of the GLFW header.
+
+@note __OpenGL:__ These hints are not hard constraints, but creation will fail
+if the OpenGL version of the created context is less than the one requested. It
+is therefore perfectly safe to use the default of version 1.0 for legacy code
+and you will still get backwards-compatible contexts of version 3.0 and above
+when available.
+
+@note __OpenGL ES:__ These hints are not hard constraints, but creation will
+fail if the OpenGL ES version of the created context is less than the one
+requested. Additionally, OpenGL ES 1.x cannot be returned if 2.0 or later was
+requested, and vice versa. This is because OpenGL ES 3.x is backward compatible
+with 2.0, but OpenGL ES 2.0 is not backward compatible with 1.x.
+
+@note @macos The OS only supports forward-compatible core profile contexts for
+OpenGL versions 3.2 and later. Before creating an OpenGL context of version
+3.2 or later you must set the
+[GLFW_OPENGL_FORWARD_COMPAT](@ref GLFW_OPENGL_FORWARD_COMPAT_hint) and
+[GLFW_OPENGL_PROFILE](@ref GLFW_OPENGL_PROFILE_hint) hints accordingly. OpenGL
+3.0 and 3.1 contexts are not supported at all on macOS.
+
+@anchor GLFW_OPENGL_FORWARD_COMPAT_hint
+__GLFW_OPENGL_FORWARD_COMPAT__ specifies whether the OpenGL context should be
+forward-compatible, i.e. one where all functionality deprecated in the requested
+version of OpenGL is removed. This must only be used if the requested OpenGL
+version is 3.0 or above. If OpenGL ES is requested, this hint is ignored.
+
+Forward-compatibility is described in detail in the
+[OpenGL Reference Manual](https://www.opengl.org/registry/).
+
+@anchor GLFW_OPENGL_DEBUG_CONTEXT_hint
+__GLFW_OPENGL_DEBUG_CONTEXT__ specifies whether the context should be created
+in debug mode, which may provide additional error and diagnostic reporting
+functionality. Possible values are `GLFW_TRUE` and `GLFW_FALSE`.
+
+Debug contexts for OpenGL and OpenGL ES are described in detail by the
+[GL_KHR_debug](https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt)
+extension.
+
+@anchor GLFW_OPENGL_PROFILE_hint
+__GLFW_OPENGL_PROFILE__ specifies which OpenGL profile to create the context
+for. Possible values are one of `GLFW_OPENGL_CORE_PROFILE` or
+`GLFW_OPENGL_COMPAT_PROFILE`, or `GLFW_OPENGL_ANY_PROFILE` to not request
+a specific profile. If requesting an OpenGL version below 3.2,
+`GLFW_OPENGL_ANY_PROFILE` must be used. If OpenGL ES is requested, this hint
+is ignored.
+
+OpenGL profiles are described in detail in the
+[OpenGL Reference Manual](https://www.opengl.org/registry/).
+
+@anchor GLFW_CONTEXT_ROBUSTNESS_hint
+__GLFW_CONTEXT_ROBUSTNESS__ specifies the robustness strategy to be used by the
+context. This can be one of `GLFW_NO_RESET_NOTIFICATION` or
+`GLFW_LOSE_CONTEXT_ON_RESET`, or `GLFW_NO_ROBUSTNESS` to not request
+a robustness strategy.
+
+@anchor GLFW_CONTEXT_RELEASE_BEHAVIOR_hint
+__GLFW_CONTEXT_RELEASE_BEHAVIOR__ specifies the release behavior to be
+used by the context. Possible values are one of `GLFW_ANY_RELEASE_BEHAVIOR`,
+`GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE`. If the
+behavior is `GLFW_ANY_RELEASE_BEHAVIOR`, the default behavior of the context
+creation API will be used. If the behavior is `GLFW_RELEASE_BEHAVIOR_FLUSH`,
+the pipeline will be flushed whenever the context is released from being the
+current one. If the behavior is `GLFW_RELEASE_BEHAVIOR_NONE`, the pipeline will
+not be flushed on release.
+
+Context release behaviors are described in detail by the
+[GL_KHR_context_flush_control](https://www.opengl.org/registry/specs/KHR/context_flush_control.txt)
+extension.
+
+@anchor GLFW_CONTEXT_NO_ERROR_hint
+__GLFW_CONTEXT_NO_ERROR__ specifies whether errors should be generated by the
+context. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. If enabled,
+situations that would have generated errors instead cause undefined behavior.
+
+The no error mode for OpenGL and OpenGL ES is described in detail by the
+[GL_KHR_no_error](https://www.opengl.org/registry/specs/KHR/no_error.txt)
+extension.
+
+
+@subsubsection window_hints_osx macOS specific window hints
+
+@anchor GLFW_COCOA_RETINA_FRAMEBUFFER_hint
+__GLFW_COCOA_RETINA_FRAMEBUFFER__ specifies whether to use full resolution
+framebuffers on Retina displays. Possible values are `GLFW_TRUE` and
+`GLFW_FALSE`. This is ignored on other platforms.
+
+@anchor GLFW_COCOA_FRAME_NAME_hint
+__GLFW_COCOA_FRAME_NAME__ specifies the UTF-8 encoded name to use for autosaving
+the window frame, or if empty disables frame autosaving for the window. This is
+ignored on other platforms. This is set with @ref glfwWindowHintString.
+
+@anchor GLFW_COCOA_GRAPHICS_SWITCHING_hint
+__GLFW_COCOA_GRAPHICS_SWITCHING__ specifies whether to in Automatic Graphics
+Switching, i.e. to allow the system to choose the integrated GPU for the OpenGL
+context and move it between GPUs if necessary or whether to force it to always
+run on the discrete GPU. This only affects systems with both integrated and
+discrete GPUs. Possible values are `GLFW_TRUE` and `GLFW_FALSE`. This is
+ignored on other platforms.
+
+Simpler programs and tools may want to enable this to save power, while games
+and other applications performing advanced rendering will want to leave it
+disabled.
+
+A bundled application that wishes to participate in Automatic Graphics Switching
+should also declare this in its `Info.plist` by setting the
+`NSSupportsAutomaticGraphicsSwitching` key to `true`.
+
+
+@subsubsection window_hints_x11 X11 specific window hints
+
+@anchor GLFW_X11_CLASS_NAME_hint
+@anchor GLFW_X11_INSTANCE_NAME_hint
+__GLFW_X11_CLASS_NAME__ and __GLFW_X11_INSTANCE_NAME__ specifies the desired
+ASCII encoded class and instance parts of the ICCCM `WM_CLASS` window property.
+These are set with @ref glfwWindowHintString.
+
+
+@subsubsection window_hints_values Supported and default values
+
+Window hint | Default value | Supported values
+----------------------------- | --------------------------- | ----------------
+GLFW_RESIZABLE | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_VISIBLE | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_DECORATED | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_FOCUSED | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_AUTO_ICONIFY | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_FLOATING | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_MAXIMIZED | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_CENTER_CURSOR | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_TRANSPARENT_FRAMEBUFFER | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_FOCUS_ON_SHOW | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_SCALE_TO_MONITOR | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_RED_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_GREEN_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_BLUE_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_ALPHA_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_DEPTH_BITS | 24 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_STENCIL_BITS | 8 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_ACCUM_RED_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_ACCUM_GREEN_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_ACCUM_BLUE_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_ACCUM_ALPHA_BITS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_AUX_BUFFERS | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_SAMPLES | 0 | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_REFRESH_RATE | `GLFW_DONT_CARE` | 0 to `INT_MAX` or `GLFW_DONT_CARE`
+GLFW_STEREO | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_SRGB_CAPABLE | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_DOUBLEBUFFER | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_CLIENT_API | `GLFW_OPENGL_API` | `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` or `GLFW_NO_API`
+GLFW_CONTEXT_CREATION_API | `GLFW_NATIVE_CONTEXT_API` | `GLFW_NATIVE_CONTEXT_API`, `GLFW_EGL_CONTEXT_API` or `GLFW_OSMESA_CONTEXT_API`
+GLFW_CONTEXT_VERSION_MAJOR | 1 | Any valid major version number of the chosen client API
+GLFW_CONTEXT_VERSION_MINOR | 0 | Any valid minor version number of the chosen client API
+GLFW_CONTEXT_ROBUSTNESS | `GLFW_NO_ROBUSTNESS` | `GLFW_NO_ROBUSTNESS`, `GLFW_NO_RESET_NOTIFICATION` or `GLFW_LOSE_CONTEXT_ON_RESET`
+GLFW_CONTEXT_RELEASE_BEHAVIOR | `GLFW_ANY_RELEASE_BEHAVIOR` | `GLFW_ANY_RELEASE_BEHAVIOR`, `GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE`
+GLFW_OPENGL_FORWARD_COMPAT | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_OPENGL_DEBUG_CONTEXT | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_OPENGL_PROFILE | `GLFW_OPENGL_ANY_PROFILE` | `GLFW_OPENGL_ANY_PROFILE`, `GLFW_OPENGL_COMPAT_PROFILE` or `GLFW_OPENGL_CORE_PROFILE`
+GLFW_COCOA_RETINA_FRAMEBUFFER | `GLFW_TRUE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_COCOA_FRAME_NAME | `""` | A UTF-8 encoded frame autosave name
+GLFW_COCOA_GRAPHICS_SWITCHING | `GLFW_FALSE` | `GLFW_TRUE` or `GLFW_FALSE`
+GLFW_X11_CLASS_NAME | `""` | An ASCII encoded `WM_CLASS` class name
+GLFW_X11_INSTANCE_NAME | `""` | An ASCII encoded `WM_CLASS` instance name
+
+
+@section window_events Window event processing
+
+See @ref events.
+
+
+@section window_properties Window properties and events
+
+@subsection window_userptr User pointer
+
+Each window has a user pointer that can be set with @ref
+glfwSetWindowUserPointer and queried with @ref glfwGetWindowUserPointer. This
+can be used for any purpose you need and will not be modified by GLFW throughout
+the life-time of the window.
+
+The initial value of the pointer is `NULL`.
+
+
+@subsection window_close Window closing and close flag
+
+When the user attempts to close the window, for example by clicking the close
+widget or using a key chord like Alt+F4, the _close flag_ of the window is set.
+The window is however not actually destroyed and, unless you watch for this
+state change, nothing further happens.
+
+The current state of the close flag is returned by @ref glfwWindowShouldClose
+and can be set or cleared directly with @ref glfwSetWindowShouldClose. A common
+pattern is to use the close flag as a main loop condition.
+
+@code
+while (!glfwWindowShouldClose(window))
+{
+ render(window);
+
+ glfwSwapBuffers(window);
+ glfwPollEvents();
+}
+@endcode
+
+If you wish to be notified when the user attempts to close a window, set a close
+callback.
+
+@code
+glfwSetWindowCloseCallback(window, window_close_callback);
+@endcode
+
+The callback function is called directly _after_ the close flag has been set.
+It can be used for example to filter close requests and clear the close flag
+again unless certain conditions are met.
+
+@code
+void window_close_callback(GLFWwindow* window)
+{
+ if (!time_to_close)
+ glfwSetWindowShouldClose(window, GLFW_FALSE);
+}
+@endcode
+
+
+@subsection window_size Window size
+
+The size of a window can be changed with @ref glfwSetWindowSize. For windowed
+mode windows, this sets the size, in
+[screen coordinates](@ref coordinate_systems) of the _content area_ or _content
+area_ of the window. The window system may impose limits on window size.
+
+@code
+glfwSetWindowSize(window, 640, 480);
+@endcode
+
+For full screen windows, the specified size becomes the new resolution of the
+window's desired video mode. The video mode most closely matching the new
+desired video mode is set immediately. The window is resized to fit the
+resolution of the set video mode.
+
+If you wish to be notified when a window is resized, whether by the user, the
+system or your own code, set a size callback.
+
+@code
+glfwSetWindowSizeCallback(window, window_size_callback);
+@endcode
+
+The callback function receives the new size, in screen coordinates, of the
+content area of the window when the window is resized.
+
+@code
+void window_size_callback(GLFWwindow* window, int width, int height)
+{
+}
+@endcode
+
+There is also @ref glfwGetWindowSize for directly retrieving the current size of
+a window.
+
+@code
+int width, height;
+glfwGetWindowSize(window, &width, &height);
+@endcode
+
+@note Do not pass the window size to `glViewport` or other pixel-based OpenGL
+calls. The window size is in screen coordinates, not pixels. Use the
+[framebuffer size](@ref window_fbsize), which is in pixels, for pixel-based
+calls.
+
+The above functions work with the size of the content area, but decorated
+windows typically have title bars and window frames around this rectangle. You
+can retrieve the extents of these with @ref glfwGetWindowFrameSize.
+
+@code
+int left, top, right, bottom;
+glfwGetWindowFrameSize(window, &left, &top, &right, &bottom);
+@endcode
+
+The returned values are the distances, in screen coordinates, from the edges of
+the content area to the corresponding edges of the full window. As they are
+distances and not coordinates, they are always zero or positive.
+
+
+@subsection window_fbsize Framebuffer size
+
+While the size of a window is measured in screen coordinates, OpenGL works with
+pixels. The size you pass into `glViewport`, for example, should be in pixels.
+On some machines screen coordinates and pixels are the same, but on others they
+will not be. There is a second set of functions to retrieve the size, in
+pixels, of the framebuffer of a window.
+
+If you wish to be notified when the framebuffer of a window is resized, whether
+by the user or the system, set a size callback.
+
+@code
+glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
+@endcode
+
+The callback function receives the new size of the framebuffer when it is
+resized, which can for example be used to update the OpenGL viewport.
+
+@code
+void framebuffer_size_callback(GLFWwindow* window, int width, int height)
+{
+ glViewport(0, 0, width, height);
+}
+@endcode
+
+There is also @ref glfwGetFramebufferSize for directly retrieving the current
+size of the framebuffer of a window.
+
+@code
+int width, height;
+glfwGetFramebufferSize(window, &width, &height);
+glViewport(0, 0, width, height);
+@endcode
+
+The size of a framebuffer may change independently of the size of a window, for
+example if the window is dragged between a regular monitor and a high-DPI one.
+
+
+@subsection window_scale Window content scale
+
+The content scale for a window can be retrieved with @ref
+glfwGetWindowContentScale.
+
+@code
+float xscale, yscale;
+glfwGetWindowContentScale(window, &xscale, &yscale);
+@endcode
+
+The content scale is the ratio between the current DPI and the platform's
+default DPI. This is especially important for text and any UI elements. If the
+pixel dimensions of your UI scaled by this look appropriate on your machine then
+it should appear at a reasonable size on other machines regardless of their DPI
+and scaling settings. This relies on the system DPI and scaling settings being
+somewhat correct.
+
+On systems where each monitors can have its own content scale, the window
+content scale will depend on which monitor the system considers the window to be
+on.
+
+If you wish to be notified when the content scale of a window changes, whether
+because of a system setting change or because it was moved to a monitor with
+a different scale, set a content scale callback.
+
+@code
+glfwSetWindowContentScaleCallback(window, window_content_scale_callback);
+@endcode
+
+The callback function receives the new content scale of the window.
+
+@code
+void window_content_scale_callback(GLFWwindow* window, float xscale, float yscale)
+{
+ set_interface_scale(xscale, yscale);
+}
+@endcode
+
+On platforms where pixels and screen coordinates always map 1:1, the window
+will need to be resized to appear the same size when it is moved to a monitor
+with a different content scale. To have this done automatically both when the
+window is created and when its content scale later changes, set the @ref
+GLFW_SCALE_TO_MONITOR window hint.
+
+
+@subsection window_sizelimits Window size limits
+
+The minimum and maximum size of the content area of a windowed mode window can
+be enforced with @ref glfwSetWindowSizeLimits. The user may resize the window
+to any size and aspect ratio within the specified limits, unless the aspect
+ratio is also set.
+
+@code
+glfwSetWindowSizeLimits(window, 200, 200, 400, 400);
+@endcode
+
+To specify only a minimum size or only a maximum one, set the other pair to
+`GLFW_DONT_CARE`.
+
+@code
+glfwSetWindowSizeLimits(window, 640, 480, GLFW_DONT_CARE, GLFW_DONT_CARE);
+@endcode
+
+To disable size limits for a window, set them all to `GLFW_DONT_CARE`.
+
+The aspect ratio of the content area of a windowed mode window can be enforced
+with @ref glfwSetWindowAspectRatio. The user may resize the window freely
+unless size limits are also set, but the size will be constrained to maintain
+the aspect ratio.
+
+@code
+glfwSetWindowAspectRatio(window, 16, 9);
+@endcode
+
+The aspect ratio is specified as a numerator and denominator, corresponding to
+the width and height, respectively. If you want a window to maintain its
+current aspect ratio, use its current size as the ratio.
+
+@code
+int width, height;
+glfwGetWindowSize(window, &width, &height);
+glfwSetWindowAspectRatio(window, width, height);
+@endcode
+
+To disable the aspect ratio limit for a window, set both terms to
+`GLFW_DONT_CARE`.
+
+You can have both size limits and aspect ratio set for a window, but the results
+are undefined if they conflict.
+
+
+@subsection window_pos Window position
+
+The position of a windowed-mode window can be changed with @ref
+glfwSetWindowPos. This moves the window so that the upper-left corner of its
+content area has the specified [screen coordinates](@ref coordinate_systems).
+The window system may put limitations on window placement.
+
+@code
+glfwSetWindowPos(window, 100, 100);
+@endcode
+
+If you wish to be notified when a window is moved, whether by the user, the
+system or your own code, set a position callback.
+
+@code
+glfwSetWindowPosCallback(window, window_pos_callback);
+@endcode
+
+The callback function receives the new position, in screen coordinates, of the
+upper-left corner of the content area when the window is moved.
+
+@code
+void window_pos_callback(GLFWwindow* window, int xpos, int ypos)
+{
+}
+@endcode
+
+There is also @ref glfwGetWindowPos for directly retrieving the current position
+of the content area of the window.
+
+@code
+int xpos, ypos;
+glfwGetWindowPos(window, &xpos, &ypos);
+@endcode
+
+
+@subsection window_title Window title
+
+All GLFW windows have a title, although undecorated or full screen windows may
+not display it or only display it in a task bar or similar interface. You can
+set a UTF-8 encoded window title with @ref glfwSetWindowTitle.
+
+@code
+glfwSetWindowTitle(window, "My Window");
+@endcode
+
+The specified string is copied before the function returns, so there is no need
+to keep it around.
+
+As long as your source file is encoded as UTF-8, you can use any Unicode
+characters directly in the source.
+
+@code
+glfwSetWindowTitle(window, "ラストエグザイル");
+@endcode
+
+If you are using C++11 or C11, you can use a UTF-8 string literal.
+
+@code
+glfwSetWindowTitle(window, u8"This is always a UTF-8 string");
+@endcode
+
+
+@subsection window_icon Window icon
+
+Decorated windows have icons on some platforms. You can set this icon by
+specifying a list of candidate images with @ref glfwSetWindowIcon.
+
+@code
+GLFWimage images[2];
+images[0] = load_icon("my_icon.png");
+images[1] = load_icon("my_icon_small.png");
+
+glfwSetWindowIcon(window, 2, images);
+@endcode
+
+The image data is 32-bit, little-endian, non-premultiplied RGBA, i.e. eight bits
+per channel with the red channel first. The pixels are arranged canonically as
+sequential rows, starting from the top-left corner.
+
+To revert to the default window icon, pass in an empty image array.
+
+@code
+glfwSetWindowIcon(window, 0, NULL);
+@endcode
+
+
+@subsection window_monitor Window monitor
+
+Full screen windows are associated with a specific monitor. You can get the
+handle for this monitor with @ref glfwGetWindowMonitor.
+
+@code
+GLFWmonitor* monitor = glfwGetWindowMonitor(window);
+@endcode
+
+This monitor handle is one of those returned by @ref glfwGetMonitors.
+
+For windowed mode windows, this function returns `NULL`. This is how to tell
+full screen windows from windowed mode windows.
+
+You can move windows between monitors or between full screen and windowed mode
+with @ref glfwSetWindowMonitor. When making a window full screen on the same or
+on a different monitor, specify the desired monitor, resolution and refresh
+rate. The position arguments are ignored.
+
+@code
+const GLFWvidmode* mode = glfwGetVideoMode(monitor);
+
+glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, mode->refreshRate);
+@endcode
+
+When making the window windowed, specify the desired position and size. The
+refresh rate argument is ignored.
+
+@code
+glfwSetWindowMonitor(window, NULL, xpos, ypos, width, height, 0);
+@endcode
+
+This restores any previous window settings such as whether it is decorated,
+floating, resizable, has size or aspect ratio limits, etc.. To restore a window
+that was originally windowed to its original size and position, save these
+before making it full screen and then pass them in as above.
+
+
+@subsection window_iconify Window iconification
+
+Windows can be iconified (i.e. minimized) with @ref glfwIconifyWindow.
+
+@code
+glfwIconifyWindow(window);
+@endcode
+
+When a full screen window is iconified, the original video mode of its monitor
+is restored until the user or application restores the window.
+
+Iconified windows can be restored with @ref glfwRestoreWindow. This function
+also restores windows from maximization.
+
+@code
+glfwRestoreWindow(window);
+@endcode
+
+When a full screen window is restored, the desired video mode is restored to its
+monitor as well.
+
+If you wish to be notified when a window is iconified or restored, whether by
+the user, system or your own code, set an iconify callback.
+
+@code
+glfwSetWindowIconifyCallback(window, window_iconify_callback);
+@endcode
+
+The callback function receives changes in the iconification state of the window.
+
+@code
+void window_iconify_callback(GLFWwindow* window, int iconified)
+{
+ if (iconified)
+ {
+ // The window was iconified
+ }
+ else
+ {
+ // The window was restored
+ }
+}
+@endcode
+
+You can also get the current iconification state with @ref glfwGetWindowAttrib.
+
+@code
+int iconified = glfwGetWindowAttrib(window, GLFW_ICONIFIED);
+@endcode
+
+
+@subsection window_maximize Window maximization
+
+Windows can be maximized (i.e. zoomed) with @ref glfwMaximizeWindow.
+
+@code
+glfwMaximizeWindow(window);
+@endcode
+
+Full screen windows cannot be maximized and passing a full screen window to this
+function does nothing.
+
+Maximized windows can be restored with @ref glfwRestoreWindow. This function
+also restores windows from iconification.
+
+@code
+glfwRestoreWindow(window);
+@endcode
+
+If you wish to be notified when a window is maximized or restored, whether by
+the user, system or your own code, set a maximize callback.
+
+@code
+glfwSetWindowMaximizeCallback(window, window_maximize_callback);
+@endcode
+
+The callback function receives changes in the maximization state of the window.
+
+@code
+void window_maximize_callback(GLFWwindow* window, int maximized)
+{
+ if (maximized)
+ {
+ // The window was maximized
+ }
+ else
+ {
+ // The window was restored
+ }
+}
+@endcode
+
+You can also get the current maximization state with @ref glfwGetWindowAttrib.
+
+@code
+int maximized = glfwGetWindowAttrib(window, GLFW_MAXIMIZED);
+@endcode
+
+By default, newly created windows are not maximized. You can change this
+behavior by setting the [GLFW_MAXIMIZED](@ref GLFW_MAXIMIZED_hint) window hint
+before creating the window.
+
+@code
+glfwWindowHint(GLFW_MAXIMIZED, GLFW_TRUE);
+@endcode
+
+
+@subsection window_hide Window visibility
+
+Windowed mode windows can be hidden with @ref glfwHideWindow.
+
+@code
+glfwHideWindow(window);
+@endcode
+
+This makes the window completely invisible to the user, including removing it
+from the task bar, dock or window list. Full screen windows cannot be hidden
+and calling @ref glfwHideWindow on a full screen window does nothing.
+
+Hidden windows can be shown with @ref glfwShowWindow.
+
+@code
+glfwShowWindow(window);
+@endcode
+
+By default, this function will also set the input focus to that window. Set
+the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint to change
+this behavior for all newly created windows, or change the behavior for an
+existing window with @ref glfwSetWindowAttrib.
+
+You can also get the current visibility state with @ref glfwGetWindowAttrib.
+
+@code
+int visible = glfwGetWindowAttrib(window, GLFW_VISIBLE);
+@endcode
+
+By default, newly created windows are visible. You can change this behavior by
+setting the [GLFW_VISIBLE](@ref GLFW_VISIBLE_hint) window hint before creating
+the window.
+
+@code
+glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE);
+@endcode
+
+Windows created hidden are completely invisible to the user until shown. This
+can be useful if you need to set up your window further before showing it, for
+example moving it to a specific location.
+
+
+@subsection window_focus Window input focus
+
+Windows can be given input focus and brought to the front with @ref
+glfwFocusWindow.
+
+@code
+glfwFocusWindow(window);
+@endcode
+
+Keep in mind that it can be very disruptive to the user when a window is forced
+to the top. For a less disruptive way of getting the user's attention, see
+[attention requests](@ref window_attention).
+
+If you wish to be notified when a window gains or loses input focus, whether by
+the user, system or your own code, set a focus callback.
+
+@code
+glfwSetWindowFocusCallback(window, window_focus_callback);
+@endcode
+
+The callback function receives changes in the input focus state of the window.
+
+@code
+void window_focus_callback(GLFWwindow* window, int focused)
+{
+ if (focused)
+ {
+ // The window gained input focus
+ }
+ else
+ {
+ // The window lost input focus
+ }
+}
+@endcode
+
+You can also get the current input focus state with @ref glfwGetWindowAttrib.
+
+@code
+int focused = glfwGetWindowAttrib(window, GLFW_FOCUSED);
+@endcode
+
+By default, newly created windows are given input focus. You can change this
+behavior by setting the [GLFW_FOCUSED](@ref GLFW_FOCUSED_hint) window hint
+before creating the window.
+
+@code
+glfwWindowHint(GLFW_FOCUSED, GLFW_FALSE);
+@endcode
+
+
+@subsection window_attention Window attention request
+
+If you wish to notify the user of an event without interrupting, you can request
+attention with @ref glfwRequestWindowAttention.
+
+@code
+glfwRequestWindowAttention(window);
+@endcode
+
+The system will highlight the specified window, or on platforms where this is
+not supported, the application as a whole. Once the user has given it
+attention, the system will automatically end the request.
+
+
+@subsection window_refresh Window damage and refresh
+
+If you wish to be notified when the contents of a window is damaged and needs
+to be refreshed, set a window refresh callback.
+
+@code
+glfwSetWindowRefreshCallback(m_handle, window_refresh_callback);
+@endcode
+
+The callback function is called when the contents of the window needs to be
+refreshed.
+
+@code
+void window_refresh_callback(GLFWwindow* window)
+{
+ draw_editor_ui(window);
+ glfwSwapBuffers(window);
+}
+@endcode
+
+@note On compositing window systems such as Aero, Compiz or Aqua, where the
+window contents are saved off-screen, this callback might only be called when
+the window or framebuffer is resized.
+
+
+@subsection window_transparency Window transparency
+
+GLFW supports two kinds of transparency for windows; framebuffer transparency
+and whole window transparency. A single window may not use both methods. The
+results of doing this are undefined.
+
+Both methods require the platform to support it and not every version of every
+platform GLFW supports does this, so there are mechanisms to check whether the
+window really is transparent.
+
+Window framebuffers can be made transparent on a per-pixel per-frame basis with
+the [GLFW_TRANSPARENT_FRAMEBUFFER](@ref GLFW_TRANSPARENT_FRAMEBUFFER_hint)
+window hint.
+
+@code
+glfwWindowHint(GLFW_TRANSPARENT_FRAMEBUFFER, GLFW_TRUE);
+@endcode
+
+If supported by the system, the window content area will be composited with the
+background using the framebuffer per-pixel alpha channel. This requires desktop
+compositing to be enabled on the system. It does not affect window decorations.
+
+You can check whether the window framebuffer was successfully made transparent
+with the
+[GLFW_TRANSPARENT_FRAMEBUFFER](@ref GLFW_TRANSPARENT_FRAMEBUFFER_attrib)
+window attribute.
+
+@code
+if (glfwGetWindowAttrib(window, GLFW_TRANSPARENT_FRAMEBUFFER))
+{
+ // window framebuffer is currently transparent
+}
+@endcode
+
+GLFW comes with an example that enabled framebuffer transparency called `gears`.
+
+The opacity of the whole window, including any decorations, can be set with @ref
+glfwSetWindowOpacity.
+
+@code
+glfwSetWindowOpacity(window, 0.5f);
+@endcode
+
+The opacity (or alpha) value is a positive finite number between zero and one,
+where 0 (zero) is fully transparent and 1 (one) is fully opaque. The initial
+opacity value for newly created windows is 1.
+
+The current opacity of a window can be queried with @ref glfwGetWindowOpacity.
+
+@code
+float opacity = glfwGetWindowOpacity(window);
+@endcode
+
+If the system does not support whole window transparency, this function always
+returns one.
+
+GLFW comes with a test program that lets you control whole window transparency
+at run-time called `opacity`.
+
+
+@subsection window_attribs Window attributes
+
+Windows have a number of attributes that can be returned using @ref
+glfwGetWindowAttrib. Some reflect state that may change as a result of user
+interaction, (e.g. whether it has input focus), while others reflect inherent
+properties of the window (e.g. what kind of border it has). Some are related to
+the window and others to its OpenGL or OpenGL ES context.
+
+@code
+if (glfwGetWindowAttrib(window, GLFW_FOCUSED))
+{
+ // window has input focus
+}
+@endcode
+
+The [GLFW_DECORATED](@ref GLFW_DECORATED_attrib),
+[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_attrib),
+[GLFW_FLOATING](@ref GLFW_FLOATING_attrib),
+[GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_attrib) and
+[GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_attrib) window attributes can be
+changed with @ref glfwSetWindowAttrib.
+
+@code
+glfwSetWindowAttrib(window, GLFW_RESIZABLE, GLFW_FALSE);
+@endcode
+
+
+
+@subsubsection window_attribs_wnd Window related attributes
+
+@anchor GLFW_FOCUSED_attrib
+__GLFW_FOCUSED__ indicates whether the specified window has input focus. See
+@ref window_focus for details.
+
+@anchor GLFW_ICONIFIED_attrib
+__GLFW_ICONIFIED__ indicates whether the specified window is iconified.
+See @ref window_iconify for details.
+
+@anchor GLFW_MAXIMIZED_attrib
+__GLFW_MAXIMIZED__ indicates whether the specified window is maximized. See
+@ref window_maximize for details.
+
+@anchor GLFW_HOVERED_attrib
+__GLFW_HOVERED__ indicates whether the cursor is currently directly over the
+content area of the window, with no other windows between. See @ref
+cursor_enter for details.
+
+@anchor GLFW_VISIBLE_attrib
+__GLFW_VISIBLE__ indicates whether the specified window is visible. See @ref
+window_hide for details.
+
+@anchor GLFW_RESIZABLE_attrib
+__GLFW_RESIZABLE__ indicates whether the specified window is resizable _by the
+user_. This can be set before creation with the
+[GLFW_RESIZABLE](@ref GLFW_RESIZABLE_hint) window hint or after with @ref
+glfwSetWindowAttrib.
+
+@anchor GLFW_DECORATED_attrib
+__GLFW_DECORATED__ indicates whether the specified window has decorations such
+as a border, a close widget, etc. This can be set before creation with the
+[GLFW_DECORATED](@ref GLFW_DECORATED_hint) window hint or after with @ref
+glfwSetWindowAttrib.
+
+@anchor GLFW_AUTO_ICONIFY_attrib
+__GLFW_AUTO_ICONIFY__ indicates whether the specified full screen window is
+iconified on focus loss, a close widget, etc. This can be set before creation
+with the [GLFW_AUTO_ICONIFY](@ref GLFW_AUTO_ICONIFY_hint) window hint or after
+with @ref glfwSetWindowAttrib.
+
+@anchor GLFW_FLOATING_attrib
+__GLFW_FLOATING__ indicates whether the specified window is floating, also
+called topmost or always-on-top. This can be set before creation with the
+[GLFW_FLOATING](@ref GLFW_FLOATING_hint) window hint or after with @ref
+glfwSetWindowAttrib.
+
+@anchor GLFW_TRANSPARENT_FRAMEBUFFER_attrib
+__GLFW_TRANSPARENT_FRAMEBUFFER__ indicates whether the specified window has
+a transparent framebuffer, i.e. the window contents is composited with the
+background using the window framebuffer alpha channel. See @ref
+window_transparency for details.
+
+@anchor GLFW_FOCUS_ON_SHOW_attrib
+__GLFW_FOCUS_ON_SHOW__ specifies whether the window will be given input
+focus when @ref glfwShowWindow is called. This can be set before creation
+with the [GLFW_FOCUS_ON_SHOW](@ref GLFW_FOCUS_ON_SHOW_hint) window hint or
+after with @ref glfwSetWindowAttrib.
+
+@subsubsection window_attribs_ctx Context related attributes
+
+@anchor GLFW_CLIENT_API_attrib
+__GLFW_CLIENT_API__ indicates the client API provided by the window's context;
+either `GLFW_OPENGL_API`, `GLFW_OPENGL_ES_API` or `GLFW_NO_API`.
+
+@anchor GLFW_CONTEXT_CREATION_API_attrib
+__GLFW_CONTEXT_CREATION_API__ indicates the context creation API used to create
+the window's context; either `GLFW_NATIVE_CONTEXT_API`, `GLFW_EGL_CONTEXT_API`
+or `GLFW_OSMESA_CONTEXT_API`.
+
+@anchor GLFW_CONTEXT_VERSION_MAJOR_attrib
+@anchor GLFW_CONTEXT_VERSION_MINOR_attrib
+@anchor GLFW_CONTEXT_REVISION_attrib
+__GLFW_CONTEXT_VERSION_MAJOR__, __GLFW_CONTEXT_VERSION_MINOR__ and
+__GLFW_CONTEXT_REVISION__ indicate the client API version of the window's
+context.
+
+@note Do not confuse these attributes with `GLFW_VERSION_MAJOR`,
+`GLFW_VERSION_MINOR` and `GLFW_VERSION_REVISION` which provide the API version
+of the GLFW header.
+
+@anchor GLFW_OPENGL_FORWARD_COMPAT_attrib
+__GLFW_OPENGL_FORWARD_COMPAT__ is `GLFW_TRUE` if the window's context is an
+OpenGL forward-compatible one, or `GLFW_FALSE` otherwise.
+
+@anchor GLFW_OPENGL_DEBUG_CONTEXT_attrib
+__GLFW_OPENGL_DEBUG_CONTEXT__ is `GLFW_TRUE` if the window's context is in debug
+mode, or `GLFW_FALSE` otherwise.
+
+@anchor GLFW_OPENGL_PROFILE_attrib
+__GLFW_OPENGL_PROFILE__ indicates the OpenGL profile used by the context. This
+is `GLFW_OPENGL_CORE_PROFILE` or `GLFW_OPENGL_COMPAT_PROFILE` if the context
+uses a known profile, or `GLFW_OPENGL_ANY_PROFILE` if the OpenGL profile is
+unknown or the context is an OpenGL ES context. Note that the returned profile
+may not match the profile bits of the context flags, as GLFW will try other
+means of detecting the profile when no bits are set.
+
+@anchor GLFW_CONTEXT_RELEASE_BEHAVIOR_attrib
+__GLFW_CONTEXT_RELEASE_BEHAVIOR__ indicates the release used by the context.
+Possible values are one of `GLFW_ANY_RELEASE_BEHAVIOR`,
+`GLFW_RELEASE_BEHAVIOR_FLUSH` or `GLFW_RELEASE_BEHAVIOR_NONE`. If the
+behavior is `GLFW_ANY_RELEASE_BEHAVIOR`, the default behavior of the context
+creation API will be used. If the behavior is `GLFW_RELEASE_BEHAVIOR_FLUSH`,
+the pipeline will be flushed whenever the context is released from being the
+current one. If the behavior is `GLFW_RELEASE_BEHAVIOR_NONE`, the pipeline will
+not be flushed on release.
+
+@anchor GLFW_CONTEXT_NO_ERROR_attrib
+__GLFW_CONTEXT_NO_ERROR__ indicates whether errors are generated by the context.
+Possible values are `GLFW_TRUE` and `GLFW_FALSE`. If enabled, situations that
+would have generated errors instead cause undefined behavior.
+
+@anchor GLFW_CONTEXT_ROBUSTNESS_attrib
+__GLFW_CONTEXT_ROBUSTNESS__ indicates the robustness strategy used by the
+context. This is `GLFW_LOSE_CONTEXT_ON_RESET` or `GLFW_NO_RESET_NOTIFICATION`
+if the window's context supports robustness, or `GLFW_NO_ROBUSTNESS` otherwise.
+
+
+@subsubsection window_attribs_fb Framebuffer related attributes
+
+GLFW does not expose attributes of the default framebuffer (i.e. the framebuffer
+attached to the window) as these can be queried directly with either OpenGL,
+OpenGL ES or Vulkan.
+
+If you are using version 3.0 or later of OpenGL or OpenGL ES, the
+`glGetFramebufferAttachmentParameteriv` function can be used to retrieve the
+number of bits for the red, green, blue, alpha, depth and stencil buffer
+channels. Otherwise, the `glGetIntegerv` function can be used.
+
+The number of MSAA samples are always retrieved with `glGetIntegerv`. For
+contexts supporting framebuffer objects, the number of samples of the currently
+bound framebuffer is returned.
+
+Attribute | glGetIntegerv | glGetFramebufferAttachmentParameteriv
+------------ | ----------------- | -------------------------------------
+Red bits | `GL_RED_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE`
+Green bits | `GL_GREEN_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE`
+Blue bits | `GL_BLUE_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE`
+Alpha bits | `GL_ALPHA_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE`
+Depth bits | `GL_DEPTH_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE`
+Stencil bits | `GL_STENCIL_BITS` | `GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE`
+MSAA samples | `GL_SAMPLES` | _Not provided by this function_
+
+When calling `glGetFramebufferAttachmentParameteriv`, the red, green, blue and
+alpha sizes are queried from the `GL_BACK_LEFT`, while the depth and stencil
+sizes are queried from the `GL_DEPTH` and `GL_STENCIL` attachments,
+respectively.
+
+
+@section buffer_swap Buffer swapping
+
+GLFW windows are by default double buffered. That means that you have two
+rendering buffers; a front buffer and a back buffer. The front buffer is
+the one being displayed and the back buffer the one you render to.
+
+When the entire frame has been rendered, it is time to swap the back and the
+front buffers in order to display what has been rendered and begin rendering
+a new frame. This is done with @ref glfwSwapBuffers.
+
+@code
+glfwSwapBuffers(window);
+@endcode
+
+Sometimes it can be useful to select when the buffer swap will occur. With the
+function @ref glfwSwapInterval it is possible to select the minimum number of
+monitor refreshes the driver should wait from the time @ref glfwSwapBuffers was
+called before swapping the buffers:
+
+@code
+glfwSwapInterval(1);
+@endcode
+
+If the interval is zero, the swap will take place immediately when @ref
+glfwSwapBuffers is called without waiting for a refresh. Otherwise at least
+interval retraces will pass between each buffer swap. Using a swap interval of
+zero can be useful for benchmarking purposes, when it is not desirable to
+measure the time it takes to wait for the vertical retrace. However, a swap
+interval of one lets you avoid tearing.
+
+Note that this may not work on all machines, as some drivers have
+user-controlled settings that override any swap interval the application
+requests.
+
+A context that supports either the `WGL_EXT_swap_control_tear` or the
+`GLX_EXT_swap_control_tear` extension also accepts _negative_ swap intervals,
+which allows the driver to swap immediately even if a frame arrives a little bit
+late. This trades the risk of visible tears for greater framerate stability.
+You can check for these extensions with @ref glfwExtensionSupported.
+
+*/